背景
uni-app 内网开发,打包时需要登录
HBuilder X才能进行下一步,巨坑
方式一 和 方式二,都需要登录的,推荐方式二,不放心继续使用方式一
打包方式一
基本流程
hubderx账号登录,生成本地打包资源- 生成一个离线key,登录uni控制台,找到当前项目,进行替换修改信息
- 下载uni案例
- 打开
android studio,导入案例中的HBuilder-Integrate-AS项目 - 开始替换相关资源,且进行配置
- 打包
详细步骤
安装android studio
注意:因为是压缩包,下载后有的依赖会缺失,需要进一步安装
生成密钥key
一直点下一步
然后配置电脑用户变量,变量值指向安装后的位置
| 变量名 | 变量值 |
|---|---|
| JAVA_HOME | E:\application\Java\jdk-8u144 |
配置用户变量——path
%JAVA_HOME%\bin
生成签名证书
参考:链接
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 控制台添加密钥
把生成的密钥内容添加进去
uni-app打包
配置android studio
- 下载uni案例,下载的版本需要和当前hubderx版本一致
- 导入
HBuilder-Integrate-AS文件夹
把uni打包后的资源进行替换
- 替换自己的appid
- 密钥id添加
- 密钥文件导入,位置随便,记住就好
-
账号密码修改,signingConfigs的密码要和你生成的密钥密码一致
-
执行打包
- 打包成功
其他链接
打包方式二
云打包--- 安心打包
不上传代码和证书,不再和以前一样了,需要上传所有代码,最后给你一个链接
可以理解为,他给你远端提供app配置项,远端生成apk模块,然后下载到本地,本地打包项目,然后添加到apk模块,最后打包成apk
安心打包原理
-
首次打包
- HBuilderX会提交App的模块配置信息到云端,在云端打包机生成原生代码包(不包含应用代码、证书信息)
- HBuilderX下载原生代码包,在本地电脑上将应用代码添加到原生代码包中,生成未签名安装包
- 缓存原生代码包,用于下次打包复用
- 在本地电脑上使用打包证书对未签名安装包进行签名操作,生成安装包
-
非首次打包
-
HBuilderX判断缓存的原生代码包是否可以复用,如果没有修改App模块配置或影响原生代码包配置操作继续下一步,否则转
首次打包流程,以下情况也会触发首次打包流程:
-
使用了uni原生插件,本地无法判断原生插件是否更新了,因此项目中只要包含uni原生插件都会走
首次打包流程 -
HBuilderX更新,本地缓存原生代码包需要更新,需要走
首次打包流程生成新版本原生代码包
- 将修改后的应用代码添加到原生代码包中,生成未签名安装包
- 在本地电脑上使用打包证书对未签名安装包进行签名操作,生成安装包
-
因为大多数打包,并不改动原生部分(主要是manifest.json),只修改前端代码。此时将无需从云端打包机下载原生包,打包速度会非常快。