苹果已经开始抱怨,如果应用程序分发中包含模拟器架构。
如何解决上述错误?
解决方案:
添加以下代码项目目标的运行脚本,这从应用中删除模拟器架构下(x86_64和i386)的建设进程:
壳牌:
/bin/sh
代码:
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
解决方案:
有多了一个解决方案,如果你希望做它只有一次。 但是,请注意,在执行以下步骤之后,您将无法在模拟器上运行应用程序。在Testflight/App-Store上部署应用程序之前执行此操作。
从终端进入项目的ProjectFramework.framework文件夹。运行以下命令:
lipo -remove i386 ProjectFramework_SDK -o ProjectFramework_SDK
lipo -remove x86_64 ProjectFramework_SDK -o ProjectFramework_SDK
检查从框架结构?
$ lipo -info PathToProject/ProjectName.framework/ProjectName
输出将是: →架构FAT文件:项目名是: 的i386 x86_64的ARMv7的arm64
参考。 DOC: http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
去建立设置 - >为“结构”进行搜索,你可以在那里检查“架构”选项卡,通常默认情况下它必须是armv7,arm64架构,请检查哪一个显示给你 –
此外,有时上述错误是由于不适当的构建,请清理,然后建立,然后archieve和上传(不要忘记清理,然后建立)。让我们再试一次..可能你会以这种方式获得成功 –
我想问题是,一些使用的框架包含x86_64和i386体系结构。所以必须手动删除它。 – user1046037