为什么要使用离线打包
首先我们需要知道 ios 本地离线打包是什么,为什么要使用离线打包,而不使用云打包,按官方的说法"App 离线开发工具包,即 App 离线 SDK,是把 App 运行环境(runtime)封装为原生开发调用接口,开发者可以在自己的 Android 及 iOS 原生开发环境配置工程使用,包括 Android 离线开发 SDK 及 iOS 离线开发 SDK",实际上好处有:
- 本地打包,不需等,有时候云打包人数多时你又着急上线时结果看到需要等 30 分钟(夸张的修辞手法,一般也就 5-6 分钟)后才能打包完成,而本地打包只需要生成一下 App 资源,然后进行打包即可
- 本地打包没有代码泄露等风险,并且不需要上传证书(虽然 uniapp 是官宣不会泄露,我也十分相信)
1. 基础资料
所谓"工欲善其事,必先利其器"所以我们需要先了解一些基础资料,这些资料可以帮助我们更好的理解 uniapp 的打包流程。
以上的这些资料,基本可以完成离线打包,但还是会遇到一些问题,接下来会列举一些我遇到的问题
所需材料
- 一个审核通过的企业开发者 developer 账号
- 申请好证书和描述文件
- Xcode
- Hbuilderx
2. 插件配置问题
2.1 高德地图配置
- 文档
- 报错:当前运行的基座不包含原生插件[mapSearch],请在 manifest 中配置该插件,重新制作包括该原生插件的自定义运行基。uniapp 提供的离线基座在使用 uni.chooseLocation 进行位置选择时,离线基座提示不包含原生插件。 原因:文档下面还有一个说明配置,这些依赖库、系统库、依赖资源也需要配置
2.2 极光推送配置
- 文档
- 报错:当前运行的基座不包含原生插件[JG-JPush],请在 manifest 中配置该插件,重新制作包括该原生插件的自定义运行基座 按文档配置应该是没有问题的,但是还是遇到这种情况你需要看一下是否使用了模拟器运行的,使用真机运行即可
3. 配置 app 模块等问题
在运行中提示:打包时未添加 xxx 模块 请根据"如何配置模块/三方 SDK"配置即可
ios 更新跳转到 App Store 指定 app 链接
iTunes 提供了接口可查询到 app 在 App Store 上的信息
国外:itunes.apple.com/lookup?id=x...
国内:itunes.apple.com/cn/lookup?i...
xxx 为你的应用 ID,可在App Store Connect上 APP 信息查看
- 直接浏览器访问后会下载一个 txt 文件
- 打开搜索 trackViewUrl,获取到参数后的内容也就是一个 https 链接
- 将 https:// 替换为 itms:// 或者 itms-apps://
- 验证用 ios 的手机,在 safari 打开这个链接,会弹窗提示跳转到 App Store
遇到的问题
- 在 App 提交审核是提示:你的 App 包含 NSUserTrackingUsageDescription,这表示它可能会请求追踪用户。要提交以供审核,请更新你的 App 隐私答复以注明从此 App 中收集的数据将用于追踪目的,或者更新你的 App 二进制文件并上传新的构建版本。 原因:你在 app 中使用了如 JPush 极光、广告等,会出现此时你就需要去去更新 App 的隐私协议,然后重新打包上传即可
- 解决 App Store 上架提示您必须上传 12.9 英寸 iPad Pro(第 2 代)显示屏的截屏 原因:在项目中选择了多种平台,去项目中进行
-
在配置打包证书时报错:Provisioning profile "XX" doesn't include signing certificate "xx developer
原因:在xcode中选择了手动配置证书和描述文件,但并不匹配所导致
-
如果是在 product -> Archive 报错:Profile doesn't include the selected signing certificate.
原因:如果在配置证书正常时,可能是钥匙串中有重复过期了证书
解决方案:将钥匙串和本 app 有关的证书删除,重新导入后,重启 Xcode,重新打包即可