uniapp的项目IOS本地打包实战
互联网软件开发的常见攻防:
客户说xxx,要不我们整一个移动端的WEB系统?嗯。
客户说xxx,要不我们改为打包成一个套壳的APK?-恩。
客户说xxx,要不我们再混合一下增加个扫码功能?--因。
客户说xxx,要不再加个IOS的版本?---口
从初始的一个移动端的WEB,到uniapp打包成一个套壳apk,然后改为uniapp的5+app开发,最后再加上了ios的版本,在一路中华文明用语的心路历程中进化。安卓的云打包还行,IOS证书先挡在前面,试完证书,云打包一天四次的机会就结束了(拷),关键中途证书配置问题没打包上也算机会消耗了,气不过,兵书云,切不可受制于人。本地打包撸。
章节目录是:
- 安卓云打包
- IOS本地打包
- 打包到app store connect
从云打包开始
安卓打包
我们假设HBuilderX项目代码已经处理好了,android studio里面也直可以正常同步预览了,对着HBuilderX的项目右键-》发行-》云打包。
前置提醒:
- 尽可能把不需要的权限去了,默认有通讯录的读取权限,用了这些权限就会有其它的一些要求,模块配置里面去掉打勾,还要在权限配置里面把额外的权限删除,就是它们俩。
- 如果适配安装不同机型的需求的话,把支持CPU的类型勾上,不然不匹配的CPU机型,APK的包安装不了。
直接选择按照默认的设置,检查确认一下里面的默认广告没有勾上就行,然后我们需要的就是等,控制台会给你返回一个排队的信息,不要太在意排队的人数,看似200-300个,大概等待时间10分钟左右能完成。
结果走完,控制台会给你一个apk包的位置,可以直接打开,如果控制台关了也没有关系,可以对着目录右键,发行-》云打包状态 打开查看。正常情况在项目的unpackage/release/apk/包名.apk的位置
然后到了IOS的云打包了,虽然没成功,因为四次机会用完了。
前置准备:
- 注册开发者账号
- 账号验证完之后,添加证书、设备、应用等等
注册开发者账号
这个自行去注册吧,手机上的Apple Developer注册起来好像比MAC上的容错率高一点,因为MAC的应用注册我卡住了两次,然后就给客服发邮件了,手机上一次成功,不确定是客服生效了,还是手机上应用生效。
如果是组织账号的先准备好企业的邓白氏编码(自行去了解吧)
注册完之后不要急,大概需要等待一个晚上或者半天,不然访问不了certificates页面(在前一天还不能访问的时候,我又联系客服了,客服早上回我电话,虽然我没接还是给他点赞,因为来电第一步是机器询问你有没有空,可以按1或2来选择连线还是不连续)
申请证书
添加证书这一段,DCLOUD这篇完全正确,然后我也导出一份PDF版本。
https://ask.dcloud.net.cn/article/152
申请证书
准备环境
- 必需要有苹果开发者账号,并且加入了 “iOS Developer Program”
- Mac OS 10.9以上系统(如果已经申请p12证书则不需要)
登录 iOS Dev Center
打开网站 iOS Dev Center
使用苹果开发者账号登录 iOS Dev Center:
登录成功后在页面左侧选择 “Certificates,IDs & Profiles” 进入证书管理页面:
在证书管理页面,可以看到所有已经申请的证书及描述文件:
下面我们从头开始学习一下如何申请开发证书、发布证书及相对应的描述文件。
首先需要申请苹果 App ID (App的唯一标识)
如果已经申请,可跳过此节
选择页面的 “Identifiers" 可查看到已申请的所有 App 应用标识,点击页面上的加号来创建一个新的应用标识:](https://img-cdn-tc.dcloud.net.cn/uploads/article/20191112/ae9c05f4b59605cecf83cfd3b3aea5c5.png)
[
选择标识类型为 “App IDs”,然后点击 “Continue”
平台选择 “iOS,tvOS,watchOS”,Bundle ID 选择 “Explicit”,在 Description 中填写描述,然后填写 Bundle ID,Bundle ID 要保持唯一性,建议填写反域名加应用标识的格式 如:“io.dcloud.hellouniapp”, 然后点击 “Continue”
注意:在 HBuilderX 中 App 提交云端打包时界面上的 AppID 栏填写的就是这个 Bundle ID
接下来需要选择应用需要使用的服务(如需要使用到消息推送功能,则选择“Push Notifications”),然后点击 “Continue”
注意:如果App用不到的服务一定不要勾选,以免响应审核
确认后选择提交,回到 identifiers 页面即可看到刚创建的App ID:
至此,App ID 已经创建完毕,接下来开始创建开发证书,在创建开发证书前,需要先生成证书请求文件
生成证书请求文件
不管是申请开发 (Development) 证书还是发布 (Distribution) 证书,都需要使用证书请求 (.certSigningRequest) 文件,证书请求文件需在Mac OS上使用 “钥匙串访问” 工具生成。
在“Spltlight Search”中搜索“钥匙串”并打开 “钥匙串访问” 工具:](https://img-cdn-tc.dcloud.net.cn/uploads/article/20191113/4fb865746dce3a205287962cc9475934.png)
[
打开菜单 “钥匙串访问”->“证书助理”,选择“从证书颁发机构请求证书...”:
打开创建请求证书页面,在页面中输入用户邮件地址、常用名称,选择存储到磁盘,点击 “继续” :
文件名称为“CertificateSigningRequest.certSigningRequest”,选择保存位置,点击 “存储” 将证书请求文件保存到指定路径下,后面申请开发(Development)证书和发布(Production)证书时需要用到
申请开发(Development)证书和描述文件
开发(Development)证书及对应的描述文件用于开发阶段使用,可以直接将 App 安装到手机上,一个描述文件最多绑定100台测试设备(开发证书不能用于发布应用到 App Store)。
申请开发(Development)证书
在证书管理页面选择 “Certificates" 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书:
在 “Software” 栏下选中 “iOS App Development” 然后点击 “Continue”:
接下来需要用到刚刚生成的证书请求文件,点击“Choose File...”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:
生成证书后选择 “Download” 将证书下到本地 (ios_development.cer):
双击保存到本地的 ios_development.cer 文件,会自动打开 “钥匙串访问” 工具说明导入证书成功,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出...”:
输入文件名、选择路径后点击 “存储”:
输入密码及确认密码后点击 “好”:
至此,我们已经完成了开发证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成开发阶段所需的描述文件,在生成描述文件之前,需要先添加调试设备(iPhone 、iPad)
添加调试设备
开发描述文件必须绑定调试设备,只有授权的设备才可以直接安装 App,所以在申请开发描述文件之前,先添加调试的设备。
(如果已经添加设备,可跳过此节)
在证书管理页面选择 “Devices”,可查看到已添加的所有设备信息,点击页面上的加号来添加一个新设备:](https://img-cdn-tc.dcloud.net.cn/uploads/article/20191112/78882f6762f85cd392a69e0cea3fb7e1.png)
[
填写设备名称 和 UDID(设备标识):
获取设备UDID方法,将设备连接到电脑,启动 iTunes,点击此区域可切换显示设备的 UDID,右键选择复制
输入完成后,点击“Continue” 继续完成添加即可;
接下来继续申请描述文件
申请开发 (Development) 描述文件
在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:
在 “Development” 栏下选中 “iOS App Development”,点击“Continue”按钮:
这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:
接下来选择需要绑定的证书,这里建议直接勾选 “Select All”,点击“Continue”:
选择授权调试设备,这里建议直接勾选 “Select All”,点击 “Continue”:
输入描述文件的名称(如“HelloUniAppProfile”), 点击 “Generate” 生成描述文件:
点击“Download”下载保存开发描述文件(文件后缀为 .mobileprovision)
至此,我们已经得到了开发证书(.p12)及对应的描述文件(.mobileprovision),接下看一下如何制作发布证书及发布描述文件
申请发布(Distribution)证书和描述文件
发布 (Production) 证书用于正式发布环境下使用,用于提交到Appstore审核发布。发布证书打包的 ipa,不可以直接安装到手机上
申请发布(Production)证书
在证书管理页面选择 “Certificates" 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书:
在 “Software” 栏下选中 “App Store and Ad Hoc”,点击 “Continue”:
接下来同样需要用到之前生成的证书请求文件,点击“Choose File...”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:
生成证书成功,选择“Download” 将证书下载到本地 (ios_production.cer):
同样双击保存到本地的 ios_production.cer 文件将证书导入到 “钥匙串访问”工具中,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出...”:
输入文件名、选择路径后点击 “存储”:
输入密码及确认密码后点击 “好”:
至此,我们已经完成了发布证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成发布描述文件
申请发布 (Distribution) 描述文件
在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:
在 “Distribution” 栏下选中 “App Store”,点击“Continue”按钮:
这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:
接下来选择需要绑定的发布证书(iOS Distribution),这里勾选刚刚生成的发布证书”,点击“Continue”:
接下来输入描述文件的名称(如“HelloUniAppProfileDistribution”), 点击 “Generate” 生成描述文件:
然后点击 “Download” 将描述文件下载到本地(文件后缀为 .mobileprovision)
至此,我们已经得到了发布证书(.p12)及对应的发布描述文件(.mobileprovision)
把刚刚导出的证书相关的文件放到同一个目录,便于选择,打开发布-》云打包,分别输入刚刚获取的appid和相关的证书、密码。不出意外的话,这时候你应该可以愉快的打包了。
如果提示“profile文件与私钥证书文件不匹配”,把证书删除,双击钥匙扣里面的证书,设置为始终信任,重新导出即可。
部分运气不好的,可能愉快的时候不太多,比如我,因为选择的是安心打包,然后就会遇到签名失败的情况,下面这样的窗口提示。
按官方的提示,打开目录,安装证书就行。重点:走到这一步是算消耗了你的打包次数的。
因为我一开始安卓和IOS一起来的,试了一次之后,次数就用完了,这样修改完成之后会不会成功,不确定后面有没有坑了,但是懒得注册一个新的账号来围着他转了,转本地打包吧。
ios 安心打包证书安装的官方解决教程:
- 点击证书文件, 会自动打开
钥匙串
, 下拉列表钥匙串
, 选择系统
, 点击 添加 按钮 - 点击添加后, 请在弹窗中,输入电脑密码, 允许钥匙串访问.
- 按照上面的步骤, 依次完成其它证书的导入.
IOS的本地打包
官方教程可以先啃一遍,里面把所有的配置项都说明白了。
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#uni-app%E9%A1%B9%E7%9B%AE
前置工作:
- 下载xcode
- App离线SDK下载(用和彩云这个地址,不用客户端速度快) https://caiyun.139.com/m/i?115CoQwTWeIuJ 提取码: k3P1
- DCLOUD后台申请,我的应用--应用名称里面的(各平台信息)–创建离线Key
- HBuilderX打包资源:右键目录-》发布-》IOS本地打包-》生成本地打包APP资源,会得到一个目录。
开工
xcode自行安装
App离线SDK下载了之后,解压,你会看到这些个内容,直接打开HBuilder-Hello还是从xcode里面打开这个项目都行
把刚刚HBuilderX打包的资源目录复制过来
下面就是改key和appid等信息的同步。
官方教程:打开info.plist,创建key为dcloud_appkey,Value选择String类型,内容为申请的AppKey如下:
xcode的位置换了,你打不到info.plist文件,这些个地方用到Dcloud后台的appid
还有几个文件需要修改的配置:
Pandora/apps/HXXXXX(你的应用名)/www/manifest
Supporting Files/control
Supporting Files/HBuilder-Hello-Info
再加上面的项目的info
照官方的配置说明的图就行
其它的配置自行看需求,需不需要配置,这几个设置完就可以运行了。分别从DCLOUD的后台这儿取相应的appid和appkey
勾上这个自动签名
数据线连接上手机,解锁,点击那个三角形run起来,这时候你就可以愉快的玩耍了。
打包发布
把自动签名这个勾去掉,把相应的项目填写为自已注册的开者发信息
点击菜单的Product → Archive,在弹出的窗口继续相应的选择,跟安装软件一样一路选择。
成功之后,登录app store connect 查看就行了。
https://appstoreconnect.apple.com/apps
收工,麻木了
中间路过的点
- 需求变动大问题
- PC上注册账号非法停止问题
- 注册开发者账号的等待官方确认时间
- 云打包的窗口profile文件与私钥证书文件不匹配
- 打包次数用完了
- 官方教程里面的info.plist的位置变动了
- 还有一个坑不确定了,HBuilderX的需要的证书全配置OK了,一直不匹配,重启HBuilderX客户端解决