不上架苹果商店,目前用户下载大约有两种
1、苹果企业证书签名
2、苹果超级签名
苹果企业证书签名(企业签)
特点总结
1、随时可分发APP
2、可接受Apple不可接受的APP
缺点总结
1、苹果开发者账号难求,据说最近炒到了50万左右
2、市场上证书混乱,烂大街的证书不少
3、掉签风险极高
4、掉签后重新获取用户,运营成本加大
重签名方法
工具
1、iOS APP Signer
2、iReSign
等的(有很多第三方提供的,据说会盗证书)
使用方法
上面两种见Git
终端签名
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、直接分发,安装即可运行,不需要用户做企业证书的信任操作
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
注意
①、接收网址的地址需要SSL签名,自签名的不行,这也是苹果强制https的一种方式吧
②、mobileconfig下载时设置文件内容类型Content Type为:application/x-apple-aspen-config(遇到问题的都是因为这个),或者像这里用一个简单页面做好下载mobileconfig文件,引导用户安装
2、服务器做一些301跳转,存储UDID等操作
自动化
注册新的开发者设备+更新Provisioning Profile
接下来的关键点就是如何在获取到用户的UDID之后,秒级完成注册新的开发者设备+更新Provisioning Profile的。 这里我们需要借助开源工具(spaceship):
Spaceship公开了Apple Developer Center的API,而且执行速度比解析开发者Web页面快两个数量级,从而在非常短的时间内搞定Provisioning Profile。 这个框架解决了整套机制的关键问题,成为整个工具链的基石。其实某平台早就完成了UDID获取和应用签名分发的技术储备,只差这套API。
下面是解析开发者Web页面和直接访问API的速度对比图:
自动签名封包
此处其实应该有一万个解决方案,通过命令行脚本/Python脚本/或者其他第三方都能实现。
这里推荐使用Sigh这个框架来解决这个问题。
Sigh的用法和配置都非常简单,一个纯命令工具,丰富的配置选项(自行查阅文档),活跃的社区,完全够用了。
直接上演示图:
分发
不多说了,什么蒲公英,fir,各种小平台等等