用完整的位码在 xcode11 中构建一个胖框架
Build a fat framework in xcode11 with full bitcode
我想做什么:
我正在尝试在 xcode11 中构建一个 cocoapods 框架,然后在 iOS SDK 中使用它。
我试过的:
- 将
Enable Bitcode
设置为是
在构建框架之前,我已经将Other C flags
设置为-fembed-bitcode
和-fembed-bitcode-marker
,分别用于release和debug。
我还将用户定义的构建设置设置为 BITCODE_GENERATION_MODE
作为 bitcode
和 marker
.
为模拟器和设备构建;将构建方案设置为发布。
按照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:调试(设备和模拟器)和发布(模拟器)构建成功。
事实证明我构建框架的方式没有问题。将以下内容添加到我使用框架的 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 中构建一个 cocoapods 框架,然后在 iOS SDK 中使用它。
我试过的:
- 将
Enable Bitcode
设置为是 在构建框架之前,我已经将
Other C flags
设置为-fembed-bitcode
和-fembed-bitcode-marker
,分别用于release和debug。我还将用户定义的构建设置设置为
BITCODE_GENERATION_MODE
作为bitcode
和marker
.为模拟器和设备构建;将构建方案设置为发布。
按照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:调试(设备和模拟器)和发布(模拟器)构建成功。
事实证明我构建框架的方式没有问题。将以下内容添加到我使用框架的 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