我正在使用CocoaAsyncSocket
库来编写我正在编写的应用程序。当我在自己的设备上编译并运行它时没有问题,Xcode能够找到CocoaAsyncSocket
。
但是,当我尝试归档时,它将无法编译,我收到错误消息,无法找到模块CocoaAsyncSocket
。
我注意到它与不同的架构有关。当我为自己的设备构建时,它是“arm64”的唯一建筑,当我为arm64
,armv7
和armv7s
存档时。如果我将归档的构建设置更改为仅为arm64
构建,我可以归档。但是我当然希望能够为所有架构构建它。下图显示了arm64
唯一建筑物的设置(在我的情况下);
Build Active Architecture Only: Yes
有没有其他人遇到过这个库或其他Cocoapod库的类似问题?
许多开发人员已经接受了即将到来的64位未来,但并非所有第三方库都支持这种架构,包括可通过CocoaPods
安装的那些。
尽管第三方pod中缺乏通用的64位支持,但CocoaPods仍然在其生成的目标的构建设置中包含arm64架构(通过ARCHS_STANDARD_INCLUDING_64_BIT
)。如果您的应用程序的依赖项不支持arm64,或者您只想为其他原因构建armv7和armv7,则可能会出现问题。
您可以修复此问题,只需将以下内容添加到Podfile
的底部,即可将ARCHS
构建设置恢复为ARCHS_STANDARD
:
# Remove 64-bit build architecture from Pods targets
post_install do |installer|
installer.project.targets.each do |target|
target.build_configurations.each do |configuration|
target.build_settings(configuration.name)['ARCHS'] = '$(ARCHS_STANDARD_32_BIT)'
end
end
end
注意 :
CocoaPods Troubleshooting Guide建议匹配Xcode项目中的Debug设置,而不是更改Pod的Build Active Architecture。只要它们匹配,它似乎解决了问题。
要么
您可以尝试使用以下命令更新终端中的cocoapods
:
gem update cocoapods
如果之后不起作用,请进入工作区,单击Pod项目,选择所有Pod目标并将架构设置为(armv7 armv7s arm64
)。