Vip*_*pin 22 xcode itunesconnect ios bitcode
包含我们框架的应用程序会在导出Ad-hoc分发存档时抱怨缺少bitcode.
我已经阅读了Apple在这方面提供的文档 技术说明TN2432.文件列出的可能的根本原因与我们的情景不同.(我们没有使用汇编指令或格式错误的info.plist文件)
我已经在SO上发布了类似的问题
但提供的解决方案似乎不起作用.
我尝试BITCODE_GENERATION_MODE
在用户定义的构建设置中添加标记.我还尝试在框架目标中添加-fembed-bitcode
-marker&-fembed-bitcode
in Other C标志.
我使用建议的命令检查生成的框架中是否存在bitcode段
otool -l -arch arm64 <framework_name> | grep __LLVM
Run Code Online (Sandbox Code Playgroud)
它显示了2个细分
segname __LLVM
segname __LLVM
但在导出档案时,Xcode仍然抱怨缺少bitcode.
我试图在App Store上传应用程序来验证这个问题是否是由Xcode版本引起的(我试过8.3.3.和9.0),但是我收到了关于iTunes Store中的build import错误的电子邮件.
在处理您的iOS应用程序APP_NAME 1.0(4)时,应用程序细化过程中出现错误,您的应用程序无法细化.如果您的应用包含bitcode,则bitcode处理可能失败.由于这些错误,您的应用版本将无法提交审核或放置在App Store中.有关可能有助于解决此问题的信息,请参阅技术说明2432.
PS:禁用bitcode对我们来说不是一个选项,因为主机应用程序需要支持bitcode.
Vip*_*pin 66
错误描述让我走错了方向找到解决方案.
此错误与bitcode无关.
当框架包含模拟器切片时出现(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
Run Code Online (Sandbox Code Playgroud)
致谢:http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
如果您不知道如何将运行脚本阶段添加到Xcode项目中,因为您可能正在使用Cordova或Ionic构建项目,而您从未接受过有关Xcode的更多教授,请按以下步骤操作: