Android Studio - Keystore被篡改,或密码错误

时间:2015-10-07 08:37:54

标签: java android keystore android-keystore

我正在尝试使用Android Studio v1.4中的内置窗口小部件生成已签名的APK。

然而,我遇到了这个恼人的错误

  

错误:任务':app:packageRelease'执行失败。   无法从商店读取密钥cc键" C:\ Users \ Lancelot \ Desktop \ release.jks":密钥库被篡改,或密码不正确

我能够检索我的密钥别名,如下面的屏幕截图所示 enter image description here

(为了到达此处,密钥库密码必须正确;否则它将显示错误)

然后我输入了我的密码,但签署APK时没有运气... 我甚至尝试使用命令行keytool -keypasswd -alias cckey -keystore C:\Users\Lancelot\Desktop\release.jks更改密钥密码。通过运行这个我需要在输入新密码之前正确输入旧密码,这一切都经过了;这证明关键密码在第一时间并没有错。

所以问题是,如果我的密钥存储密码,密钥别名和密钥密码都是正确的,那么它有什么问题呢?

17 个答案:

答案 0 :(得分:10)

显然我刚刚发现几个月前发布的另一个post解决了我几天挣扎的问题......

只需将密钥库和密钥别名密码更改为相同即可使其正常工作。虽然我在发布更新之前仍然不知道为什么同一个密钥库工作;在我更改密码之前不再工作了。

如果有人回答,请让所有人知道!

答案 1 :(得分:9)

更新我的应用程序时遇到类似的问题。密钥工具没有读取正确的密钥库文件,而是指向了我几个月前创建但未使用的旧密钥库文件。在线搜索了一些解决方案,但没有找到。几乎放弃了,但我考虑过通过单击 Build 然后 Clean Project 清理项目。这最后的手段对我有用。

答案 2 :(得分:6)

我遇到了同样的问题,而且我100%确定我的密码。我通过在命令行中添加-storepass直接找到了解决方案。使用此命令可以解决问题:

keytool -list -v -keystore C:\....\keystore.jks -storepass HereMyPassword -alias HereMyAlias

答案 3 :(得分:5)

显然,Google决定将默认密钥库密码设置为android

  

keytool实用程序会提示您输入密钥库的密码。调试密钥库的默认密码为android。然后keytool将指纹打印到终端。

请参阅https://developers.google.com/android/guides/client-auth

答案 4 :(得分:4)

我如何用android studio 2.2.3解决同样的问题

Android studio>>档案>项目结构

在左侧的模块下找到您的项目并选择它,然后单击签名选项卡。然后,您可以通过单击绿色加号图标创建新配置,并使用现有密钥库密钥填写签名上的所有凭据。 (确保您的"密钥elias""密码""存储密码"应与之前使用的密钥存储区相同;

然后转到flavors选项卡并选择创建的配置文件作为Signing config。

再次转到构建类型选项卡,然后选择创建的配置文件作为签名配置。

并且可以完成任务

快乐的编码:)

答案 5 :(得分:3)

确保常量定义后没有空格:

MYAPP_RELEASE_STORE_FILE=mykeystore.keystore
MYAPP_RELEASE_KEY_ALIAS=keyalias
MYAPP_RELEASE_STORE_PASSWORD=pass
MYAPP_RELEASE_KEY_PASSWORD=pass

答案 6 :(得分:2)

Android Studio 4.2 中似乎存在错误。 IDE 现在似乎将错误的密码永久缓存到密钥库或密钥中。

即使在两次重新输入正确的凭据后,IDE 也会缓存其中一个条目的错误值。在这篇文章中,我不得不在每次构建时手动重新输入两个密码。

更新:在下次生成 APK 时取消选中记住密码。然后,下次您可以重新检查记住密码,Android Studio 将重新缓存并记住正确的密码。

更新 2:令人难以置信的是,在执行上述步骤后,该错误随后再次出现。 Android Studio 再次用错误的密码覆盖其中一个密码,因此在解决此错误之前,我们似乎又回到了原点:永远清除保存密码复选框并手动输入每个构建的密码。 :-(

答案 7 :(得分:1)

就我而言,我从Evernote复制并粘贴了密钥库和密钥密码,而Android Studio无法正确处理它。手动输入密码后,我可以生成APK。

答案 8 :(得分:1)

同样的问题。我最接近解决它的方法是遵循@Makarand https://stackoverflow.com/a/59386198/3187095

的建议

就我而言,我怀疑问题是密码,因为 Android Studio 本身记住了它。尽管如此,它还是行不通。我无法在发布模式下生成 de APK 或 bundle。并获得与上述相同的消息。在这种情况下,必须有其他一些原因。

我在 executionHistory.bin 文件中找到了我的密码。它们是预期的,两者都是相同的。 我唯一的疑问是在 storePassword 和密码本身之间有一个符号:

因此,您可能会输入正确的密码,但仍然收到相同的消息。虽然不知道原因。

答案 9 :(得分:0)

对于我的情况(使用Android Studio),我发现无法删除Keystore文件,并且它似乎已被OpenJDK锁定。我怀疑OpenJDK和Windows10的防火墙之间应该有问题。我暂时关闭防火墙。而且有效。

答案 10 :(得分:0)

就我而言,我忘记了从浓缩咖啡测试到应用程序的构建目标:

答案 11 :(得分:0)

有时您不需要输入调试模式的密码,只需在提示输入密码时按Enter键即可:

答案 12 :(得分:0)

最近在用keytool签名外部apk时,我不小心篡改了debug.keystore中的C:\Users\myuser\.android,所以我所做的只是备份了先前的debug.keystoredebug.keystore.lock这两个文件并删除了它。然后重建项目,并生成一个新的debug.keystoredebug.keystore.lock文件。这就是我固定我的方式。

摘要

  1. 备份先前的debug.keystoredebug.keystore.lock
  2. C:\Users\myuser\.android删除它
  3. 重建项目

答案 13 :(得分:0)

构建签名的APK时,我有相同的消息。我以为我的密码是正确的,并且.jks文件存在问题。但 我输入了错误的密码

然后我尝试了另一个可能有效的密码。

注意:当您多次输入错误的密码时,Android Studio不会阻止您。因此尝试另一个可能的密码。

或者如果您忘记了密码,请尝试在日志文件中搜索密码

转到=> Help => Show Log in Explorer [如果您之间没有更新Android Studio,则

或者转到=> .gradle => 5.4.1(可能有所不同)=> executionHistory => executionHistory.bin 并搜索storePassword

答案 14 :(得分:0)

我也一直在努力解决同样的问题。

我确定我的密码,但是密码是问题所在。

正如我在较早的帖子中提到的 => .gradle => 5.4.1(可能有所不同)=> executionHistory => executionHistory.bin并搜索storePassword

然后我发现我的密码由于编码原因而缺少字母:

在executionHistory.bin中,密码为:...z§s..... 在我的keystore.properties中,密码是:...z§.....

更正此问题后,效果很好。

答案 15 :(得分:0)

我遇到了同样的问题,并尝试了下面提到的步骤现在已修复。

第 1 步:确保您的密钥库文件名和密钥别名。

注意:Keystore 和别名密码要相同。

a) 在安卓工作室 构建 >> 生成已签名的捆绑 Apk/.. 选择APK >> 下一步

enter image description here

确保记住我们将在 build.gradle 和 Gradle.properties

中提到的所有字段

b) 项目来源 android >> 应用 >> 调试/发布密钥库

enter image description here

第 2 步:在 Build.gradle 中配置您的 kestore

打开 android >> app >> build.gradle

android >> signinConfigs 下,根据 Debug 或 Release 键确保所有内容都正确

enter image description here

第 3 步:在 gradle.properie 中配置 Keystore

打开 android >> gradle.properties

检查下面提到的如果不是,您可以将其与您的 kestore 文件一起添加。 enter image description here

希望对大家有所帮助。

答案 16 :(得分:0)

我的问题是我在keyPassword中设置了存储密码,并在storePassword中设置了密钥密码,并且一次又一次地更改了密码。