# 使用Xcode debug ipa 檔 debug ipa的方式有很多種,此篇分享用Xcode 配合腳本做法,見下: ## 一、新建專案 新建專案空跑後,Xcode會在實機上先安裝profile,如果對於apple簽名機制不熟,[可以參考這篇](https://hackmd.io/nKw3RWGURbil77eFIa6V-g?view#4-Run-your-app-on-a-device) 這很重要一定要在跑腳本(後面會提)前先運行~ 另外第一次運行可能還需要[實機信任](https://hackmd.io/ETvce8KPRFmC2L6Cr6bXUA?view#%E4%BC%8D%E3%80%81%E5%AF%A6%E6%A9%9F%E9%9C%80%E4%BF%A1%E4%BB%BB%E9%96%8B%E7%99%BC%E8%80%85),先完成就對了。 ## 二、準備腳本 建立腳本方法,可先創建記事本,然後把副檔名改成 .sh。 建立完後,==要用terminal,下指令給權限==,才會動作。 以下為腳本: :::info ```shell= # 資源資料夾,需提前在工程目錄下新建APP資料夾,裡面丟ipa包 ASSETS_PATH="${SRCROOT}/APP" # ${SRCROOT} 他是工程所在的目標 TEMP_PATH="${SRCROOT}/temp" # 目標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 工程生成包的路徑 #TARGET_NAME TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app" #echo "app路徑是:$TARGET_IPA_PATH" rm -rf "$TARGET_APP_PATH" mkdir -p "$TARGET_APP_PATH" cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH" #----------------------------- #3. 刪除extension和watch rm -rf "$TARGET_APP_PATH/PlugIns" rm -rf "$TARGET_APP_PATH/watch" #----------------------------- #4. 修改 info.plist # 設置 "Set : KEY Value" "目標文件路徑" #/usr/libexec # CFBundleIdentifier /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist" #----------------------------- #5. 給可執行文件上執行權限 #拿到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.重簽名第三方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" if test -f $FRAMEWORK then #簽名 /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK" fi done fi # 刪掉temp資料夾 rm -rf "${SRCROOT}/temp" ``` ::: 下為給檔案權限的terminal指令: ``` $ chmod +x XXX.sh(腳本檔) ``` ## 三、在專案根目錄建立資料夾 因腳本需求,需在專案根目錄: 1. 創一個App的資料夾,並把想debug的ipa丟進去。 2. 把建立好的腳本一併放進去  ## 四、xCode設定專案 回到xCode,在Build Phases中,新建一個==Script Phase==  並設定執行.sh檔。這邊補充“./” 位置是在專案根目錄。  ## 五、專案啟動 command + shift + k(清理mac暫存) command + B(重新編譯) command + R(run起來~) 原則上就會成功運行ipa了~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up