无法验证位码而临时发布出口存档 - 尝试的Xcode 8.3.3及Xcode中包含我们的框架中抱怨缺少位码而特设分配出口存档9
应用。无法验证位码而临时发布出口存档 - 尝试的Xcode 8.3.3及Xcode中包含我们的框架中抱怨缺少位码而特设分配出口存档9
我已经浏览了苹果在这方面提供的文档 Technical Note TN2432。文件列出的可能的根本原因并不像我们的情况。 (我们不使用汇编指令或有畸形Info.plist文件)
我已经通过下面张贴在SO
Error while exporting with Bitcode enabled (symbol not found for architecture armv7)
Is it possible to create a universal iOS framework using bitcode?
但类似的问题了提供的解决方案似乎不起作用。
我试图在用户定义的构建设置添加BITCODE_GENERATION_MODE
标志。我也试过在框架目标将-fembed-bitcode
-marker & -fembed-bitcode
在其他C标志。
我检查位码段使用suggested命令
otool -l -arch arm64 <framework_name> | grep __LLVM
它显示了2个段
segname的__LLVM
segname的__LLVM
存在于我的产生框架但是,当出口在存档中,Xcode仍然抱怨缺少位代码。
我试着上传的App Store应用来验证,如果这个问题是由于版本的Xcode(我试过8.3.3和9.0),但我得到以下有关来自iTunes Store构建导入错误的电子邮件。
在处理您的iOS应用程序APP_NAME 1.0(4)时,应用程序细化过程中发生错误,您的应用程序无法细化。如果您的应用包含位码,则位码处理可能失败。由于这些错误,您的应用程序的这种构建将无法提交审查或放置在App Store上。有关可能有助于解决此问题的信息,请参阅技术说明2432.
PS:由于主机应用程序需要支持位代码,因此禁用位代码不适用于我们。
错误描述了我在错误的方向,以找到解决方案。
此错误与位码无关。 当框架包含模拟器切片时出现(i386 x86_64
)
在归档之前删除它们可以解决问题。
使用以下代码添加运行脚本阶段以构建目标阶段有助于消除错误。
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
学分:http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
我必须设置在构建设置
如何删除(i386 x86_64)以及从哪里删除?并且当我单击'+'btn添加Runscript时,然后编写提供的脚本,它在归档时给出相同的问题。我没有删除i386 x86_64,但我不知道如何 –
请查看此@Vipin。尽管我的enableBitcode = NO总是,我不想将它设置为YES –