更新到Xcode 5 – ID:符号(S)未find架构armv7或armv7s链接器错误
我刚刚更新我的iPhone 4S软件到iOS 7 Beta 2,而我正在把一个新的应用程序(Phonegap)的最后一个接触..不是一个好主意!
完成后,Xcode没有检测到我的iPhone,所以我安装了Xcode 5testing版。 经过修改后,我终于find了我的手机。 现在唯一的问题是使用的架构有错误。
这里是错误正在产生:
ld: warning: ignoring file /Users/-----------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/--------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a Undefined symbols for architecture armv7s: "_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from: _OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o "_CDVLocalNotification", referenced from: -[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o "_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from: _OBJC_CLASS_$_MainCommandDelegate in MainViewController.o "_OBJC_CLASS_$_CDVCommandQueue", referenced from: _OBJC_CLASS_$_MainCommandQueue in MainViewController.o "_OBJC_METACLASS_$_CDVViewController", referenced from: _OBJC_METACLASS_$_MainViewController in MainViewController.o "_OBJC_METACLASS_$_CDVCommandQueue", referenced from: _OBJC_METACLASS_$_MainCommandQueue in MainViewController.o "_CDVPluginHandleOpenURLNotification", referenced from: -[AppDelegate application:handleOpenURL:] in AppDelegate.o "_OBJC_CLASS_$_CDVViewController", referenced from: _OBJC_CLASS_$_MainViewController in MainViewController.o ld: symbol(s) not found for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)
任何关于什么架构应该改变,以使其在我的手机上工作的想法? (它在仿真器上工作正常)
简短的回答:
- 从所有静态库的项目构build设置中删除构build主动架构 (构build设置参数键为'ONLY_ACTIVE_ARCH'),或像下面的屏幕截图一样用'NO'覆盖它:
详细答案:
问题是你在你的主应用程序中链接的静态库“libCordova.a”只针对一个体系结构(armv7,而不是armv7s)进行编译。
你可能会让Xcode为你的静态库项目执行所有build议的更改,而不必读取这些更改的实际内容。 说起自己,我从来没有仔细看过这个信息对话框(下面的截图),当我切换到新版本的Xcode – 直到现在。
问题是执行这些更改激活debugging构build一个新function称为构build主动架构只有 (build设设置参数键是“ONLY_ACTIVE_ARCH”)。 原则上,这是Xcode的一个非常酷的增强,因为将其设置为YES会导致构build时间更快,因为Xcode只会在您点击运行button时编译当前选定的连接设备的体系结构。
但是,在静态库中盲目地接受这个新参数时,可能会遇到这个错误。 当你连接了一个armv7设备的时候,你已经构build了一个静态库的debugging版本,然后,当你debugging你的主应用程序时,你连接了一个armv7s设备(反之亦然)。 随后你会得到上面的错误(或类似的错误)。
所以我的build议是从所有静态库的项目构build设置中完全删除项目级别的Build Active Architecture Only值。 因为如果你看看iOS的默认值,那么是NO。 当然,您也可以将设置覆盖为“NO”,以确保设置是正确的,即使将来默认值会改变(参见第1张截图)。
如果您的项目是使用Cordova 2.x和Xcode 4.x构build的,并且您收到OP提到的错误,则此解决scheme适用于我。 (我遇到了Cordova 2.5和Xcode 5的错误)。
https://issues.apache.org/jira/browse/CB-3768
去你的cordova项目
根文件夹 – > CordovaLib – >右键单击CordovaLib.xcodeproj – >显示软件包内容 – >打开project.pbxproj
将所有出现的(我有4个)
buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO;//in 2 out of 4 occurrences "ARCHS[sdk=iphoneos*]" = armv7; "ARCHS[sdk=iphoneos6.*]" = ( armv7, armv7s, ); /* other settings here */ };
有了这个
buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO;//in 2 out of 4 occurrences "ARCHS[sdk=iphoneos*]" = armv7; "ARCHS[sdk=iphoneos7.*]" = ( armv7, armv7s, ); "ARCHS[sdk=iphoneos6.*]" = ( armv7, armv7s, ); /* other settings here */ };
现在你的项目将build立好!
我已经从valid architectures
部分删除了armv7s
,并为我工作。
构build设置 – >体系结构 – >有效的体系结构
我正在使用Xcode 5,所以iOS SDK 7。为我工作的解决scheme是简单地删除arm64体系结构。
select项目目标(不是CordovaLib.xcodeproj),并在构build设置>有效体系结构中删除arm64,如果它在列表中。 我删除arm64架构后,这是我的。
因为我的lib.a只用于armv7
我做了什么
只有活动架构=是
buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; "ARCHS[sdk=iphoneos*]" = ( armv7s, armv7, ); "ARCHS[sdk=iphoneos6.*]" = ( armv7s, armv7, ); "ARCHS[sdk=iphoneos7.*]" = ( armv7, armv7s, );
这是build立和存档罚款
希望能帮助到你
恩特曼有一个正确的答案。 我没有代表评论,所以我增加了更多的细节。
你需要一个iOS 7 SDK来使用标准体系结构(armv7,armv7s)。
我的项目默认为(armv7),不包括armv7s。
为了解决这个问题,打开CordovaLib.xcodeproj,在构build设置下(首行中的一个菜单,居中alignment)在体系结构,体系结构,debugging和发布下,使用标准体系结构添加iOS 7.0。
在生成设置…
Strip Debug Symbols During Copy: Debug: No Release: No
- -bash:cordova:command not found; 或-bash:phonegap:找不到命令
- 用Phonegap创build一个Android服务? (即使在closures的情况下也可以运行phonegap应用
- 错误:无法读取构buildiOS Cordova时未定义的属性“replace”
- 连接并缩小cordova / phonegap插件文件
- PhoneGap和Cordova命令有区别吗?
- Cordova + Angularjs +设备就绪
- Phonegap样式-webkit-user-select:无; 禁用文本字段
- PhoneGap / Cordova 3.0项目的.gitignore – 我应该提交什么?
- jQuery Mobile:文档准备与页面事件