原文链接:https://zhuanlan.zhihu.com/p/66575901
UniApp 可以实现一套代码发布7个平台。
笔者主要用来发布Android版,iOS版。
Android版通过 “云端APP打包” 生成 .apk 安装包文件直接上架就行了,而iOS版从打包到上架比较麻烦,故本文介绍iOS版打包到上架的流程。
iOS总发布流程:
- 开发者账号开通。
- 申请发布证书、AppID、Profiles文件。
- 在HBuilderX上进行 “云端APP打包“ ,生成 .ipa 安装包文件。
- 用XCode中的 “Application Loader ” 上传 .ipa文件到apple开发平台。
- 在apple开发平台上填写应用信息和选择刚上传的ipa文件,提交应用审核。
详细流程:
1、 开发者账号开通。这个网上教程很多,若是申请公司开发者, 可以找人协助申请,也可参考笔者的文章 。
2、申请发布证书Certificate、AppID、Profiles文件。可参考此文章 ,写的很详细了。苹果APP打包上架流程,从申请发布证书Certificate、AppID、Profiles文件开始
3、在HBuilderX上进行 “云端APP打包“ ,生成 .ipa 安装包文件。
在HBuilderX上要填写的4个字段:
Bundle ID: 一般就是AppID,类似Android的包名,如com.公司域名.应用名
私钥密码:即私钥证书的密码。
profile文件:即第二步申请下来的profile文件(对应每个应用都有一个profile文件)
私钥证书:第二步生成的发布证书Certificate, 在Keychain Access 中将证书导出为.p12格式,导出时要输入密码,就是上面输的私钥密码
导出.p12证书的方式:
打开Keychain Access, 左上角选 “login”,左下角选 “Certificates”,右边找到 “iPhone Distribution..”证书,双击证书,设置 Trust 为 Always Trust
然后右键菜单选择 “Export iPhone Distribution..”
选择.p12格式导出,设置一个密码,也就是上面要填的“私钥密码”
填写完4个信息,就能云端打包出.ipa文件了。
如果报错一般就是profile文件和BundleId对不上,或者p12证书错了,检查一下
PS:每年到期后要更新一次以上的证书文件,步骤如下
-1. 先本地创建新的 CertificateSigningRequest.certSigningRequest
-2. 再到apple 开发者网更换或新建 distribution.cer(需要上传第一步生成的.certSigningRequest文件)
-3. 下载distribution.cer, 双击导入,然后到 Keychain Access 中导出.p12 证书
-4. apple 开发者网更新.mobileprovision(编辑,然后选择新建的distribution.cer文件)
-5. 可以用 hdbuilder 打包了
4、用XCode中的 “Application Loader ” 上传 .ipa文件到apple开发平台。
打开XCode, 顶部菜单 “XCode” – “Open Developer Too” – “Application Loader” , 这时候注意要输入AppleID账号登录
2020.06.05更新:Application Loader已被淘汰,用官方新出的 Transporter 软件可很方便地上传.ipa 文件。(在 App Store 搜索下载即可)
注意:如果应用icon 1024×1024.png图片是有问题的话,生成的ipa文件上传也会报错 Images can’t contain alpha channels or transparencies.
解决办法参考:https://www.cnblogs.com/ChenYilong/p/3977542.html
就是双击打开icon,取消勾选Alpha ,重新导出 icon,再把icon换进去,重新打包ipa上传。
5、 在apple开发平台上填写应用信息和选择刚上传的ipa文件,提交应用审核。
正常填写应用上架信息即可,如果第四步上传成功了,会在这里看到可选择的ipa文件,选择后就能提交审核了。
注意事项:
- 应用图标若是png格式,也是需要去除alpha通道了,或者上传jpg格式的图标也行。
- APP预览图,需要跑iPhoneX Mas 和 8plus模拟器上截图, 快捷键 Command+X
至此,成功从HBuilderX将UniApp打包出ipa文件,并提交App Store审核。
( 总的来说,走过一次流程之后,觉得也没太麻烦,仿佛柳暗花明又一村。当然比起Android应用发布还是麻烦不少的)