解决关于Xcode16提交审核报错

2,384 阅读2分钟

问题描述

The following issues occurred while distributing your application. Asset validation failed Invalid Executable. The executable 'xxx.app/Frameworks/HappyDNS.framework/HappyDNS' contains bitcode.(lD:ef5dd249-731f-4731-8173-8e4a12519352) Asset validation failed Invalid Executable. The executable 'xxx.app/Frameworks/PLMediaStreamingKit.framework/PLMediaStreamingKit' contains bitcode. (lD:898428d1-4a1b-4176-8d89-a5a8f2bed2dc) Asset validation failed Invalid Executable. The executable 'xxx.app/Frameworks/PLPlayerKit.framework/PLPlayerKit' contains bitcode. (lD: 21c812b6-2f5d-48dd-bed9-38eeea2b2381)

图片.png

正常通过Produre - Archive打包,并在XcodeWindow -Organizer - Distribute App提交App Store审核报错误。

Bitcode 是一种中间表示形式,在 Xcode中打包提交到 App Store 审核时,如果出现包含 Bitcode 的报错,这通常意味着您的应用没有正确包含 BitcodeBitcode 是苹果的一项要求,它允许苹果在 App Store 中对您的应用进行进一步的优化。

当提交应用到 App Store 时出现与 Bitcode 相关的问题,您需要手动移除 framework 中的 Bitcode

解决方法

在 Xcode 中禁用 Bitcode:

  • 打开你的 Xcode 项目;
  • 选择你的项目在 Project Navigator 中;
  • 选择你的目标应用;
  • 选择“Build Settings”标签;
  • 搜索“Enable Bitcode”并将其设置为“No” ;
  • 清理并重建你的项目(使用快捷键 Shift + Command + K 进行清理,然后使用 Command + B 进行重建)。

由于 Xcode16 不再支持 Bitcode,所以我们无法在项目中找到这个设置。

使用命令行工具,手动更改Bitcode

假设您有一个名为 HappyDNS.frameworkframework,并且它位于 /path/to/~/HappyDNS.framework路径,那么您可以按照以下方式处理:

  1. 通过 cd命令进入到 HappyDNS.framework 的路径。
    如果是通过 pod install 获取的 SDK,则进入 pods 文件夹。

  2. 执行以下命令检查 framework是否包含 bitcode,返回 0 即为不包含。

otool -l HappyDNS | grep __LLVM | wc -l
  1. 如果检测结果不是 0,则继续执行以下命令移除 HappyDNS.frameworkBitcode
xcrun bitcode_strip -r HappyDNS -o HappyDNS

图片.png