文章目录
前言
uni-app简单易用,但持续集成是个问题,因为官方没有提供完整的解决方案,需要我们自行拼装。尤其让人费解的是,官方提供的cli命令工具还依赖HBuilderX这个IDE。
关键:采用uni命令行生成本地资源,然后导入到Android工程里构建即可。
基本概念
uniapp 基座、标准基座、自定义基座
基座就是原生层,js、html、css都要运行在原生层,有了基座,vue(js/html/css)才可以在真机上运行。
标准基座就是没有添加任何原生插件的基座。
项目中如果有nvue文件,那么要放到基座中,标准基座+自定义原生=自定义基座,自定义基座的最大特性就是,可以热加载。
可以将真机想象成操作系统,基座在操作系统之上,js/html/css则在基座之上,只要有nue,就要用自定义基座。
传统打包、快速安心打包
打包就是生成可以在真机上可运行的目标文件,无论IOS还是android,打包时都要用证书,证书用来对包签名,以证明这个包的身份,在具体打包时又有差异,安卓不区分开发、正式环境,可参考Android平台签名证书(.keystore)生成指南,ios区分环境,需要两套证书(开发测试环境、正式环境),可参考iOS证书(.p12)和描述文件(.mobileprovision)申请
传统打包就是云打包,将基座、代码、证书都提交到云端;注意,传统打包,超过40M时,要收费。为了省钱,我往往选择打正式包,就是调试时麻烦点,好处是省钱。
安心打包就是,只将模块配置信息提交到云端,生成原生代码包(不包含应用代码、证书信息),然后下载到本地,将应用代码添加到原生代码包中,生成未签名安装包,使用本地的证书签名生成安装包。
注意事项
Windows环境:仅Android平台支持安心打包,iOS暂不支持;MacOSX环境:Android和ios都支持安心打包。
自定义调试基座不支持安心打包
使用DCloud老版证书不支持安心打包
总体流程
和React native以及其它跨端技术一样,总体分为两步:
-
构建uni-app,将生成物放到android项目中。生成本地资源有两种方式:
- 1.选择项目 -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源
- 2.通过cli命令生成本地打包App资源
- 1.选择项目 -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源
-
将app资源拷贝到项目assets->apps下,目录结构如下图:
修改dcloud_control.xml中的appid为uni-app的id,确保dcloud_control.xml中的appid与manifest.json中的id与文件夹名一致,如下图所示:
-
构建android项目
CICD流程
ubuntu系统上的jenkins部署基础指令,发送给windows服务器上,windows服务器使用HBuilderX软件的cli.exe执行相关cli命令打包,然后jenkins再调用接口下载打包后的文件。
cli
app打包-wgt包(适用于热更新)
WGT文件是WebApp的一种打包格式,全名为"Widget Installation Package"。 它是一种特殊的ZIP压缩文件格式,通常包含应用程序的相关资源,如HTML、CSS、JavaScript代码以及应用所需的图像资源、字体和其他文件。我们在打包App,以后每次更新都得去打包一次Apk,而每次上传,别人都得重新下载一次Apk,这样会很麻烦,每次用户更新都得去再次下载App。我们如果只更改了一点点东西,用户如何不需要再次下载App如果是没有太大的修改,只修改bug和部分功能我们就可以利用 wgt包进行替换。
{
HBUILDERX_CLI} publish --platform APP --project {
PACK_PROJECT} --type wgt
本地资源生成
package.json里添加: