当前位置: 首页 > 工具软件 > ipa-build > 使用案例 >

ios xcode 给ipa包签名

公良骁
2023-12-01

xcode 给ipa签名
xcode 项目设置Build Phases 新增个Run Script 把下面代码贴上去。
然后在项目文件夹下面新建一个APP目录,把目标ipa包拖进去。
运行就能装到手机了!
如果安装不了,Edit Scheme一下,改成debug模式;项目配置Configuration也改成Use debug。


ASSETS_PATH="${SRCROOT}/APP"

TEMP_PATH="${SRCROOT}/temp"

TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"


#删除temp文件夹下的内容 然后新建
rm -rf "${SRCROOT}/temp"
mkdir -p "${SRCROOT}/temp"


#-----------------------------
#1.解压ipa 到temp下
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"

#拿到解压的临时的app路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
#echo "路径是:$TEMP_APP_PATH"

#-----------------------------
#2. 将解压出来的app拷贝到工程下
#BUILT_PRODUCTS_DIR 工程生成包的路径
#TARGET_NAME
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
#echo "app路径是:$TARGET_IPA_PATH"

rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"


#-----------------------------
#3. 删除extension和watch
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/watch"

#-----------------------------
#4. 修改 info.plist

# 设置 "Set : KEY Value" "目标文件路径"

#/usr/libexec
# CFBundleIdentifier
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"

#-----------------------------
#5. 给可执行文件上执行权限
#拿到macho 文件路径
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上权限
chmod +x "$TARGET_APP_PATH/$APP_BINARY"


#-----------------------------
#6.重签名第三方app 第三方的frameworks

TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ] ;
then
#echo "六六六:$FRAMEWORK";
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "包的路径:$FRAMEWORK"
if test -f  $FRAMEWORK
    then
    #签名
    /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
        
    fi
done
fi


 类似资料: