离线打包app步骤

其中有一些坑要注意,以及对于不熟原生工程的人可以看看。

 

几个特点:

1、相比云打包,不需要在苹果开发者后台手动生成描述文件。

2、也不需要下载证书到本地安装,再导出p12文件。但是生成的证书开发者平台里不能删除。

 

准备工作:

苹果开发者后台:

1、手动生成certificate。在Software里选择“iOS Distribution (App Store and Ad Hoc)”或“iOS App Development”。实际操作中,另外几个我也点击了生成,怕出错就没有删除。

app ios云打包测试 uni uniapp苹果打包_app ios云打包测试 uni

 

2、手动生成identifier。每一个app都需要生成一个,选择“App IDs”。bundle Id填写app的唯一id。命名规则可以按反向域名,例如 自己的域名是 meta.com,那么就可以写com.meta.应用的名称。

这个一般情况下勾选,其他的看需求。

app ios云打包测试 uni uniapp苹果打包_bundle_02

 

 

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。

app ios云打包测试 uni uniapp苹果打包_开发者_03

 

 4、修改control.xml。注意每次都要检查该文件,因为如果换app打包的时候就需要修改为需要打包的appid和版本号。具体看https://nativesupport.dcloud.net.cn/AppDocs/importfeproject/ios。

app ios云打包测试 uni uniapp苹果打包_bundle_04

 

 

5、配置要打包的app的基本资料。

注意:如果bundle identifier不可改,则参考第11步

display name=name manifest.json里的应用名称

bundle identifier=之前苹果开发者后台申请的 “bundle Id”。

version=versionName  manifest.json里的应用版本名称

build=code manifest.json里的应用版本号

app ios云打包测试 uni uniapp苹果打包_app ios云打包测试 uni_05

 

 

 

app ios云打包测试 uni uniapp苹果打包_开发者_06

 

 

6、配置app的图标。可以先在hbuilder里更换app图标(上传一张1024*1024的图片,其他尺寸会自动生成,然后此处直接选取之前生成好的图片。

app ios云打包测试 uni uniapp苹果打包_开发者_07

 

 

7、配置app启动界面。此处直接使用了uniapp官方提供的方案,但是需要修改启动界面显示的图标。

注意:由于不熟悉文件修改方式,我直接替换了项目里的 dclogo@2x.png和dclogo@3x.png。此时本地测试时,启动界面会先显示下官方的h图标,然后迅速切换到我们换的图标,不过安装到手机后没有这个问题。

app ios云打包测试 uni uniapp苹果打包_ide_08

 

 

app ios云打包测试 uni uniapp苹果打包_app ios云打包测试 uni_09

 

 

8、模块配置部分见官方文档。

9、(可选)如果后续打包时报错,则需要把这里全部改成 apple development。可查看

app ios云打包测试 uni uniapp苹果打包_app ios云打包测试 uni_10

 

 

 10、配置sign(release),由于我打包时跳过了debug所以,debug的配置就不介绍了,其实是一样的。

勾选 automatically manage signing。首次选择时会让登录apple id。这也就是离线打包时不需要下载证书的原因。

勾选后,team里可以直接选苹果开发者后台里的组织,我感觉此时也会自动匹配certificate。

bundle identifier=bundle id,别填写错了类似这个 com.meta.facebook。

注意:此时如果出现如下的报错信息,则需要执行第九步。

app ios云打包测试 uni uniapp苹果打包_ide_11

 

 

app ios云打包测试 uni uniapp苹果打包_ide_12

 

 

 

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”

app ios云打包测试 uni uniapp苹果打包_ide_13

 

12、(可选)如果打包时报错可以执行。错误信息类似如下:

可参考:https://www.jianshu.com/p/36a5ba85c1e5

意思就是app没有使用后台任务,但是勾选了如下服务。

app ios云打包测试 uni uniapp苹果打包_ide_14

 

解决方式如下:

app ios云打包测试 uni uniapp苹果打包_bundle_15

 

 

13、(可选)如果Archive按钮一直为灰色不可点击可执行。


解决办法:目前的运行配置是使用模拟器,改成“iOS Device”即可。

14、点击product/archive。然后等待执行,后续可以一直默认下一步。此时不要预先到苹果开发者后台创建app基本信息,当前操作会自动创建,然后可以等上传成功后再去调整。

15、发布到testflight内部测试时,不需要提交审核,上传成功后5分钟后即可直接在内侧组用户里下载测试。