Dopo l’aggiornamento a Xcode 4.5 e relativo iOS6 ho riscontrato il seguente problema quando andavo a provare la mia applicazione sul mio device (iPhone 3GS).
[sourcecode language=”bash”]
Ld /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio normal armv7
cd /Users/unicondor/Documents/iosingunisannio-code/DingUnisannio
setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk -L/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos -L/Users/unicondor/Documents/iosingunisannio-code/DingUnisannio -F/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos -filelist /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio.LinkFileList -dead_strip -ObjC -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=5.0 /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libTapkuLibrary.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libfmdb.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMGSplitViewController.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMWFeedParser.a -framework QuartzCore -framework Foundation -framework UIKit -framework CoreGraphics -framework MapKit -framework MessageUI -framework MediaPlayer -framework AVFoundation -framework SystemConfiguration -framework AddressBook -framework CoreLocation -framework AddressBookUI -lxml2 -lsqlite3.0 -framework CFNetwork -framework Security -framework AudioToolbox -o /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio
Error:
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libTapkuLibrary.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libfmdb.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMGSplitViewController.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMWFeedParser.a’
[/sourcecode]
Il problema e’ dovuto al fatto che le librerie esterne che ho usato nella mia App erano compilate solo per l’architettura armv7 e armv6. Con l’avvento dell’iPhone5 e del suo nuovo processore (armv7s) bisogna ricompilarle anche per la nuova architettura, per questo bisogna modificare il “Targets” associato ad ognuno di essere ed aggiungere l’architecture armv7s
Come viene mostrato nello screenshot in alto, bisogna solamente aggiungere questo nuovo tipo di processore armv7s in “Architettures” e “Valid Architettures” e ricompilare tutto il progetto da capo (cosi’ per tutte le librerie esterne usate dalla nostra app).
Un’ altra soluzione potrebbe essere quella di eliminare armv7s dalla “Valid Architecture” del nostro progetto, ma cosi’ facendo precludiamo la possibilita’ di poter utilizzare la nostra App sui nuovi iphone5 rilasciati da Cupertino.