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.
Related
I've got some crash logs from a user running iOS 8.1.1 on an armv7 device. Xcode will only symbolicate the lines from my app, and when I try to do it by hand I get lots of errors like this:
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: file: /Users/sgb/Library/Developer/Xcode/iOS DeviceSupport/8.1.1 (12B435)/Symbols/usr/lib/system/libsystem_kernel.dylib does not contain architecture: armv7
Can't understand the output from otool ( -> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool -arch armv7 -l '/Users/sgb/Library/Developer/Xcode/iOS DeviceSupport/8.1.1 (12B435)/Symbols/usr/lib/system/libsystem_kernel.dylib')
I'm told that Xcode will symbolicate the crash logs if I can find an arm7 device running iOS 8.1.1. I have an arm7 device running vanilla iOS 8.1, and two hours they released iOS 8.1.2, so I can't get 8.1.1 onto it.
So what do I do? I can't ask the user to upgrade and get me more logs. How do I symbolicate the crash logs?
The issue is that Xcode 6 does not seem to have shipped with armv7 libraries for iOS 8. Compare these two dwarfdumps:
dwarfdump --uuid /Users/xxx/Library/Developer/Xcode/iOS\ DeviceSupport/8.1.1\ \(12B435\)/Symbols/usr/lib/system/libsystem_c.dylib
UUID: 415DBD55-796D-3413-819F-59EE8ACEBDA2 (armv7s) /Users/xxx/Library/Developer/Xcode/iOS DeviceSupport/8.1.1 (12B435)/Symbols/usr/lib/system/libsystem_c.dylib
dwarfdump --uuid /Users/xxx/Library/Developer/Xcode/iOS\ DeviceSupport/7.1.2\ \(11D257\)/Symbols/usr/lib/system/libsystem_c.dylib
UUID: 17AEC0BF-EB49-3308-9292-4005DC41C50E (arm64) /Users/xxx/Library/Developer/Xcode/iOS DeviceSupport/7.1.2 (11D257)/Symbols/usr/lib/system/libsystem_c.dylib
UUID: 5DA46A1B-0620-36F6-9C19-32E4EC6695FB (armv7s) /Users/xxx/Library/Developer/Xcode/iOS DeviceSupport/7.1.2 (11D257)/Symbols/usr/lib/system/libsystem_c.dylib
UUID: 371F0E18-54F0-3B05-BA14-3619E4EAC99F (armv7) /Users/xxx/Library/Developer/Xcode/iOS DeviceSupport/7.1.2 (11D257)/Symbols/usr/lib/system/libsystem_c.dylib
I tried for 8.0 as well, and got similar output as I did with 8.1.1. This leads me to believe that Apple just said "screw it" for armv7 devices for iOS 8 onward.
I poked around and it doesn't look like you can download any such libraries anywhere :(
Please correct me if you find out otherwise.
i am using gdata-objectivec library for video sharing on Youtube from my app, i am using xcode 4.6 and iOS 6.0 to do this but the compiled static library "libGDataTouchStaticLib.a" does not support for the architecture armv7 and armv7s.
can anyone help me to compile the libGDataTouchStaticLib.a for armv7 architecture ?
i have also posted this on google group.
i have also seen this sample code and it successfully uploaded the video from iPhone simulator but giving error on device.
i have also tried to install it on device using xcode 4.3 but not got any success.
i have also changed some flags in target>build like header search path, other C linker flag etc and also followed this tutorial
i have also downloaded gdata-objectivec library from svn server using terminal window but i dont know how to compile libGDataTouchStaticLib.a using the command from terminal of mac os for armv7 architecture (xcode 4.5 or 4.6).
if anyone used gdata-objectivec library for video uploading on Youtube from latest xcode or successfully compiled libGDataTouchStaticLib.a for latest xcode then please help me?
Make sure to add below three items in your other linker flags in project's build settings:
-ObjC,-lxml2,-all_load. It worked for me.
Just remove the arv7s from the valid architectures under build settings and compile it would work for you.
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
I am working on app and suddenly prefix.pch file deleted automatically and
this error comes:Command /Volumes/Xcode/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1
i havn't found any working answer in google search.
Please help me out
It looks like the problem had to do with the Architecture settings on my sub projects. Xcode 4.2 changes the default Architecture to just armv7 instead of both armv6 and armv7. I had updated my main project to armv6 and armv7, but the sub-projects were still only using armv7. Once I updated all of the sub-projects then it started linking properly.
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.