美文网首页
组件化:xcode12私有库架构问题

组件化:xcode12私有库架构问题

作者: _kk_ | 来源:发表于2020-10-15 20:15 被阅读0次

    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' }

    参考资料

    相关文章

      网友评论

          本文标题:组件化:xcode12私有库架构问题

          本文链接:https://www.haomeiwen.com/subject/gzmopktx.html