439 字
2 分钟
利用Xcode进行重签名与调试
一、使用方式:
Xcode - Build Phases - Run Script - 添加脚本即可
二、脚本
# ${SRCROOT} 它是工程文件所在的目录TEMP_PATH="${SRCROOT}/Temp"#资源文件夹,我们提前在工程目录下新建一个APP文件夹,里面放ipa包ASSETS_PATH="${SRCROOT}/APP"#目标ipa包路径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 工程生成的APP包的路径# TARGET_NAME target名称TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"echo "app路径:$TARGET_APP_PATH"
rm -rf "$TARGET_APP_PATH"mkdir -p "$TARGET_APP_PATH"cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"
#----------------------------------------# 3. 删除extension和WatchAPP.个人证书没法签名Extentionrm -rf "$TARGET_APP_PATH/PlugIns"rm -rf "$TARGET_APP_PATH/Watch"
#----------------------------------------# 4. 更新info.plist文件 CFBundleIdentifier# 设置:"Set : KEY Value" "目标文件路径"/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"
#----------------------------------------# 5. 给MachO文件上执行权限# 拿到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. 重签名第三方 FrameWorksTARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];thenfor FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*do
#签名/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"donefi三、如何安装重签名的包进行调试
3.1 安装
使用Xcode成功运行后会直接安装到手机上,也可以在Products中选择.app文件拷贝出来保存一下,通过下面的方式进行安装

3.2 调试
成功!愉快的学习吧~

四:生成重签名后的IPA
- 在项目的
Products下找到.app文件,拷贝出来。 - 创建
Payload文件夹,将上面获得的.app文件放入其中。 - 压缩
Payload文件夹,修改后缀为.ipa即可。