使用Xcode進(jìn)行重簽名【這種方式就相對(duì)簡(jiǎn)單很多了】
步驟:
1.新建一個(gè)Xcode工程
2.從微信的ipa包解壓后拿出.app文件李丰,進(jìn)行替換
3.接下操作該包
- 刪除PlugIns/Watch文件夾
- 替換成自己的bundleid,找到info.plist進(jìn)行修改
修改info.plist里面的Bundle ID 【這個(gè)Bundle ID 必須跟我們剛新建的工廠的Bundle ID一致】
- 用證書(shū)重簽名Framewroks下面的框架
簽名動(dòng)態(tài)庫(kù)【這里需要把.app/Frameworks目錄下的所有動(dòng)態(tài)庫(kù)進(jìn)行簽名】
codesign -fs "iPhone Developer: XXX (XXXXXXXX)" mars.framework
codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MMCommon.framework
codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MultiMedia.framework
codesign -fs "iPhone Developer: XXX (XXXXXXXX)" WCDB.framework
4.Xcode運(yùn)行灿巧,便可以把該WeChat跑到自己的手機(jī)上了
使用XCode腳本自動(dòng)簽名
在項(xiàng)目下創(chuàng)建一個(gè)APP的文件夾,只要在哪個(gè)文件夾放置ipa包靠粪,就能制動(dòng)重簽名安裝到自己的手機(jī)【仿照Monkey】
1.先將需要重簽名的ipa包放置到APP目錄下
2.往項(xiàng)目添加一個(gè)腳本文件
3.往腳本中寫(xiě)入自動(dòng)化簽名步驟
腳本信息(其實(shí)這些步驟都是我們手動(dòng)簽名做的事)
# ${SRCROOT} 這個(gè)是工程目錄
TEMP_PATH="${SRCROOT}/Temp"
# 資源文件夾
ASSETS_PATH="${SRCROOT}/APP"
# ipa包路徑
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"
#新建Temp文件夾
rm -rf "${TEMP_PATH}"
mkdir -p "${TEMP_PATH}"
# --------------------------------------
# 1. 解壓IPA 到Temp下
# 解壓ipa包到Temp目錄
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"
# 拿到解壓的臨時(shí)App的路徑
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
# 打印一下
echo "TEMP_APP_PATH:$TEMP_APP_PATH"
# -------------------------------------
# 2. 把解壓出來(lái)的.app拷貝進(jìn)去
#BUILT_PRODUCTS_DIR 工程生成的APP包路徑
#TARGET_NAME target名稱
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "TARGET_APP_PATH:$TARGET_APP_PATH"
rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH/"
# -------------------------------------
# 3. 為了是重簽過(guò)程簡(jiǎn)化聊疲,移走extension和watchAPP. 此外個(gè)人免費(fèi)的證書(shū)沒(méi)辦法簽extension
echo "Removing AppExtensions"
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"
# -------------------------------------
# 4. 更新 Info.plist 里的BundleId
# 設(shè)置 "Set :KEY Value" "目標(biāo)文件路徑.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"
# 5.給可執(zhí)行文件上權(quán)限
#添加ipa二進(jìn)制的執(zhí)行權(quán)限,否則xcode會(huì)告知無(wú)法運(yùn)行
#這個(gè)操作是要找到第三方app包里的可執(zhí)行文件名稱,因?yàn)閕nfo.plist的 'Executable file' key對(duì)應(yīng)的是可執(zhí)行文件的名稱
#我們grep 一下,然后取最后一行, 然后以cut 命令分割搭儒,取出想要的關(guān)鍵信息穷当。存到APP_BINARY變量里
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#這個(gè)為二進(jìn)制文件加上可執(zhí)行權(quán)限 +X
chmod +x "$TARGET_APP_PATH/$APP_BINARY"
# -------------------------------------
# 6. 重簽第三方app Frameworks下已存在的動(dòng)態(tài)庫(kù)
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
then
#遍歷出所有動(dòng)態(tài)庫(kù)的路徑
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "????????????FRAMEWORK : $FRAMEWORK"
#簽名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi
使用Monkeydev自動(dòng)簽名
步驟
- monkey的集成
https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%85 - 創(chuàng)建一個(gè)MonkeyDev項(xiàng)目
- 把砸了殼的IPA包放到Target目錄下
直接運(yùn)行就可以跑到我們的手機(jī)上了
Monkeydev的原理
我們到同樣的地方就能發(fā)現(xiàn),Monkeydev也有自己的腳本
里面也做了同樣重簽名的操作淹禾,這里有興趣的自己去看馁菜,我就不多做解釋了
【晚點(diǎn)我再把這幾個(gè)項(xiàng)目的源碼上傳分享出來(lái)...】