為什么要替換簽名
開發(fā)階段跺株,用開發(fā)者賬號 build 出來的 app 可以很方便的調(diào)試,
但是蘋果應(yīng)用商店中的 app 使用 Distribution 簽名冲甘,無法直接打開 webview 的遠程調(diào)試爵赵。
因此我們通過替換 ipa 包簽名方式改成開發(fā)者的簽名實現(xiàn)遠程調(diào)試。
獲取 embedded.mobileprovision
用 xcode 創(chuàng)建一個 helloWorld 工程
打開后提示沒有簽名的信息绵咱,點擊 Team 下拉框 -> Add an Account...
登錄賬號,如果沒有自行申請一個(賬號不需要付費)
如圖所示熙兔,賬號類型是 Personal Team麸拄。關(guān)閉該頁面
Team 中選中剛才創(chuàng)建的賬號 (注:如果之前已經(jīng)有開發(fā)者賬號,直接選中黔姜,不需要上面的步驟)
勾選了 automatically manage signing 后會自動的加上簽名信息拢切。
build 工程
在 finder 中查看 build 完成后的目錄
顯示包內(nèi)容
embedded.mobileprovision 就是我們需要的簽名文件
預(yù)覽該文件可以發(fā)現(xiàn),蘋果限制了有效期只有7天秆吵。所以這種方式裝上的 app 7天后不能打開了淮椰,好在只是調(diào)試用,過期了可以再 build 一遍
記住App ID : 本例是 net.xxxx.helloWorld,后面的腳本需要填入
獲取開發(fā)者賬號信息
security find-identity -p codesigning -v
記住 iPhone Developer 前那一串字符纳寂,后面的腳本需要填入主穗。
獲取 ipa
由于新版的 itunes 不再提供 ipa 下載,并且蘋果商店下載的 app 經(jīng)過了加殼處理毙芜,因此還需要砸殼(dumpdecrypted)才能使用忽媒。
為了省事,可以直接從某某助手的越獄商店下載已經(jīng)砸殼的 app腋粥。具體請自行百度晦雨,本文不提供地址架曹。
替換簽名
以微信為例,將 wechat.ipa 和 embedded.mobileprovision 放在用一目錄闹瞧,新建一個 wechat.sh 文件腳本內(nèi)容如下:
unzip -o wechat.ipa
rm -fr Payload/WeChat.app/Watch
rm -fr Payload/WeChat.app/Plugins
security cms -D -i embedded.mobileprovision > weixin_full.plist
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' weixin_full.plist > weixin.plist
cp embedded.mobileprovision Payload/WeChat.app/embedded.mobileprovision
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier embedded.mobileprovision文件中的APPID" Payload/WeChat.app/Info.plist
rm -rf Payload/WeChat.app/_CodeSignature/
/usr/bin/codesign --force --sign 獲取開發(fā)者賬號信息中的那一串字符 --entitlements weixin.plist Payload/WeChat.app/Frameworks/*
/usr/bin/codesign --force --sign 獲取開發(fā)者賬號信息中的那一串字符 --entitlements weixin.plist Payload/WeChat.app/WeChat
ios-deploy --bundle Payload/WeChat.app
由于 ipa 文件現(xiàn)在 itunes 無法安裝绑雄,因此腳本里面用到了 ios-deploy。
該命令通過 npm install ios-deploy -g
安裝
最后在命令行中執(zhí)行 sh wechat.sh
即可安裝到手機中
最后可能會出現(xiàn)上面這個錯誤奥邮,需要把開發(fā)者加入手機的信任中
IOS 設(shè)備中把開發(fā)者加入信任
設(shè)置 -> 通用 -> 設(shè)備管理 -> 開發(fā)者應(yīng)用 -> 點擊信任
手機上再次打開微信万牺,隨便打開一個小程序,在 safari 中就可以遠程調(diào)試了洽腺。
后記
附 adb-devtools 工具脚粟,可以更方便的使用 chrome 連接 ios 和 android 設(shè)備進行遠程調(diào)試。
替換簽名的方案不僅可用于 webview 的遠程調(diào)試蘸朋,還能用于應(yīng)用多開核无,lldb 調(diào)試,自動化測試等等很多玩法度液。