不包括设备位码上的 iOS 框架



我正在为 iOS 开发静态库,其中我正在使用 Alamofire。当我尝试为模拟器构建发布时,一切都很好,但是当我尝试为设备(发布或调试(构建它时,我遇到了以下问题:

ld: bitcode bundle could not be generated because '/PathToMyLibraryProducts/Release-iphoneos/Alamofire/Alamofire.framework/Alamofire' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build for architecture armv7

我的框架启用了位码,它是胖框架(为设备和模拟器构建(。我该如何解决这个问题?

如果你使用 cocoapods-binary with cocoapods

由于 cocoapods-binary 不会生成启用了位码的框架,因此会出现此错误,除非您通过在Podfile中使用此键明确指出:

enable_bitcode_for_prebuilt_frameworks

这是您的 Podfile 的外观:

plugin 'cocoapods-binary'
platform :ios, '12.0'
use_frameworks!
enable_bitcode_for_prebuilt_frameworks!
all_binary!
target 'ProjectName' do
    pod 'Alamofire'
end

发现这个讨论可能相关

总之,需要以下设置:BITCODE_GENERATION_MODE=发布版本的位码和调试版本的BITCODE_GENERATION_MODE=标记

希望有帮助。

亲切问候Mukund

我认为,当您为Generic Device构建时,bitcode未启用。因此,请执行以下操作:

  1. pods.xcodeproj 下,选择所有容器目标。
  2. Build Settings下导航,并确保所有设置了"Pods">"构建设置">"仅构建活动架构"到"否"。
  3. 启用设置为YES Bitcode
  4. 然后,
  5. 点击项目目标,然后按照步骤2和3进行操作
  6. 清理构建并制作Archive

将此代码添加到您的 pod 文件中,它将为所有框架启用 Bitcode。

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

最新更新