在 xcode11 中构建一个带有完整位码的胖框架

Posted

技术标签:

【中文标题】在 xcode11 中构建一个带有完整位码的胖框架【英文标题】:Build a fat framework in xcode11 with full bitcode 【发布时间】:2020-01-22 09:30:26 【问题描述】:

我想做的事:

我正在尝试在 xcode11 中构建一个 cocoapods 框架,然后在 ios SDK 中使用它。

我尝试过的:

Enable Bitcode 设置为是

在构建框架之前,我已经将Other C flags分别设置为-fembed-bitcode-fembed-bitcode-marker,用于发布和调试。

我还将用户定义的构建设置设置为 BITCODE_GENERATION_MODEbitcodemarker

为模拟器和设备构建;将构建方案设置为发布。

关注this文章,使用lipo搭建fat框架。

我面临什么问题:

在将框架的预发布版本发布到 Cocoapods 后,我将其安装在我的 SDK 中。设备(发布)的 SDK 构建失败,并显示以下消息:

ld: bitcode bundle could not be generated because '/Users/sourobratasarkar/Library/Developer/Xcode/DerivedData/Beaconstac-dpnhqvwchyqaeyavlbmfsntqlgnn/Build/Products/Release-iphoneos/EddystoneScanner/EddystoneScanner.framework/EddystoneScanner' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '/Users/sourobratasarkar/Library/Developer/Xcode/DerivedData/Beaconstac-dpnhqvwchyqaeyavlbmfsntqlgnn/Build/Products/Release-iphoneos/EddystoneScanner/EddystoneScanner.framework/EddystoneScanner' for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

它说框架是在没有架构 arm7 的完整位码的情况下构建的。

在构建框架时我有什么遗漏吗?使用lipo -info我可以看到arm7架构存在。

PS:调试(设备和模拟器)和发布(模拟器)构建成功。

【问题讨论】:

我也有同样的问题...有一个解决方案会很棒... @davidOhara 我在这里找到了我的解决方案:***.com/questions/54082111/… 所以你还设法拥有了一个胖库,包括启用了位码的模拟器arch,也可以上传到商店? 我能够将 fat 框架添加到 SDK 并在应用程序中使用它。我能够存档该应用程序。在发布和调试的模拟器/设备中,它们都没有构建失败。 好的,但是无法将应用上传到商店,对吧?!我的意思是启用 Bitcode 并且里面还有模拟器拱门...... 【参考方案1】:

结果证明我构建框架的方式没有问题。在我使用框架的 SDK 的 Podfile 中添加以下内容为我解决了这个问题:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['BITCODE_GENERATION_MODE'] = 'bitcode'
            config.build_settings['ENABLE_BITCODE'] = 'YES'
        end
    end
end

【讨论】:

以上是关于在 xcode11 中构建一个带有完整位码的胖框架的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中运行时,IBM MobileFirst 7.1 混合应用程序构建失败

Xcode 9.3 无法将构建提交到 App Store

使用 xcodebuild 打包 ipa 的位码错误

存档构建问题

不要在 xcode 7 中使用 opencv 运行应用程序?

xcode中引入自制框架,编译压缩包的bitcode报错?