我刚刚更新到新发布的 Xcode 5。我正在开发一个使用 Google Maps iOS SDK 的 iOS 应用程序。当我在 Xcode 4 中进行开发时,我根据 Google将 SDK 添加到项目Architectures
的说明的第 7 步更改了项目设置中的设置:
7. 选择您的项目,而不是特定目标,然后打开 Build Settings 选项卡。将 Architectures 的默认值替换为 armv7。在其他链接器标志部分中,添加 -ObjC。如果这些设置不可见,请将 Build Settings 栏中的过滤器从 Basic 更改为 All。
在 Xcode 4 中一切都很好。但是,当我在 Xcode 5 中打开我的项目时,我在问题导航器中看到以下警告:
验证项目设置
更新到推荐设置
当我单击警告时,Xcode 会将我带到我的项目设置并显示一个带有“取消”和“执行更改”按钮的弹出窗口,以及它想要进行的更改的以下描述
Project 'Your Project' - 自动选择架构
项目“您的项目”会覆盖架构设置。这将删除设置并允许 Xcode 根据活动平台和部署目标可用的硬件自动选择架构。
我尝试点击“Perform Changes”并让 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 编译良好 - 但我当然收到了警告。
我怎样才能满足 Xcode 并摆脱警告,同时仍然允许我的应用程序为 iPhone 5 成功构建?