1.错误
xcode12更新之后,如果私有库引入了第三方库,pod repo push
时会出现以下错误:
ld: building for iOS Simulator, but linking in dylib built for iOS, file ' XXX ' for architecture arm64
clang: error: linker command failed with exit code 1
2.原因
这是因为新xcode为了适配即将发布arm架构芯片mac,会在编译的时尝试生成模拟器版本的arm64架构的可执行文件。然而引入的第三方SDK还没来得及更新,老版本的第三方SDK并不包含模拟器版本的arm64架构可执行文件,所以在链接的时候就会失败,上面的错误提示也能看出端倪。简单来说就以下两个原因:
1.新xcode要生成模拟器版本的arm64架构可执行文件
2.引入的第三方sdk并没有更新,不存在模拟器版本的arm64架构可执行文件
3.解决方案:
解决方法分一下几种情况:
1.使用第三方SDK生成动态动态库:
这种情况出现在swift项目中,为了解决第三方静态库在组件化中出现传递依赖等问题,把第三方SDK的静态库编译成一个动态库,制作方案可以参考组件化-动态库实战,这里就不做详细介绍了。这种情况需要在项目的target -> BuildSettings->EXCLUDED_ARCHS
添加剔除模拟器arm64架构配置:
2.普通私有库pod repo push
时报错:
这种情况需要在podesc文件添加一下代码:
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
网友评论