一.準備一個embedded.mobileprovision文件(必須是付費證書產生的,appid,device一定要匹配),并放入.app包中
- 1.可以通過Xcode自動生成(隨便新建一個iOS項目,注意bundleId 不要包括中劃線-否則簽名失敗),然后再編譯后的App包中找到(注意要選擇付費team)
- 2.可以去開發者證書網站生成下載(一般可選development)
二.從embedded.mobileprovision文件中提取出entitlements.plist權限文件
使用終端指令
security cms -D -i embedded.mobileprovision > temp.plist
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' temp.plist > entitlements.plist
三.查找iOS可用重新簽名的證書id(需mac上有可用的付費證書)
security find-identity -v -p codesigning
四.對.app內部的動態庫,AppExtension等進行簽名
codesign -fs 證書ID xxx.dylib
五.對.app包進行簽名
codesign -fs 證書ID --entitlements entitlements.plist xxx.app
重簽名GUI工具
1.iOS App Signer
https://github.com/DanTheMan827/ios-app-signer
可以對.app重簽名打包成ipa
需要在.app包中提供對應的embedded.mobileprovision文件
2.iReSign
https://github.com/maciekish/iReSign
可以對ipa進行重簽名
需要提供entitlements.plist ,embedded.mobileprovision文件
注意:安裝包的可執行文件必須是脫殼的,重新簽名才會有效,否則即使安裝到未越獄設備,啟動就會閃退