一、前言
上篇手動非腳本應用重簽名 介紹了一步一步對第三方應用進行重簽名掠抬,我們會覺得每次都這樣手動操作的話太浪費時間骄崩,能不能讓Xcode自動幫我們完成這些騷操作呢?當然可以醒颖,Xcode提供了在工程編譯期間Run Script的功能妻怎,讓我們可以在編譯期間執(zhí)行我們的腳本。
二泞歉、Shell腳本
Shell腳本(英語:Shell script)逼侦,又稱Shell命令稿、程序化腳本腰耙,是一種計算機程序使用的文本文件榛丢,內(nèi)容由一連串的shell命令組成,經(jīng)由Unix Shell直譯其內(nèi)容后運作挺庞。被當成是一種腳本語言來設計晰赞,其運作方式與解釋型語言相當,由Unix shell扮演命令行解釋器的角色选侨,在讀取shell腳本之后掖鱼,依序運行其中的shell命令,之后輸出結果援制。利用shell腳本可以進行系統(tǒng)管理戏挡,文件操作等。
三晨仑、配置重簽名的Shell腳本
-
新建工程褐墅,在Build Phases下添加Run Script
Xcode配置執(zhí)行的腳本
在當前工程下的目錄創(chuàng)建AppResign.sh
腳本文件(命名隨意),在Run Script窗口下填寫${SRCROOT}/AppResign.sh
,意思就是讓Xcode在編譯期間運行我們自定義的腳本。 編寫Shell腳本
腳本第一條語句的TargetApp是當前工程下需要我們新建的文件夾洪己,放置我們已經(jīng)脫殼了的ipa包妥凳,這是一個比較簡陋的腳本,還有待學習增強答捕,日后學習Shell腳本語言再回頭研究逝钥。
#當前項目目錄下的TargetApp文件夾,里面放ipa包
ASSETS_PATH="${SRCROOT}/TargetApp"
#臨時目錄
TEMP_PATH="${SRCROOT}/Temp"
#目標ipa包路徑
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"
#每次運行前都清空Temp文件夾
rm -rf "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"
#-----------------------------------------#
#解壓縮ipa
unzip -oqq "${TARGET_IPA_PATH}" -d "${TEMP_PATH}"
#獲取解壓后的app路徑
TEMP_APP_PATH=$(set -- "${TEMP_PATH}/Payload/"*.app;echo "$1")
#獲取當前工程編譯app的路徑
TARGET_APP_PATH="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app"
#清空一下工程生成的App包
rm -rf "${TARGET_APP_PATH}"
mkdir -p "${TARGET_APP_PATH}"
#-----------------------------------------#
#將三方應用app拷貝到當前工程編譯app的路徑
cp -rf "${TEMP_APP_PATH}/" "${TARGET_APP_PATH}"
#刪除一些免費開發(fā)者賬戶簽名不了的內(nèi)容
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"
#修改三方應用的Info.plist文件
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"
# 拿到MachO文件的路徑
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上可執(zhí)行權限
chmod +x "$TARGET_APP_PATH/$APP_BINARY"
#重簽Frameworks
TARGET_FRAMEWORKS_PATH="${TARGET_APP_PATH}/Frameworks"
if [ -d "${TARGET_FRAMEWORKS_PATH}"];
then
for FRAMEWORK in "${TARGET_FRAMEWORKS_PATH}/"*
do
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SGIN_IDENTITY" "$FRAMEWORK"
done
fi
-
Xcode自動重簽&真機調(diào)試
將我們脫殼的ipa放到TargetApp文件夾拱镐,接著command + R運行當前工程晌缘,可以看到一系列copy,install操作痢站,最后真機運行了我們準備好的三方應用磷箕,enjoy~
2.jpg
四、總結
腳本簽名可以很快地幫我們重簽名三方應用阵难,大大節(jié)省時間
雖然腳本簽名十分方便岳枷,但是還是要知道其中的簽名原理