如何解决体系结构arm64的未定义符号:Xcode 12
我在添加第3方框架后尝试构建项目,但是在添加框架后我无法编译该项目,我得到体系结构arm64的未定义符号:尝试在以下位置编译时出错设备,但我可以在模拟器上进行编译。我已经尝试了在stackoverflow上发现的所有其他解决方案。任何帮助表示赞赏!
这是我尝试过的:
- 在排除的体系结构中添加了值为 arm64 的所有iOS Simulator SDK。
- 我确实在其他链接器标记 中有$(继承)
- 将启用的位码设置为否
我尝试过的所有解决方案都不适合我。
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_*",referenced from:
objc-class-ref in frameworkName.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决方法
尝试将其添加到您的pod文件中
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
end
end
end
,
我找到了问题。
我的项目支持的最低部署目标低于框架,这导致了问题。我必须包括从特定iOS版本开始的框架。
这里是场景和问题:我的项目支持iOS 9,框架从9.1开始支持。因此,我没有获得最新的框架,而是Cocoapods下载了不支持arm64的较旧版本的框架。
因此,目前我仅包括仅适用于iOS 9.1及更高版本的框架:
platform :ios,'9.1'
pod 'PodName','~> 3.2'
然后正确编译项目,感谢那些试图提供帮助的人。因为这个原因,我花了半天的时间,我把这个放在这里给任何可能遇到相同问题的人。
,忘记复杂的答案,因为您更改了XCODE内部结构,这些答案可能会影响其他已开发的应用程序。
根据我的经验,发生这种情况是因为您更新了复制项目的版本,这是最简单的方法。
当在“ BUILD SETTINGS”选项卡中将“启用模块(C和Objetive -C)”参数设置为YES时,问题就解决了。
我还建议比较项目之间的BUILD SETTINGS参数(虽然很多,但比重建项目要快。。。我不明白为什么Apple使它变得如此复杂)。
,- “产品”->“方案”->“编辑方案”
- 选择“构建”
- 取消选中“并行构建”
可能的原因有很多,最后一个 armv7 版本停留在 iOS 10。 所以对我来说:
我尝试使用没有“armv7”的“有效架构”,它在 Xcode 12 中不再存在。
接下来我尝试了 ONLY_ACTIVE_ARCH,我知道这会导致我最终无法存档我的应用
最后,我搜索了我本地的 podspec,找到了
s.ios.deployment_target = "10.0"
由于我的主应用程序的最小部署目标设置为 iOS 11。所以我设置了
s.ios.deployment_target = "11.0"
Xcode 不再抱怨这个 armv7。
希望这对某人有所帮助,检查您的框架或任何依赖项,确保它们设置正确。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。