【问题标题】:Android Studio: Error:org.gradle.tooling.BuildException: Failed to generate v1 signatureAndroid Studio:错误:org.gradle.tooling.BuildException:无法生成 v1 签名
【发布时间】:2018-01-14 09:53:07
【问题描述】:

问题出现在 Android Studio 3.0 中。

当我创建一个新项目时,一切正常,但一段时间后,错误

错误:org.gradle.tooling.BuildException:无法生成 v1 签名

开始自动出现,导致 gradle 失败。

当我使用 --stacktrace 运行它时,它显示了以下内容:

信息:Gradle 任务 [:app:assembleDebug]

错误:org.gradle.tooling.BuildException:无法生成 v1 签名

错误:java.io.IOException:无法生成 v1 签名

错误:java.security.InvalidKeyException:无法使用签名者“CERT”进行签名

错误:java.security.InvalidKeyException:使用 SHA1withDSA 签名失败

Error:java.security.InvalidKeyException: SHA-1 摘要算法的安全强度不足以满足此密钥大小

信息:1s 内构建失败

5 个错误 0 个警告

这是 Gradle 控制台的完整 Gist Gist

我正在使用带有 JDK 8 X64 的 Windows 10 X64。

任何解决此问题的帮助将不胜感激!

【问题讨论】:

  • 我也看到了这一点 - 一些研究表明 Java 8“keytool”程序更改了一些默认设置,并且它生成的密钥不适用于使用旧 Java 版本进行签名,除非某些选项被改变。建议是把 SHA1 改成 SHA256,但是我不知道怎么做。
  • 但即使是 Android Studio 的嵌入式 JDK 也无法正常工作,关键是,Android Studio 团队不应该在发布之前至少测试他们的嵌入式 JDK 吗?...
  • 我使用的是android studio 3.0,它工作正常。

标签: java android android-studio gradle java-8


【解决方案1】:

我发现我可以通过使用以下命令行构建一个新的密钥文件来解决此问题,如https://developer.android.com/studio/publish/app-signing.html 所述:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

具体来说,我认为问题在于默认值已在某个时候从 RSA 更改为 DSA,并且这些工具无法正确处理大型 DSA 密钥。

【讨论】:

  • 使用新的密钥文件,上传到Play商店,它显示“您的Android App Bundle使用错误的密钥签名。确保您的App Bundle使用正确的签名密钥签名,然后重试。您的应用捆绑包应使用带指纹的证书进行签名:"
【解决方案2】:

尝试将以下内容添加到 build.gradle 并重新构建。

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

【讨论】:

猜你喜欢
  • 2018-02-18
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
相关资源
最近更新 更多