网上很多是用脚本解决,但是我用了,还是没反应,一样报错。
脚本:
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 |whileread -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read"$FRAMEWORK/Info.plist"CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTAB LE_NAME"
echo"Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
forARCH 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
使用这个脚本,有可能导致更多的错,那是因为其他SDK库不需要,所以可以针对某一个SDK进行修改
$APP_PATH" -name '[SDK的名字].framework' -type d | while read -rFRAMEWORK
最后我决定用,lipo命令把SDK分解出来,再重新打包,方法如下:
1、打开终端, 并cd 到文件夹下,进到SDK文件里面, 使用 lipo -info ApiGatewayMac (ApiGatewayMac替换为自己的文件名称)查看该文件下的架构信息。
然后会发现包含哪几个框架,我这里是4个
2、之后用命令,把我们要用到的框架提取出来:
使用命令 lipo ASIAIDCardReader -thin armv7 -output ApiGatewayMac.armv7 (ApiGatewayMac.armv7 中ApiGatewayMac 可替换为自己的文件名称,且该名称可以自定义), 使用类似的方法(只需要将 armv7和.armv7修改为相应的架构信息后缀即可),分离出其它的文件。
提取出来的文件,会在当前文件夹里面
3、把64、v7两个文件拿出来,放到一个新的文件夹里面,使用命令合并成新的SDK文件:lipo -create -output ApiGatewayMac ApiGatewayMac.arm64 ApiGatewayMac.armv7,合并成的新SDK文件,直接替换到项目里面去就可以了
网友评论