看场电影

无越狱IPhone安装多个同样应用的方法(三)自动化重签名

2018-05-24  本文已影响163人  struggle3g

回顾

已经做了手动、xcode重新签名,基本上的操作大致都差不多,都是将能够重新签名的进行重新签名、不能签名的干掉

自动化签名原理

其实说白了,就是将自己手动做的操作直接写成一个shell脚本进行重签名,按照一定规则对App进行重签名,解决了重复操作步骤的一些麻烦

准备、操作步骤

TEMP_PATH="${SRCROOT}/Temp"
ASSETS_PATH="${SRCROOT}/ResignedApp"
MY_IPA_PATH="${ASSETS_PATH}/*.ipa"

#-----------------------————————————————————————
#1.保证 Temp文件夹中是空的
rm -rf "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"

#-----------------------————————————————————————
#2.解压ipa包到Temp文件夹
unzip -oqq "$MY_IPA_PATH" -d "$TEMP_PATH"

#-----------------------————————————————————————
#3.拿到Temp目录下App的路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
echo "lujing:$TEMP_APP_PATH"

#-----------------------————————————————————————
#4.将解压出来的.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"

#-----------------------————————————————————————
#5.删除extension文件和WatchApp、PlugIns 个人证书没法签名extension
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

#-----------------------————————————————————————
#6.更新plist CFBundleIdentifier的值
#/usr/libexec

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

#-----------------------————————————————————————
#7.给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"

#-----------------------————————————————————————
#8.给MachO执行权限
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
then
#遍历出所有动态库的路径
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "😊😊😊😊😊😊😊😊 Find FRAMEWORK : $FRAMEWORK"
#签名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi

上一篇下一篇

猜你喜欢

热点阅读