I've been working with the precompiled OpenCV libraries available at eosgarden since last summer. When trying to submit our app to the app store, we noticed that if the deployment target is set to iOS 5 you are required to support the armv7 architecture. We can only support devices running iOS 5, but our app is built for armv6 because the version of OpenCV we originally downloaded was also built for armv6 (and still is).
My question is, does anyone know of an update to this library from eosgarden that is built for armv7? Is there a way to recompile these libraries?
This is my build errors:
ld: warning: ignoring file /Users/jinser/Desktop/TAapp/TAMenuApp/OpenCV/lib/iPhoneOS/lib/libcv.a, file was built for archive which is not the architecture being linked (armv7)I get the same thing for libcxcore.a, libcvaux.a, libml.a, libhighgui.a.
Thanks for the help.
I replaced my eosgarden implementation with this nice easy framework.
http://aptogo.co.uk/2011/09/opencv-framework-for-ios/
Thank you Robin Summerhill and Aptogo.
Related
I'm trying to build an ad-hoc build with test flight.
I have the OS Device selected and am trying to create an archive.
However I get the following warning.
(null): iPhone/iPod Touch: application executable contains unsupported
architecture(s): armv7s (-19031)
I have the following settings for my test flight target.
I can build fine for release.
It looks like you're using an old version of the TestFlight library.
The iPhone 5 uses a new processor (A6), with a modified instruction set (AMRv7s).
Since you are building your app with that architecture too, all linked libraries also needs to support it.
TestFlight provides a new version (1.1) of its library, with support for that specific architecture.
So simply download the new version of the library, link against that, and you'll be fine.
Your "Release" target is compiling and linking fine, because no symbol from the TestFlight library is actually used. But if you need TestFlight support for the iPhone 5, just update to the latest version of the library.
This warning is perfectly normal when you use an armv7 device to archive your application.
Think about it, you make an archive that includes the armv7s architecture (which is what we want) and the warning tells you that your armv7 device does not support that architecture (which totally makes sense).
To prove that even further, just hook up an iPhone 5 and try archiving and you will see that the warning will go away.
As far as I can tell Xcode 4.5 will not currently allow you to create Archive builds that include armv7s.
My project uses two 3rd party libraries (Dropbox and Flurry) and I reverified I had the latest iOS 6 builds included. I verified that all my other frameworks (and libsqlite3.0.dylib) were all located in the iOS 6.0 area. None of this helped.
I then created a brand new empty project from scratch and attempted an Archive build and received the exact same error. So after wasting 6 hours trying to fix this, I am tentatively concluding it is not possible to get rid of the warning.
Based on comments else where, apparently, it is not necessary to build for armv7s to run on an iPhone 5.
Any information to the contrary of anything I have posted here would be appreciated.
All you need to do is remove armv7s from the valid architectures.
Same question has been asked several ties I think.
I was displayed the same warning message when I archived in preparation for Ad-Hoc testing.
(null): iPhone/iPod Touch: application executable contains unsupported
architecture(s): armv7s (-19031)
I have removed armv7s as recommended above and the warning went away. What repercussion are there in doing this? What is armv7s supporting?
With semingly no changes to any settings or code from yesterday, what may have caused this warning to pop up?
When I try to archive my project for the iPhone 5 (armv7s), it comes with an error which states that RestKit is not compatible with the armv7s architecture.
In this project I'm using an old version from RestKit, version 0.9. This version is by default not capable to work with armv7s. Is there a way to setup the RestKit project (version 0.9) to support armv7s.
I've tried to add armv7s to the valid architectures for the RestKit project and changed the architectures to support armv6 and armv7. Unfortunately that didn't work out.
Of course I can setup the project with the latest version of RestKit. Only this will take a lot of time, since the core has been updated a lot of times.
Another question, would the app (build for armv6 and armv7) which is currently in the store, work on the iPhone 5 (armv7s)?
If you're unwilling to update to the latest (compatable) version, you would be better off, leaving the valid architectures as 6&7, the processor on the iPhone 5 is backwards compatable with the older architectures. The only drawback is you won't get any specific optimisations for the iPhone 5' armv7s processor.
I'd recommend checking how the RestKit guys did it in this commit: https://github.com/RestKit/RestKit/commit/29ba601cfc38560be923f57fba545881d0789ea5
and then trying to work out a way from there to get it done for your specific circumstances.
Might not be a complete solution but it's definitely a good hint.
Start from XCode 4.5, we cannot build a single IPA which combine the support of armv6, armv7 and armv7s, so how to provide update for my app to use iPhone5's feature?
Because from the doc:
"You are permitted to expand your device requirements only. Submitting an update to your binary to restrict your device requirements is not permitted."
So we cannot drop support for the armv6 app, but it is impossible to launch a new app as user already paid for the old app, so how to update?
I think is designed to stop people from downloading an app, only to find that the new version doesn't work -- a reasonable limitation.
But, when you build with Xcode 4.5 you'll find that the minimum version you can deploy on is iOS 4.3. As far as I know, no armv6 device can run 4.3. And you can't download apps that require higher versions of the OS than you're running.
In short: you can drop armv6 support. Users still running those old versions won't get further update/fixes but it won't suddenly stop working either.
Build armv6 version in older XCode and use lipo to merge them. With some fiddling you can probably add armv6 toolchain to the newer XCode as well. Some ideas from this thread (adding PPC to Xcode4) might be useful.
I recently upgraded my project from Xcode 4.0.1 to Xcode 4.2 - and everything went pretty smoothly, I did some debugging in the simulator and then I decided to build with device.
My device is a 2nd gen iPod Touch running 4.2.1, so I initially attempted to build to it and got this error:
An unknown error message 'IncorrectArchitecture', was received from the device.
As you do with most error messages, I googled it, and found this question.
After reading the answer, I proceeded to check up on my target architectures, and it turns out I only had armv7 as an architecture to build for. - I added the armv6 architecture, as the answer suggests, but when I built it, I got a load of build warnings/errors such as:
ignoring file /some/path/to/a/staticlibrary.a, file was built for archive which is not the architecture being linked (armv6)
This occurs on all the static libraries in my project, such as the kal library - libkal.a and all the three20 libraries.
Those libraries linked fine in Xcode 4.0.2 - and it also built fine to my iPod - so why will the armv7 architecture not build AND the libraries not link for armv6 in Xcode 4.2? - I'm really confused - any suggestions would be greatly appreciated.
Add ARMV6 to your build settings like this:
Select your build settings
Scroll to Architectures
Doubletap on the existing entry
Tap on +
Enter armv6
Tap on Done
You will need to do this for all projects that are linked with your app (e.g. three20).
I am new to iOS 5.
Currently working with xcode 4.2,Base sdk iOS 5.0,Apple LLVM compiler 3.0,architechture armv7.
Whenever I try to link a static library the following warning comes up.
ld: warning: ignoring file /Users/shilpasurendran/Desktop/InputVal_aslib/InputVal_aslib/iCodeBlogsMathLibrary/libICodeMathUtils.a, file was built for archive which is not the architecture being linked (i386)
I even tried changing deployment targets and compiler,but of no use.
Please help.
Thanks in advance!!
You are trying to build for armv7 architecture which means you want to build for a real device not the simulator.
The library you are linking to is in i386 architecture meaning it is compiled for the simulator.
When using a third-party library there often is a structure like this:
Library
build
Release-iphoneos
Release-iphonesimulator
Release-universal
If there is a universal build you should use that one. Try using the one under Release-iphoneos otherwise.
Hope that helps