iOS13 xcode11打包不支持模拟器架构i386 x86_64

Posted JustToGo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS13 xcode11打包不支持模拟器架构i386 x86_64相关的知识,希望对你有一定的参考价值。

查看framework支持架构

1.进入到framework目录下
cd /Users/.../xxxFramework.framework
2.输入命令
lipo -info xxxFramework
3.结果
Architectures in the fat file: xxxFramework are: armv7 arm64 不支持模拟器

.a文件也是一样
lipo -info lib.a
结果
Architectures in the fat file: libUPPayPlugin.a are: armv7 arm64 i386 x86_64 支持模拟器

删除架构
lipo -remove i386 xxx -o xxx
lipo -remove x86_64 xxx -o xxx

第二种方式: xcode里添加脚本,打包自动删除模拟器架构
推荐这种方式,可以支持模拟器,只是打包时删除模拟器架构

以下为脚本
`#!/bin/sh

Strip invalid architectures

strip_invalid_archs() {
binary="$1"
echo "current binary ${binary}"

Get architectures for current file

archs="$(lipo -info "$binary" | rev | cut -d \':\' -f1 | rev)"
stripped=""
for arch in $archs; do
if ! [[ "${ARCHS}" == "$arch" ]]; then
if [ -f "$binary" ]; then

Strip non-valid architectures in-place

lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
fi
fi
done
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
}

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"

strip_invalid_archs "$FRAMEWORK_EXECUTABLE_PATH"
done`

以上是关于iOS13 xcode11打包不支持模拟器架构i386 x86_64的主要内容,如果未能解决你的问题,请参考以下文章

应用程序卡在带有 Xcode 11 测试版的 iOS 13 测试版模拟器上,但在带有 Xcode 10 的 iOS 13 测试版模拟器上运行良好

iOS Firebase 推送通知在 Xcode 11.5 和 iOS 13 的模拟器上不起作用

Xcode 11 单元测试:未列出装有 iOS 12.* 的设备

iOS - 无法在真实设备 iPhone 11 中运行 Flutter 应用程序。iOS - 15.2,Xcode 13.2.1,它在模拟器中工作

iOS iPhone 11 Xcode 模拟器键盘(硬和软)返回不正确的字符串

解决Xcode 11 / iOS 13 的坑