离线打包app步骤
其中有一些坑要注意,以及对于不熟原生工程的人可以看看。
几个特点:
1、相比云打包,不需要在苹果开发者后台手动生成描述文件。
2、也不需要下载证书到本地安装,再导出p12文件。但是生成的证书开发者平台里不能删除。
准备工作:
苹果开发者后台:
1、手动生成certificate。在Software里选择“iOS Distribution (App Store and Ad Hoc)”或“iOS App Development”。实际操作中,另外几个我也点击了生成,怕出错就没有删除。
2、手动生成identifier。每一个app都需要生成一个,选择“App IDs”。bundle Id填写app的唯一id。命名规则可以按反向域名,例如 自己的域名是 meta.com,那么就可以写com.meta.应用的名称。
这个一般情况下勾选,其他的看需求。
uniapp准备工作:
1、申请需要打包的app的appkey,官方有文档就不再说明(https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey)。
2、下载最新的ios离线打包sdk,其实就是一个hbuilder hello的工程项目。注意的是按照官方说法,sdk的版本号必须和hbuilder的版本号一致。比如hbuilder用正式版,sdk用预览版就不行。
3、hbuilder中选择“原生app本地打包”-》“生成本地app打包资源”。生成一个以“uni-app应用标识”的文件夹,例如__UNI__E27A345。
打包方法:
官方文档:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios
1、用xcode打开“iOSSDK@3.2.16.80725_20211122/HBuilder-Hello/HBuilder-Hello.xcodeproj”。
2、把hbuilder打包的离线app打包资源文件夹拷贝到“iOSSDK@3.2.16.80725_20211122/HBuilder-Hello/HBuilder-Hello/Pandora/apps”。
3、修改info.plist里的dcloud_appkey为之前申请的appkey。
4、修改control.xml。注意每次都要检查该文件,因为如果换app打包的时候就需要修改为需要打包的appid和版本号。具体看https://nativesupport.dcloud.net.cn/AppDocs/importfeproject/ios。
5、配置要打包的app的基本资料。
注意:如果bundle identifier不可改,则参考第11步
display name=name manifest.json里的应用名称
bundle identifier=之前苹果开发者后台申请的 “bundle Id”。
version=versionName manifest.json里的应用版本名称
build=code manifest.json里的应用版本号
6、配置app的图标。可以先在hbuilder里更换app图标(上传一张1024*1024的图片,其他尺寸会自动生成,然后此处直接选取之前生成好的图片。
7、配置app启动界面。此处直接使用了uniapp官方提供的方案,但是需要修改启动界面显示的图标。
注意:由于不熟悉文件修改方式,我直接替换了项目里的 dclogo@2x.png和dclogo@3x.png。此时本地测试时,启动界面会先显示下官方的h图标,然后迅速切换到我们换的图标,不过安装到手机后没有这个问题。
8、模块配置部分见官方文档。
9、(可选)如果后续打包时报错,则需要把这里全部改成 apple development。可查看
10、配置sign(release),由于我打包时跳过了debug所以,debug的配置就不介绍了,其实是一样的。
勾选 automatically manage signing。首次选择时会让登录apple id。这也就是离线打包时不需要下载证书的原因。
勾选后,team里可以直接选苹果开发者后台里的组织,我感觉此时也会自动匹配certificate。
bundle identifier=bundle id,别填写错了类似这个 com.meta.facebook。
注意:此时如果出现如下的报错信息,则需要执行第九步。
11、(可选)打包时如果报错可以执行。错误信息类似:The provisioning profile specified in your build settings ("test") has an AppID of "com.meta.facebook" which does not match your bundle identifier "com.meta.facebook"。
修改bundle identifier 只在info.plist中修改并没有完,还需要把Build Settings中Package分栏下的Product Bundle Identifier改成新的“com.meta.facebook”
12、(可选)如果打包时报错可以执行。错误信息类似如下:
可参考:https://www.jianshu.com/p/36a5ba85c1e5
意思就是app没有使用后台任务,但是勾选了如下服务。
解决方式如下:
13、(可选)如果Archive按钮一直为灰色不可点击可执行。
解决办法:目前的运行配置是使用模拟器,改成“iOS Device”即可。
14、点击product/archive。然后等待执行,后续可以一直默认下一步。此时不要预先到苹果开发者后台创建app基本信息,当前操作会自动创建,然后可以等上传成功后再去调整。
15、发布到testflight内部测试时,不需要提交审核,上传成功后5分钟后即可直接在内侧组用户里下载测试。