HBuilderX打包apk,加固并重新加签
1、apk安卓打包
- 打包前需要修改文件
constants.js
//访问接口URL,正式环境
const BASE_URL = "http://www.llsydn.com"
1.1、HBuilderX打包
工具栏:
发行-->原生App-云打包(P)
包名:com.llsydn.pro
证书别名:llsydn
证书密码:111111
证书文件:D:/llsydn.keystore文件
打包成功后的apk在这个目录下面:
1.2、llsydn证书制作
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。
可以使用JRE环境中的keytool命令生成。以下是windows平台生成证书的方法:
- 安装JRE(JAVA)环境(推荐使用JRE8环境,如已有可跳过)
这里就不做过多说明,可参考:JAVA环境变量配置
- 生成签名证书
使用keytool -genkey命令生成证书:
keytool -genkey -alias llsydn -keyalg RSA -keysize 2048 -validity 36500 -keystore llsydn.keystore
-alias llsydn:是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
llsydn.keystore:是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
-validity 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:\llsydn.keystore”。
注意:上述信息填写要规范,乱填有可能会影响应用上架应用市场。
- 查看证书信息
可以使用以下命令查看:
keytool -list -v -keystore llsydn.keystore
Enter keystore password: //输入密码,回车
会输出以下格式信息:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: llsydn
Creation date: 2023-6-1
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=xxxx, OU=xxxx, O=xxxx, L=xx, ST=xx, C=xx
Issuer: CN=xxxx, OU=xxxx, O=xxxx, L=xx, ST=xx, C=xx
Serial number: 7dd12840
Certificate fingerprints:
MD5: xx:xx:xx:xxx
SHA1: xx:xx:xx:xxx
SHA256: xx:xx:xx:xxx
Version: 3
其中证书指纹信息(Certificate fingerprints):
- MD5 证书的MD5指纹信息(安全码MD5)
- SHA1 证书的SHA1指纹信息(安全码SHA1)
- SHA256 证书的SHA256指纹信息(安全码SHA245)
1.3、apk加固加签
这里使用360加固保
工具下载地址:windows下载
下载完成后,可以直接解压使用。360jiagubao_windows_64.zip
自己注册账号,即可使用。
账号一: 177****9547/123456
账号二: 135****4606/123456
注意:未实名认证,每天加固的次数有限,这里建议谨慎使用,以免次数用完,导致当天无法加固。
添加应用,即可帮我们进行apk的加固。
由于加固的过程中,会将原来apk的签名删了,所以这里加固完成后,需要重新加签。
方式一:jarsigner
jarsigner 是 JDK 提供的针对 jar 包签名的工具,如果你本地已经安装了 Java 环境,会自带 jarsigner 。
jarsigner 只支持v1 签名。(有些应用市场上架需要v1、v2的话,需要使用方式二)
jarsigner -verbose -keystore llsydn.keystore -signedjar llsydn-jiagu-pre.apk llsydn-jiagu-next.apk llsydn
-keystore jupiter.jks:原来apk的证书文件
-signedjar 加固后.apk 加固前.apk:需要加固的apk和输出的apk目录
jupiter:证书别名
方式二:apksigner
apksigner 默认同时支持 v1 和 v2 签名。
apksigner 不是内部或外部命令,也不是可运行的程序
如果没有apksigner,这里提供一个下载地址:apksigner加签工具
使用v1、v2、v3进行签名
apksigner.bat sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --ks llsydn.keystore --ks-key-alias llsydn llsydn-jiagu-next.apk
apksigner.bat: apksigner加签工具
--ks jupiter.jks:证书文件
--ks-key-alias jupiter:证书别名
llsydn-jiagu-next.apk:需要签名apk,最后输出的也是这个(覆盖)
会发现多了一个后辍名为 .idsig 的,这个可以不用处理,直接删掉也没问题。
除了这个外,你会发现并没有新生成一个 Apk 文件,这是因为 apksigner 是直接对未签名的 Apk 包进行签名。
我们用 apksigner verify -verbose -print-certs
命令查看 llsydn-jiagu-next.apk
是否有签名
apksigner verify -verbose -print-certs llsydn-jiagu-next.apk
可以看到已经使用了v1、v2、v3签名成功。
查看apk的签名信息?
keytool -printcert -jarfile llsydn-jiagu-next.apk
对比加固后apk签名是否一致即可。
1.4、apk其他说明
- ApkToolkit安卓反编译工具测试。
ApkToolkit安卓反编译工具、android反编译apk常用工具、判断apk是否加固或混淆
- 计算apk的md5
- 小米技术支持
乐固、360加固在android 11 上报错,无法安装
将目标SDK修改的低于30 即可
我这边是修改成29,来处理了这个问题;
cpu类型
小米应用市场,需要提交32位,64位的apk包,这里打包做个兼容即可,同时支持32位,和64位,就不需要打两个apk包了。
- armeabi-v7a 第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。
- arm64-v8a 第8代、64位ARM处理器(ARM64位),最近两年新发的设备使用此CPU类型,可以兼容使用armeabi-v7a的so库。
好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!
个人理解,可能也不够全面,班门弄斧了。
好了,今天就先到这里了!!!^_^
如果觉得有收获的,帮忙点赞、评论、收藏
一下,再走呗!!!
转载自:https://juejin.cn/post/7239528592882958394