在360平台上传apk包时遇到如下问题:
警示:您的应用的签名算法采用“SHA256withRSA”,在部分4.2以下安卓版本的手机上不能安装。
解决办法:
1.先构建一个apk包出来, 打开android studio, 依次点击build->Generate signed bundle/apk, 选择apk, 点击next, 填写keystore配置, 选择发布版本, 构建.
2.打开360加固助手, 应用加固->签名设置, 去掉 启动自动签名,如下图:
3.然后推到加固页面, 开始加固apk包.
4.对已经加固的apk包进行签名, 使用SHA1withRSA加密算法, 完整命令如下:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 你存放keystore的绝对路径 -signedjar signed.apk jiagu.apk keystore_alias
这里解释一下jarsigner这个命令行工具的几个主要参数的意义:
-sigalg 即signature algorithm签名算法, 上360平台需要使用SHA1withRSA加密算法
-digestalg 摘要算法的名称, 这里使用SHA1
-keystore 对应你的apk的keystore文件的绝对路径
-signedjar 填写签名后你想保存的apk名称
最后两个参数, 一个是已加固未签名的apk文件路径, 另一个是你的keystore文件在打包设置的别名
jarsigner --help
用法: jarsigner [选项] jar-file 别名
jarsigner -verify [选项] jar-file [别名…]
[-keystore ] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 私有密钥的口令 (如果不同)
[-certchain <文件>] 替代证书链文件的名称
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件
[-verbose[:suboptions]] 签名/验证时输出详细信息。
子选项可以是 all, grouped 或 summary
[-certs] 输出详细信息和验证时显示证书
[-tsa ] 时间戳颁发机构的位置
[-tsacert <别名>] 时间戳颁发机构的公共密钥证书
[-tsapolicyid ] 时间戳颁发机构的 TSAPolicyID
[-tsadigestalg <算法>] 时间戳请求中的摘要数据的算法
[-altsigner <类>] 替代的签名机制的类名
(此选项已过时。)
[-altsignerpath <路径列表>] 替代的签名机制的位置
(此选项已过时。)
[-internalsf] 在签名块内包含 .SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库具有受保护验证路径
[-providerName <名称>] 提供方名称
[-addprovider <名称> 按名称 (例如 SunPKCS11) 添加安全提供方
[-providerArg <参数>]] … 配置 -addprovider 的参数
[-providerClass <类> 按全限定类名添加安全提供方
[-providerArg <参数>]] … 配置 -providerClass 的参数
[-strict] 将警告视为错误
[-conf ] 指定预配置的选项文件
[-? -h --help] 输出此帮助消息
If you get help from this article, please buy me a cup of coffee.