温馨提醒:打包时targerSdkVersion设置要大于28,要不然鸿蒙系统拍照后读取不到图片文件
两种方式:
1.使用java的jdk(jdk安装就不做说明了,网上一大堆)
cmd进入bin目录下,生成签名文件,执行:
keytool -genkey -alias smokeTest
(签名文件别名) -keyalg RSA -sigalg SHA1WithRSA -validity 40000 -keysize 1024 -keystore smokeTest
(签名文件名称).keystore
smokeTest是使用smokeTest.keystore签名文件打包的
这里的smokeTest是经过加固软件加固的,我使用的是百度加固,腾讯加固也可以,加固后签名文件丢失(重新签名必须与打包时的签名一致,要不重新签名后的apk安装后打不开)
重新签名执行:
jarsigner -verbose -keystore smokeTest(签名文件名称)
.keystore -signedjar smokeTest_out.apk (重新签名后输出的apk)
smokeTest.apk(重新签名的apk)
smokeTest(签名别名)
特别说明:签名是v1,等保测试不会通过
2.使用android的sdk进行v1 + v2签名
https://www.androiddevtools.cn/(此地址下载)
解压后双击“SDK Manager.exe”,启动SDK Manager安装工具
安装成功后进入对应版本查看是否有apksigner.bat
有的话cmd进入版本号如下图:
对加固后的apk进行v1 + v2签名:
apksigner sign --ks smokeTest.keystore --out smokeTest_out.apk(签名后输出的apk)
--v2-signing-enabled true(开启v2签名
) smokeTest.apk(加固后无签名的apk)
重要选项:
以下选项指定要应用于签名者的基本设置:
--out <apk-filename>
您将要保存已签名 APK 的位置。如果未明确提供此选项,则 APK 软件包将就地签名,并替换输入的 APK 文件。
--min-sdk-version <integer>
apksigner 用来确认 APK 签名将通过验证的最低 Android 框架 API 级别。该级别值越高,表示该工具在为应用签名时可使用的安全参数越强,
但这会限制 APK 只能用于搭载更新版本 Android 的设备。
默认情况下,apksigner 会使用应用清单文件中的 minSdkVersion 属性的值。
--max-sdk-version <integer>
apksigner 用来确认 APK 签名将通过验证的最高 Android 框架 API 级别。
默认情况下,该工具会使用尽可能高的 API 级别。
--v1-signing-enabled <true | false>
确定 apksigner 是否会使用基于 JAR 的传统签名方案为给定的 APK 软件包签名。
默认情况下,该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
--v2-signing-enabled <true | false>
确定 apksigner 是否会使用 APK 签名方案 v2 为给定的 APK 软件包签名。
默认情况下,该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
--v3-signing-enabled <true | false>
确定 apksigner 是否会使用 APK 签名方案 v3 为给定的 APK 软件包签名。
默认情况下,该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
--v4-signing-enabled <true | false | only>
确定 apksigner 是否会使用 APK 签名方案 v4 为给定的 APK 软件包签名。此方案会在单独的文件 (apk-name.apk.idsig) 中生成签名。
如果为 true 并且 APK 未签名,则系统会根据 --min-sdk-version 和 --max-sdk-version 的值生成 v2 或 v3 签名。然后,该命令会根据
已签名的 APK 的内容生成 .idsig 文件。使用 only 仅生成 v4 签名,而不会修改 APK 及其在调用前具有的任何签名;如果 APK 没有
v2 或 v3 签名,或者签名使用的密钥不同于为当前调用提供的密钥,则 only 会失败。
默认情况下,该工具会使用 --min-sdk-version 和 --max-sdk-version 的值来决定何时采用此签名方案。
特别说明:打包apk时minSdkVersion设置不能大于Android7.0(24)要不然的话v1签名签不上,默认签出来是v2+v3
查看签名:
上述方法是我经过多次测试的,有问题欢迎提问(加固使用的是百度加固,最后再说明下加固配置so文件不可加固,要不然apk安装后也会打不开)