Cordova 更新到Xcode 5后-ld:未找到架构armv7或armv7s链接器的符号错误 我刚刚更新了我的iPhone 4S软件到iOS 7 beta 2,而我是在最后一次触摸一个新的应用程序(PoPiGAP)的中间。这不是个好主意
完成后,Xcode没有检测到我的iPhone,所以我安装了Xcode 5测试版。在对它进行修补之后,我终于找到了它来检测我的手机。现在唯一的问题是所使用的架构存在错误 以下是产生的错误:Cordova 更新到Xcode 5后-ld:未找到架构armv7或armv7s链接器的符号错误 我刚刚更新了我的iPhone 4S软件到iOS 7 beta 2,而我是在最后一次触摸一个新的应用程序(PoPiGAP)的中间。这不是个好主意,cordova,static-libraries,cpu-architecture,ios7,xcode5,Cordova,Static Libraries,Cpu Architecture,Ios7,Xcode5,完成后,Xcode没有检测到我的iPhone,所以我安装了Xcode 5测试版。在对它进行修补之后,我终于找到了它来检测我的手机。现在唯一的问题是所使用的架构存在错误 以下是产生的错误: ld: warning: ignoring file /Users/-----------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCor
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)
为了让它在我的手机上正常工作,有没有关于架构应该改成什么的想法?(在模拟器上工作正常)简短回答:
- 从所有静态库的项目构建设置中删除仅构建活动体系结构(构建设置参数键为'Only_Active_ARCH'),或使用以下屏幕截图中的'NO'将其覆盖:
因此,我的建议是从所有静态库的项目构建设置中完全删除“仅构建活动体系结构”的项目级值。因为如果您查看iOS默认值,它是否。当然,您也可以将设置覆盖为“否”,以确保设置正确,即使将来默认值将更改(参见第1个屏幕截图)。如果您的项目是使用Cordova 2.x和Xcode 4.x构建的,并且您收到OP提到的错误,这个解决方案对我有效。(我在Cordova 2.5和Xcode 5中遇到了错误) 转到您的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=iphoneos7.*]" = (
armv7,
armv7s,
);
"ARCHS[sdk=iphoneos6.*]" = (
armv7,
armv7s,
);
/* other settings here */
};
现在你的项目将建立良好 njtman的回答是正确的。我没有代表评论,所以我添加了更多细节 您需要一个iOS 7 SDK来使用标准体系结构(armv7、armv7s) 我的项目默认为(armv7),不包括armv7 为了解决这个问题, 打开CordovaLib.xcodeproj, 在“生成设置”下(顶行中的一个菜单,居中对齐)
在“体系结构、体系结构、调试和发布”下,添加使用标准体系结构的iOS 7.0。因为我的lib.a仅适用于armv7 我所做的是 仅活动体系结构=是 这是建立和存档的罚款 希望它对构建设置有所帮助
Strip Debug Symbols During Copy:
Debug: No
Release: No
我已经从
有效体系结构
部分删除了armv7s
,它对我有效
生成设置-->体系结构-->有效体系结构
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 */
};
我使用的是Xcode 5,所以iOS SDK 7。对我有效的解决方案就是删除arm64架构 选择项目目标(不是CordovaLib.xcodeproj),并在“构建设置”>“有效体系结构”中,删除列表中的arm64。这是我在移除arm64架构后得到的
构建设置->体系结构中有哪些内容?我只有一个:$(ARCHS_标准\u 32_位),在有效的体系结构下,我有:armv7和armv7sDidn不适用于我。我在模拟机上。还有什么遗漏吗?@Tafkadasoh您是否知道如何在Xcode 5中禁用此警告(而不禁用任何其他与源代码相关的警告)?帮助我使用此信息的说明:请注意,您需要在CordovaLib.xcodeproj目标中进行建议的更改(我使用的是PhoneGap 2.9)不仅仅是你的PhoneGap应用目标。如果不在CordovaLib目标中更改它,即使是干净/构建也不会强制使用正确的体系结构来构建libCordova.a。我在找到基本相同的问题后找到了这个答案(感谢您验证我认为正确的解决方案!)。唉,这没什么区别,我还是会犯很多错误。(在尝试将arm64添加到混音中,然后将其更改回来之后,这一切对我来说都是南辕北辙。)@Rkartikeyan只需在项目设置中选择相应的行(参见第1个屏幕截图)并点击退格键即可。Cordova 2.7和XCode 5对我非常有效。Tafkadsoh的解决方案对我不起作用。这很好用!谢谢。在Cordova 2.6项目中对我来说非常有用。我很惊讶“iphoneos7.*”条目不能通过xcode用户界面生成……Cordova 3似乎不再是这样了。1@Ghigo正如我的回答所述,此解决方案仅适用于Cordova 2.x。这些设置在Cordova 3.x中应该已经或多或少存在了,因为它从一开始就支持iOS7
Strip Debug Symbols During Copy:
Debug: No
Release: No