我刚刚更新到新发布的Xcode 5.我正在开发一款使用Google Maps iOS SDK的iOS应用。回到我在Xcode 4中开发时,我在项目设置中更改了Architectures
设置,根据Google instructions for adding the SDK to the project的第7步:
7。选择项目而不是特定目标,然后打开“构建设置”选项卡。 用armv7替换Architectures的默认值。 在Other Linker Flags部分中,添加-ObjC。如果看不到这些设置,请将Build Settings栏中的过滤器从Basic更改为All。
在Xcode 4中一切都很好。但是,当我在Xcode 5中打开我的项目时,我在问题导航器中看到以下警告:
验证项目设置
更新为推荐设置
当我点击警告时,Xcode将我带到我的项目设置并显示一个带有“取消”和“执行更改”按钮的弹出窗口,以及它想要进行的更改的以下描述
项目“您的项目” - 自动选择体系结构
项目“您的项目”会覆盖“架构”设置。这将删除设置并允许Xcode根据可用于活动平台和部署目标的硬件自动选择体系结构。
我尝试点击“执行更改”并让Xcode做他们想做的任何事情,该应用程序仍然适用于模拟器。但是,当我尝试插入iPhone 5(支持ARMv7S)并在其上运行时,应用程序无法使用以下链接器错误构建:
Ld /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos/Your\ App.app/Your\ App normal armv7s
cd "/Users/macmini/Documents/Your App"
setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
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"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -L/Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos -F/Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos -F/Users/macmini/Documents/Your\ App -filelist /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Intermediates/Your\ App.build/Debug-iphoneos/Your\ App.build/Objects-normal/armv7s/Your\ App.LinkFileList -dead_strip -ObjC -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.1 -framework SystemConfiguration -framework MapKit -framework QuartzCore -framework OpenGLES -lz -licucore -lc++ -framework ImageIO -framework GLKit -framework CoreText -framework CoreLocation -framework AVFoundation -framework CoreData -framework UIKit -framework Foundation -framework CoreGraphics -framework GoogleMaps -Xlinker -dependency_info -Xlinker /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Intermediates/Your\ App.build/Debug-iphoneos/Your\ App.build/Objects-normal/armv7s/Your\ App_dependency_info.dat -o /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos/Your\ App.app/Your\ App
ld: file is universal (2 slices) but does not contain a(n) armv7s slice: /Users/macmini/Documents/Your App/GoogleMaps.framework/GoogleMaps file '/Users/macmini/Documents/Your App/GoogleMaps.framework/GoogleMaps' for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
一旦我恢复了Xcode所做的自动更改,我的应用程序再次为iPhone 5编译好了 - 但当然我收到了警告。
如果仍然允许我的应用程序为iPhone 5成功构建,我怎样才能满足Xcode并摆脱警告?
答案 0 :(得分:10)
哎呀 - 因为它发生了这个问题,我在发布这个问题之后只花了几秒钟的时间来找到答案:
现在您的设置与之前一样,您可以为iPhone 5构建,但警告已经消失。
我现在因为花了我的时间发布这个问题而感到有些暗淡,但是我在这里留下了问题和答案,以防将来有人帮助。
答案 1 :(得分:3)
Google Maps SDK v1.5现在支持ARMv7S。来自v1.5 release notes:
适用于iOS的Google Maps SDK现在附带了一个armv7s切片。 (问题4745)
在您的应用中支持ARMv7S可以提高性能,因此,如果您看到问题中描述的警告,最好采取的措施是将您的Google Maps SDK版本更新为v1.5(或更高版本,如果您是将来阅读本文,然后双击警告并允许Xcode将您的架构设置更改回默认设置。
答案 2 :(得分:-1)
链接器正在给您一个错误,因为您使用的 GoogleMaps框架不支持armv7s架构。也许最新版本的GoogleMaps框架有这样的支持,或者您可能需要等待Google的更新。