步驟:git
1.新建一個Xcode工程github
2.從微信的ipa包解壓後拿出.app文件,進行替換 xcode
修改info.plist裏面的Bundle ID 【這個Bundle ID 必須跟咱們剛新建的工廠的Bundle ID一致】 bash
![]()
簽名動態庫【這裏須要把.app/Frameworks目錄下的全部動態庫進行簽名】 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運行,即可以把該WeChat跑到本身的手機上了app
####使用XCode腳本自動簽名 在項目下建立一個APP的文件夾,只要在哪一個文件夾放置ipa包,就能制動重簽名安裝到本身的手機【仿照Monkey】 1.先將須要重簽名的ipa包放置到APP目錄下框架
2.往項目添加一個腳本文件ui
3.往腳本中寫入自動化簽名步驟spa
腳本信息(其實這些步驟都是咱們手動簽名作的事)3d
# ${SRCROOT} 這個是工程目錄
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"
# 拿到解壓的臨時App的路徑
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
# 打印一下
echo "TEMP_APP_PATH:$TEMP_APP_PATH"
# -------------------------------------
# 2. 把解壓出來的.app拷貝進去
#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. 爲了是重簽過程簡化,移走extension和watchAPP. 此外我的免費的證書沒辦法籤extension
echo "Removing AppExtensions"
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"
# -------------------------------------
# 4. 更新 Info.plist 裏的BundleId
# 設置 "Set :KEY Value" "目標文件路徑.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"
# 5.給可執行文件上權限
#添加ipa二進制的執行權限,不然xcode會告知沒法運行
#這個操做是要找到第三方app包裏的可執行文件名稱,由於info.plist的 'Executable file' key對應的是可執行文件的名稱
#咱們grep 一下,而後取最後一行, 而後以cut 命令分割,取出想要的關鍵信息。存到APP_BINARY變量裏
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#這個爲二進制文件加上可執行權限 +X
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
#遍歷出全部動態庫的路徑
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "🍺🍺🍺🍺🍺🍺FRAMEWORK : $FRAMEWORK"
#簽名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi
複製代碼
####使用Monkeydev自動簽名 #####步驟
直接運行就能夠跑到咱們的手機上了 #####Monkeydev的原理 咱們到一樣的地方就能發現,Monkeydev也有本身的腳本 ![]()
裏面也作了一樣重簽名的操做,這裏有興趣的本身去看,我就很少作解釋了 ![]()
【晚點我再把這幾個項目的源碼上傳分享出來...】