uni-app在Windows环境下(云端)打包成安卓安装包
准备工作
IDE下载安装和帐号注册
HBuilderX开发工具下载:https://www.dcloud.io/hbuilderx.html
前往https://ask.dcloud.net.cn/account/setting/profile/注册帐号,必须要绑定手机。
或者使用公用测试证书:https://ask.dcloud.net.cn/article/36522
安装java-se环境
下载安装:https://www.oracle.com/technetwork/java/javase/downloads/index.html
生成证书
Android平台签名证书(.keystore)生成
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。Android证书的生成是自助和免费的,不需要审批或付费。
安装好1.2中的java环境后,比如我的是装在D:\software\javase\bin
建议将JRE安装路径添加到系统环境变量,已配置可跳过此章节打开命令行(cmd),输入以下命令:
d:
setPATH=%PATH%;"D:\software\javase\bin"
- 第一行:切换工作目录到D:路径
- 第二行:将jre命令添加到临时环境变量中
生成签名证书(官方,有bug,请参考2.3)
使用keytool -genkey命令生成证书:
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 <testalias>
(RETURN if same as keystore password):
//确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
证书文件密码要牢记,打包的时候需要填写。
以上命令运行完成后就会生成证书,路径为“D:\test.keystore”。当然这是默认路径的。
可行的生成证书方法
如果按照1.4中的步骤,生成的证书在加载时,会提示:证书文件不是有效地keystore文件,经过查询,可以使用如下方式解决:
https://zhuanlan.zhihu.com/p/499813377(原文)
这里,我要将证书生成到E:\code\uni-app-test目录下:
在云打包时提示证书文件不是有效地keystore文件,解决方法:
第一步:生成正常证书
keytool -genkey -alias unilearns -keyalg RSA -sigalg SHA1WithRSA -validity 36500 -keysize 1024 -keystore E:\code\uni-app-test\unilearns.keystore -v
第二步:更改秘钥库类型
keytool -importkeystore -srckeystore E:\code\uni-app-test\unilearns.keystore -destkeystore E:\code\uni-app-test\unilearns.keystore -deststoretype JKS
到这里,就可以使用新生成的证书进行云打包了。
查看证书信息
可以使用以下命令查看:
keytool -list -v -keystore test.keystore
Enter keystore password://输入密码,回车
如果提示“keytool' 不是内部或外部命令,也不是可运行的程序”那么就应该进入你的java-se安装目录-bin目录下,比如我java-se安装在software下,那么,应该执行(切记-list -v之间有空格!):
keytool -list -v -keystore E:\code\uni-app-test\unilearns.keystore
不要进入到keystore目录下执行查看!
解决方式参考:https://blog.csdn.net/lplj717/article/details/119241631
云端打包
更换app图标
APP图标等,在HB中的manifest.json中进行替换。推荐做一个1024x1024尺寸的图标,然后使用其可视化的界面,一键生成所有图标即可。或者使用图标工厂生成:
打包
在编辑好文档后,在“发行”-“原生APP-云打包”
使用自有证书进行云端打包,选择配置项如下:
- App包名:Android应用包名,推荐使用反向域名风格的字符串,如“com.domainname.appname”;
- 证书别名:生成证书时使用-alias参数设置的证书别名(2.2中的testalias,-alias后面的名称!);
- 证书私钥密码:生成证书时使用的keystore密码(2.2中生成证书时,提示要输入的密码,填写在此处。【Enter keystore password://输入证书文件密码,输入完成回车:这个步骤输入的密码!】);
- 证书文件:生成证书时使用-keystore参数设置的证书保存路径。
备注:已经打好的安装包,允许开发者在指定天内下载指定次数,超时或超次后服务器端会清除文件。
打包失败,常见原因
- 如果使用自用证书,很可能是证书配置错误。
- 如果使用DCloud证书仍然出错,很可能是图片错误。所有图片格式必须是
标准png
,且严格符合分辨率要求。使用其他图片格式重命名为png会导致打包失败!