蘋果企業證書簽名
特點總結
1、隨時可分發APP
2、可接受Apple不可接受的APP
缺點總結
1、蘋果開發者賬號難求,據說最近炒到了50萬左右
2、市場上證書混亂,爛大街的證書不少
3、掉簽風險極高
4、掉簽后重新獲取用戶,運營成本加大
重簽名方法
工具
2、iReSign
3、風車簽名管理(其它不安全,可能會有盜取賬號風險,特別是需要P12密碼的)
終端簽名
1、准備IPA后綴文件(Ad Hoc Deployment 打包)xx.mobileprovision文件(企業)
2、獲取證書里面的信息(xx.plist)
security cms -D -i xx.mobileprovision > xx.plist
3、導出xx.plist
/usr/libexec/PlistBuddy -x -c 'Print:xx項目名' xx.plist > xx.plist
4、解壓ipa包
unzip xx.ipa
5、刪除舊簽名
rm -rf Payload/xx.app/_CodeSignature/
6、刪除動態庫簽名(所有framework都有需要執行此步驟)
①、刪除簽名rm -rf Payload/xx.app/Frameworks/xx.framework/_CodeSignature②、重新簽名codesign -f -s "證書的名稱" Payload/xx.app/Frameworks/xx.framework/
7、替換配置文件
cp xx.mobileprovision Payload/xx.app/
8、簽名
codesign -f -s "證書的名稱" --entitlements xx.plist Payload/xx.app
9、打包成ipa
zip-r new_xx.ipaPayload/
最終 new_xx.ipa就是重新簽名的文件
蘋果超級簽名
原理
說的明白一些,開發者可以在開發者后台添加手機的UDID,然后重新打包一個IPA文件,分發平台,然后被添加的UDID就可以下載
整體架構圖

圖1
特點總結
1、直接分發,安裝即可運行,不需要用戶做企業證書的信任操作
2、目前穩定,不會有證書吊銷導致的業務風險
缺點總結
1、單開發者賬號的iPhone設備數量只有100個,導致分發成本非常高(99美元/1年/100個設備)
XML制作細節
1、在你的Web服務器上創建一個.mobileconfig的XML格式的描述文件;
XML代碼如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plistversion="1.0"><dict><key>PayloadContent</key><dict><key>URL</key><string>一個接收UDID的網址</string><key>DeviceAttributes</key><array><string>UDID</string><string>IMEI</string><string>ICCID</string><string>VERSION</string><string>PRODUCT</string></array></dict><key>PayloadOrganization</key><string>GuangdongQi</string><!--組織名稱--><key>PayloadDisplayName</key><string>AppFree</string><key>PayloadVersion</key><integer>1</integer><key>PayloadUUID</key><string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string><!--自己隨機填寫的唯一字符串,http://www.guidgen.com/ 可以生成--><key>PayloadIdentifier</key><string>com.gpon.profile-service</string><key>PayloadDescription</key><string>This temporary profile will be used to find and display your current device's UDID.</string><key>PayloadType</key><string>Profile Service</string></dict></plist>
注意
①、接收網址的地址需要SSL簽名,自簽名的不行,這也是蘋果強制https的一種方式吧
②、mobileconfig下載時設置文件內容類型Content Type為:application/x-apple-aspen-config(遇到問題的都是因為這個),或者像這里用一個簡單頁面做好下載mobileconfig文件,引導用戶安裝
2、服務器做一些301跳轉,存儲UDID等操作
自動化
注冊新的開發者設備+更新Provisioning Profile
接下來的關鍵點就是如何在獲取到用戶的UDID之后,秒級完成注冊新的開發者設備+更新Provisioning Profile的。 這里我們需要借助開源工具(spaceship):

Spaceship
Spaceship公開了Apple Developer Center的API,而且執行速度比解析開發者Web頁面快兩個數量級,從而在非常短的時間內搞定Provisioning Profile。 這個框架解決了整套機制的關鍵問題,成為整個工具鏈的基石。其實某平台早就完成了UDID獲取和應用簽名分發的技術儲備,只差這套API。
下面是解析開發者Web頁面和直接訪問API的速度對比圖:

SpaceshipRecording
自動簽名封包
此處其實應該有一萬個解決方案,通過命令行腳本/Python腳本/或者其他第三方都能實現。
這里推薦使用Sigh這個框架來解決這個問題。

image.png
Sigh的用法和配置都非常簡單,一個純命令工具,豐富的配置選項(自行查閱文檔),活躍的社區,完全夠用了。
直接上演示圖:

image
分發
不多說了,什么蒲公英,fir,各種小平台等等