uni-app 离线打包教程

1,556 阅读5分钟

背景

uni-app 内网开发,打包时需要登录HBuilder X才能进行下一步,巨坑
方式一 和 方式二,都需要登录的,推荐方式二,不放心继续使用方式一

打包方式一

基本流程

  1. hubderx账号登录,生成本地打包资源
  2. 生成一个离线key,登录uni控制台,找到当前项目,进行替换修改信息
  3. 下载uni案例
  4. 打开android studio,导入案例中的HBuilder-Integrate-AS项目
  5. 开始替换相关资源,且进行配置
  6. 打包

详细步骤

安装android studio

  1. 下载版本2022,最新可去官网下载(免费的)
  2. 安装,傻瓜式安装即可,可参考教程

注意:因为是压缩包,下载后有的依赖会缺失,需要进一步安装

生成密钥key

  1. 安装需要的jdk1.8,链接
  2. 安装教程,链接,傻瓜式安装

image.png

一直点下一步

然后配置电脑用户变量,变量值指向安装后的位置

image.png

变量名变量值
JAVA_HOMEE:\application\Java\jdk-8u144

配置用户变量——path

%JAVA_HOME%\bin

image.png

生成签名证书

参考:链接

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore

testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
回车后会提示:
Enter keystore password: //输入证书文件密码,输入完成回车
Re-enter new password: //再次输入证书文件密码,输入完成回车
What is your first and last name?
[Unknown]: //输入名字和姓氏,输入完成回车
What is the name of your organizational unit?
[Unknown]: //输入组织单位名称,输入完成回车
What is the name of your organization?
[Unknown]: //输入组织名称,输入完成回车
What is the name of your City or Locality?
[Unknown]: //输入城市或区域名称,输入完成回车
What is the name of your State or Province?
[Unknown]: //输入省/市/自治区名称,输入完成回车
What is the two-letter country code for this unit?
[Unknown]: //输入国家/地区代号(两个字母),中国为CN,输入完成回车
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: //确认上面输入的内容是否正确,输入y,回车
Enter key password for  
(RETURN if same as keystore password): //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以  
以上命令运行完成后就会生成证书,路径为“D:\test.keystore”。

使用 命令 keytool -list -v -keystore sim.jks 查看自己的jks文件信息 可以使用 c:\sim.jks 添加文件路径 keytool -list -v -keystore c:\sim.jks

然后 根据当前信息进行 jsk文件信息修改 keytool -changealias -keystore sim.jks -alias key0 -destalias station-yard key0 是当前别名 station-yard 是目标别名(自己随便命名)

uni-app 控制台添加密钥

image.png

把生成的密钥内容添加进去

uni-app打包

image.png

image.png

配置android studio

  1. 下载uni案例,下载的版本需要和当前hubderx版本一致

image.png

  1. 导入HBuilder-Integrate-AS文件夹

image.png

把uni打包后的资源进行替换

  1. 替换自己的appid

image.png

  1. 密钥id添加

image.png

  1. 密钥文件导入,位置随便,记住就好

image.png

image.png

  1. 账号密码修改,signingConfigs的密码要和你生成的密钥密码一致 image.png

  2. 执行打包

image.png

image.png

image.png

image.png

  1. 打包成功

image.png

其他链接

  1. 官方教程-链接
  2. 参考教程-链接

打包方式二

云打包--- 安心打包


不上传代码和证书,不再和以前一样了,需要上传所有代码,最后给你一个链接
可以理解为,他给你远端提供app配置项,远端生成apk模块,然后下载到本地,本地打包项目,然后添加到apk模块,最后打包成apk

image.png

image.png

image.png

安心打包原理

  • 首次打包

    1. HBuilderX会提交App的模块配置信息到云端,在云端打包机生成原生代码包(不包含应用代码、证书信息)
    2. HBuilderX下载原生代码包,在本地电脑上将应用代码添加到原生代码包中,生成未签名安装包
    3. 缓存原生代码包,用于下次打包复用
    4. 在本地电脑上使用打包证书对未签名安装包进行签名操作,生成安装包
  • 非首次打包

    1. HBuilderX判断缓存的原生代码包是否可以复用,如果没有修改App模块配置或影响原生代码包配置操作继续下一步,否则转首次打包流程,以下情况也会触发首次打包流程:

    • 使用了uni原生插件,本地无法判断原生插件是否更新了,因此项目中只要包含uni原生插件都会走首次打包流程

    • HBuilderX更新,本地缓存原生代码包需要更新,需要走首次打包流程生成新版本原生代码包

    1. 将修改后的应用代码添加到原生代码包中,生成未签名安装包
    2. 在本地电脑上使用打包证书对未签名安装包进行签名操作,生成安装包

因为大多数打包,并不改动原生部分(主要是manifest.json),只修改前端代码。此时将无需从云端打包机下载原生包,打包速度会非常快。