首先,我要声明没有位码,一切正常。当我在应用程序中打开“ 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
我已将编译器标志添加到框架中以“嵌入位码”
而且我什至“验证”它具有其他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流(不是...
在目标的构建设置中将BITCODE_GENERATION_MODE =位代码添加为用户定义的设置。