I have an iPhone App which should run on armv7 as well as armv6. For debugging the App should run in the simulator too.
The Standard in Xcode 4.2 is this:
armv7 ($(ARCHS_STANDARD_32_BIT))
It is not clear to me what $(ARCHS_STANDARD_32_BIT) stands for and if I should use the two:
$(ARCHS_STANDARD_32_BIT)
armv6
Or all three like this
armv6
armv7
i386
What is the best option for this in my case? And how does Architectures work with Valid Architectures
To run in the simulator you don't have to do anything.
You can leave the Valid Architectures setting at armv6 armv7, because, according to the docs:
During the build, this list is intersected with the value of ARCHS
build setting
To support armv6 and armv7, set the architectures to $(ARCHS_STANDARD_32_BIT) armv6, $(ARCHS_STANDARD_32_BIT) currently expands to armv7.
Also check if there is a "Required device capabilities" = UIRequiredDeviceCapabilities setting in your plist file, as Xcode will add armv7 for new projects there.
Update with Xcode 4.5: Apple added the new architecture armv7s, which adds optimisations for the new hardware of the iPhone 5.
Since I could not test our app on the new iPhone5, I removed this architecture from our app by changing the supported architecture from $(ARCHS_STANDARD_32_BIT) (which means armv7 + armv7s) to only armv7.
If you want or have to support the older iPhone 3G you also need to addd armv6.
You need to do this for both Architectures and Valid Architectures.
Related
I am trying to use cmake to generate xcode project but fail and get error as below, it is said that the cmake project CMAKE_TRY_COMPILE tries to use armv7 architecture but armv7 is deprecated since xcode14 doesn't support armv7, how can I disable CMAKE_TRY_COMPILE compile armv7 architecture?
error: The armv7 architecture is deprecated. You should update your ARCHS build setting to remove the armv7 architecture. (in target 'cmTC_c124d' from project 'CMAKE_TRY_COMPILE')
I am using googleDriveSDK in my app and it was compiling fine for xCode 5.1. The build settings were:
architecture : armv7 and armv7s
valid architecture : armv7 , armv7s,armv 64.
But in xCode 6.0.1, the build is giving linker error. It says GTL framework is not available for armv 7s/64. so i had to change the settings for xCode 6 as
architecture armv7
and valid architecture : armv7 , armv7s,armv 64.
it runs fine now. I have tested it on 5,5s,5c version well .But I wonder What happens if in build settings, I keep ARCHS armv7 and VALID ARCHS armv7 armv7s armv64? I am confused between what archs and valid archs is all about.
Am i missing on something?
I built a Phonegap 2.0.1 project, and under the build settings for the CordovaLib.ecodeproj it says
Architectures: Standard (armv7, armv7s) - $(ARCHS_STANDARD_32_BIT)
Valid Architectures: 1386 armv7 armv7
However Under the build settings for my projects .xcodeproj I have
Architectures: Standard (armv6, armv7)
Valid Architectures: armv7 armv7
So they seem to contradict each other :S.
The main problem is PhoneGap has dropped support for armv6 however under the current settings the app installs and loads up fine on armv6 devices such as the iphone 3g, but hangs pretty soon in :(.
I tried changing my projects build settings to:
Architectures: Standard (armv7, armv7s) - $(ARCHS_STANDARD_32_BIT)
However this caused xcode to start screaming about some error in the CordovaLib files :S
What should the correct settings be here, I dont want people to install my app on armv6 and have it crash on them :(, how do I ensure only armv7 devices are able to install it
Which version of Xcode are you using? PhoneGap has dropped support for older versions because Apple has - To publish something on the app store you need to support iOS6, which means using the latest version of Xcode and not supporting armv6.
Since $(ARCHS_STANDARD_32_BIT) is the default setting for native iOS projects, not just PhoneGap, I think you can count on the app store system to only deploy to supported devices.
I have an error while building fat binary:
ld: symbol(s) not found for architecture i386 (or arm7 for device)
collect2: ld returned 1 exit status
error MT5202: Native linking failed. Please review the build log.
even if I place only one defenition (AWView) in ApiDefinition. All dependencies were included.
Although, in xcode everything is ok.
Here is a link to github.
P.S. "xcrun -sdk iphoneos lipo -info /...../libAdWired.a" tells that
Architectures in the fat file: libAdWired.a are: i386 armv6 armv7
I had to free my mind, and I love/enjoy doing MonoTouch bindings so please give this a try
https://github.com/dalexsoto/AlexTouch.AdWired
Hope this helps
Alex
Try compiling for an actual device which will be targeting armv7 architecture.... Your objc library was not compiled with the i386 architecture in it, probably just armv7. You can see which architectures are compiled in it by going to terminal and using the command:
file libSomeLibrary.a
This will tell you all the architectures in the compiled library.
So, simply choose Debug -> iPhone instead of iPhone Simulator and you should not get that same error...
before updating the archiving process work good but after updating when i archiving the app it gives a linker error to TestFlight Library error is:-
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/dhirajchoudhary/Documents/MyWorldOfExpo/HRWeekIndia/TestFlightSDK1.0/libTestFlight.a for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Is any one know how to link the testflight library in Xcode 4.5, iOS 6.0
It's pretty much exactly what the error message says: your app supports multiple architectures, including armv7s. You're trying to link with the TestFlightSDK which doesn't include the armv7s architecture.
You need to either:
Use a newer version of the TestFlight SDK which includes the new armv7s architecture. I'm not sure if this exists yet
Remove the armv7s architecture from your application. It should still work on the iPhone 5 (which is the only device to use armv7s currently) but you would need to test
You need to install Test Flight SDK 1.1, which with support for arm7