新版本的AndroidStudio生产签名文件打包失败 您所在的位置:网站首页 csgo的签名文件失败什么意思呀 新版本的AndroidStudio生产签名文件打包失败

新版本的AndroidStudio生产签名文件打包失败

2024-07-04 19:06| 来源: 网络整理| 查看: 265

最近在创建新项目的时候,使用AS生产新的签名并打包时,打包失败,一开始报签名格式问题,查了一下,有的说要迁移到行业标准格式PKCS12,但是试了一下还是报错,再次查资料发现是JDK版本问题,不过还有报这个错的:

Execution failed for task ':app:packageRelease'. > A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable    > com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "E:\...\analysis.jks": Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available 

这是因为在jdk11环境导致的。在jdk11的环境下,使用AS生成签名文件对App进行签名,但是再进行签名时报出 Algorithm HmacSHA256 not available 的异常。

解决过程 单纯从日志观察是无法从AS生成的签名密钥存储文件(analysis.jks)中获取签名密钥(key0),而出现这个问题的原因是 HmacSHA256 这个算法不可用。

所以根本的原因就是 HmacSHA256 这个算法的问题,那么为什么这个算法不可用呢?

在网上看到相关的资料时怀疑可能是JDK版本的问题(网上的解释是JDK11中 HmacSHA256 这个算法不存在),推荐将JDK版本进行回退到1.8版本或者升级到16版本。但是我这边项目由于依赖问题无法将JDK版本进行升级或者回退。当然我也将回退方法贴出来... ————————————————

           

但是有一点很奇怪的事儿,我在JDK11的环境上对其他项目(存在签名密钥存储文件)进行编译出包是正常的。所以我怀疑出现这个问题可能是AS生成的签名密钥存储文件导致的。

所以我就本地生成了一个密钥存储文件,没想到问题就解决了...具体生产命令如下:

     

说明:

生成密钥文件的命令 keytool -genkeypair -alias key0 -keyalg RSA -keysize 2048 -validity 100000 -keystore analysis.jks

-genkeypair --- 产生密钥

-alias key0 --- 密钥的别名 key0

-keyalg RSA --- 使用RSA算法对签名文件进行加密

-keysize 2048 --- 密钥文件的大小为 2048

-validity 100000 --- 生成的签名文件的有效期为100000天

-keystore analysis.jks --- 生成签名文件的存放路径(自定义)

对Apk进行签名 jarsigner -verbose -keystore analysis.jks -signjar app-debug-sign.apk app-debug.apk analysis.jks

-verbose --- 输出详细信息

-keystore analysis.jks ---签名过程中使用的签名文件(注意使用key的绝对路径)

-signjar app-debug-sign.apk app-debug.apk analysis.jks --- 正式签名,三个参数依次为签名后的apk,待签名的apk以及签名文件,在这之后我也对本地签名进行了行业标准格式PKCS12迁移,打包就可以了,以此作为记录,如有遇到的朋友,可以照此方法解决

       参考这位博主的文章,原文链接:https://blog.csdn.net/HaveFun_Wine/article/details/129836042



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有