如何发布使用 xcodebuild build 命令生成的 ipa

How to publish ipa which is produced with xcodebuild build command

我正在创建一个 iOS 应用程序,我使用 xcodebuild build ... 构建我的项目并使用 xcrun -sdk iphoneos PackageApplication ... 创建 ipa。当我尝试将 ipa 发布到 App Store 时出现以下错误:

ERROR ITMS-90668: "Invalid Bundle Executable. The executable file 'Project.app/Project' contains incomplete bitcode.

我发现这个问题有解决方案 - 将 Enable Bitcode 设置为 No。但这不是我要找的,因为如果我为工作区创建新项目,我也需要为新项目将此选项设置为否,因为默认值为 Yes.

这个问题还有其他解决方案吗?

经过一些研究我发现当我使用 xcodebuild build ... Enable Bitcode 被设置为 Yes -fembed-bitcode-marker 被添加到 OTHER_CFLAGS 中用于 clang。这个标志只是添加了一个 "bitcode placeholder" 而不是完整的位码。这是由 Apple 完成的,因为位码的生成可能会减慢构建速度。要生成完整的位码,必须将 -fembed-bitcode-marker 替换为 -fembed-bitcode

在使用完整的位码创建 ipa 后,我能够将我的应用程序发布到 App Store。

我的问题的另一个解决方案是使用 xcodebuild archive ... 而不是 xcodebuild build ... 来构建我的项目,并使用 xcodebuild -exportArchive -archivePath <path to the .xcarchive> ... 而不是 xcrun -sdk iphoneos PackageApplication ... 来创建我的 ipa。使用存档方法时,-fembed-bitcode-marker 会自动替换为 -fembed-bitcode 并且我的 ipa 包含具有完整位码的二进制文件。