Expo 作为基于React Native的一套库和工具在开发移动端项目上非常的方便,比如开发Android项目直接运行expo build:android
就可以直接打包出一个apk文件就可以直接运行。但是在ios开发上,对于很多原本非ios开发人员,或者不熟悉apple平台开发的人员则会比较麻烦。本文就是出于这个目的,帮助原本可能是前端开发人员出身的技术人员来淌过这个坑。
工欲善其事必先利其器
在开始打包之前首先得准备好如下工作:
- 一个已经付费的apple development account, 99刀是必要花费。
- iTunes
- Apple Configurator 2
- 一台iphone 或者 ipad以及Mac电脑一台
第一步:查看并记录下测试移动设备的UDID
在使用iTunes连接测试机器后点击序列号便可查看UDID的编码
第二步:生成本机签名文件
apple 软件开发上需要开发人员在开发机器上生成CertificateSigningRequest.certSigningRequest
,然后基于该文件生成各类相关证书。
在填好相关信息后,点击继续本地机器中会生成出CertificateSigningRequest.certSigningRequest文件
第三步: 在app源码中配置好App ID
在Expo项目中有关app的配置都会写在app.json
这个文件中,其中在有关ios的字段会负责ios平台的相关配置。
bundleIdentifier字段对应的就是ios平台中的App ID, 这个字段对于后面的开发至关重要,切记
在Apple developer 平台上生成相关证书
点击Certificates,Identifiers& Profiles 进入控制台
第一步:添加相关证书
本文选择生成production环境生成证书,首先生成Ad Hoc certificate
选择本地已经生成好的签名证书
生产完毕后,将证书下载到本地,名为ios_distribution.cer
在获取Ad Hoc certificate之后,我们再次生成Apple Push Notification service证书。 步骤一模一样,在开头的时候选择Apple Push Notification service即可。生成的证书名为aps.cer
。
第二步:绑定APP ID
第三步:绑定测试移动端设备
将UDID填写即可,每种设备的上限为100台
第四步:生成Profile
在这里着重解释一下什么是ad hoc profile?这是一个文件包,里面包含了app ID, 指定测试设备的相关信息,如UDID,还有一个就是distribution certificate(公钥)。在打包成IPA文件的时候,ad hoc profile就包含在IPA文件中,那么它的作用是什么?那就是在app启动的时候进行匹配验证,首先app源码中的bundle ID和ad hoc profile中App ID进行匹配,然后distribution certificate进行公钥匹配,最后测试机器的UDID再和profile中的Device ID进行匹配,全部通过了APP才能正常启动。最后,将生成出的profile下载到本地机器上。
导出证书
点击ios_distribution.cer或者aps.cer
导出.p12为后缀的证书,注意在设置密码的时候,应当记住,后面环节需要填写密码。
使用Expo打包IPA
第一步:登录Apple 账户
运行expo build:ios -c
命令行,输入账户信息
选择"I will provide all the credentials.....",然后依次将上一步导出的distribution certificate和apple push Notification service key.
这里的key ID 为 app ID,然后等待10分钟后,Expo打包好后,会给出IPA下载超链接。
在ios设备上导入IPA
连接测试ios设备,打开软件apple configurator 2,进入应用页面,将IPA拖入后,下面就可以开始真机测试了。