最近在开发基于uniapp框架的app,到了打包发布的阶段,来尝试打包为安卓安装包。在用HBuild打包的时候需要提供安卓的数字证书(.keystore 文件), 用于表明开发者的身份。需要在本地生成安卓证书后才能打包。
我们需要本机有JRE(Java Runtime Environment)环境。我们需要安装Java SE。下载对应系统的文件,我这里下载的是jdk-16.0.1_osx-x64_bin.dmg,然后开始安装。
安装好后进入目录:
cd /Library/Java/JavaVirtualMachines/jdk-23.jdk/Contents/Home/bin
然后使用签名工具keytool开始生成证书:
keytool -genkey -v -alias 证书别名 -keyalg RSA -keysize 2048 -validity 36500 -keystore /Users/zhuangyuan/Downloads/证书名字.keystore
注意zhuangyuan你要改成你MAC机子上的用户账户名;证书别名 和 证书名字 替换成你的证书名字(用英文字母)
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,回车
然后在生成的过程中需要记得你设置证书的密钥口令,然后其他的就是输入个人信息即可。生成后去对应的位置可以找到证书文件:证书名字.keystore
然后在HBuild里面选择发行 -> 原生app云打包,在出现的弹框中选择我们前面生成的证书,填入证书别名和密钥口令:
但出现红色错误提示:证书文件不是有效的keystore文件!!!
百度后解决方法需要更改密钥库类型为JKS:
keytool -importkeystore -srckeystore /Users/zhuangyuan/Downloads/证书名字.keystore -destkeystore /Users/zhuangyuan/Downloads/证书名字.keystore -deststoretype JKS
回车后需要输入你最设置的密钥口令,再回车就成功了。
用更改后的开始安卓打包,顺利可行。
使用 jdk 中自带的 keytool 工具,查看证书信息命令: keytool -list -v -keystore {路径及名称}.keystore
输入证书口令后,可以查看证书指纹:SHA1、SHA256
华为应用市场要求打包sing.zip文件,MAC机没必要拷贝pepk.jar和证书文件到java下的bin目录,用全路径一样。
java -jar /全路径/pepk.jar --keystore /全路径/****.keystore --alias ****** --output=/全路径/sign.zip --encryptionkey=034200041E224EE22B45D19B23DB91BA9F52DE0A06513E03A5821409B34976FDEED6E0A47DBA48CC249DD93734A6C5D9A0F43461F9E140F278A5D2860846C2CF5D2C3C02 --include-cert