来龙去脉
- 测试说企业版打出来的包不能安装到手机,用
iTools
安装,包“验证失败” - 用
XCode
试,模拟器是没有问题的,可以正确编译、安装、执行。用真机也不行了,报代码签名错误,详细信息是所选择的手机不在信任列表里... ...
这是企业版账号啊,跟手机有什么关系?这个企业版账号跟普通的App Store
的账号好像没什么区别啊。 - 在运维的帮助下,登录苹果开发者后台账户,看到了两个
Provisioning Profile
,对应于两个证书,分别是Development
和Distribution
,确实和App Store
的账号一模一样。 - 在跟运维确认了这是企业版账号之后,我决定找找原因看,这个有点颠覆自己对企业版的认识,记得自己是在2013年左右玩过企业版的,看来苹果又改什么东西了,知识需要更新了。
- 同事推荐了下面的第一篇参考文章,我就照着做了。现在的账号一律不动,自己就新建一个账号试试。
- 钥匙串中生成一个
CertificateSigningRequest
,发给苹果,生成一个新的证书。 - 下载生成的证书(
.cer
文件)到本地,并双击一下安装到自己mac
的钥匙串中。这个步骤很重要,不然的话XCode
中会显示证书不对。当时折腾了好几次才知道这个小细节。 - AppID已经生成好了,不用动。设备ID虽然有这一栏,始终认为企业版不需要管设备ID,一致没动。
- 接下来就是生成
Provisioning Profile
,这里唯一要注意的是类型要选择In-House
。生成后,发现类型是Universal Distribution
。 - 采用这个新证书,用
XCode
的Run
选项来装。结果是能装上,但不能运行和调试,一闪就退出了。手机上的程序可以点击打开,功能正常。瞬间了解了,这是发布版,是Release
模式,当然不能用XCode
调试啦(现象是闪退,但是程序已经正确安装到手机上)。这个和普通的release
是一个现象。 - 打包,导出
ipa
,再用iTools
安装,一切正常了。
原因分析
- 经历过一次,终于明白,企业版也分为开发模式和发布模式
- 开发模式也是
Development
,可以连XCode
调试,不过手机的UUID
也要添加。(这一点以前一直没有认识到。一直认为,企业版跟手机的UUID
应该无关才对) - 企业版的发布模式应该选
In-House
,最后的类型应该是Universal Distribution
才对。那个Distribution
的证书是没有用的。 - 运维按照普通账号的操作方式来套用了,给了我们
Development
模式的Provisioning Profile
,手机的UUID
也没有加,所以出现了测试同学无法安装的问题。
对应措施
- 知道了原因,改起来就快了,直接用新的
Universal Distribution
模式的Provisioning Profile
来签名就可以随便安装了。 - 企业版只是作为内部的试用版发布,没必要调试,所以
Development
模式暂时不准备启用。要添加手机的UUID
,直接用普通版的就可以了,没有必要上企业版。 - 自己
mac
上p12
要导出,让运维导到打包服务器的mac
上
参考文章
苹果企业账号发布APP详解——通过自己网站分发应用
这篇文章不错,可以照着做,是一个操作手册
iOS App 签名的原理
对苹果的签名机制研究得比较透彻。值得好好看看