[使用xcodebuild打包ipa的位码错误

问题描述 投票:9回答:1

首先,我要声明没有位码,一切正常。当我在应用程序中打开“ bitcode”标志时,问题就开始了。

此外,所有构建都通过CI流(不是在xcode-> archive等内部手动进行。)>

该框架是从与应用程序本身不同的流程构建的(该应用程序嵌入了已编译的框架)

尝试打包ipa时出现此错误:

❌ld:无法生成位码束,因为'.... / Framework.framework / Framework'的构建没有完整的位代码。所有用于位码的框架和dylib必须从Xcode生成存档或安装架构armv7的内部版本]

❌clang:错误:链接器命令失败,退出代码为1(使用-v查看调用]

关于框架:

我正在使用以下命令构建框架:(忽略技术细节)

# iphone (arm)
xcodebuild -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

# iphone (simulator)
xcodebuild -configuration Release -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

然后是lipo(FAT二进制)

lipo -create /Release-iphonesimulator/Framework.framework/Framework -output /Universal/Framework.framework/Framework

我已将编译器标志添加到框架中以“嵌入位码”

enter image description here

而且我什至“验证”它具有其他S.O的位代码。问题:(Compiling iOS library with bitcode enabled

此外,检查二进制文件是否包含位代码的最简单方法是使用otool和grep:

otool -l binary_name | grep __LLVM

您将看到一个或多个segname __LLVM条目,如果它确实具有位码,如果没有则为空。

otool -arch arm64 -l Frameworks/Framework.framework/Framework  | grep __LL
segname __LLVM
segname __LLVM

我还尝试了添加编译标志的其他变体

xcodebuild OTHER_CFLAGS="-fembed-bitcode"

并且向我报告了相同的错误

首先,我想声明没有位码的情况下,一切运行正常。当我在应用程序中打开“ bitcode”标志时,问题就开始了。另外,所有构建都通过CI流(不是...

ios xcode xcode8 xcodebuild bitcode
1个回答
0
投票

在目标的构建设置中将BITCODE_GENERATION_MODE =位代码添加为用户定义的设置。

© www.soinside.com 2019 - 2024. All rights reserved.