我正在开发intellij和gradle下的android应用程序。并使用以下方式生成密钥库文件:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
然后在build.gradle中使用密钥库文件:
signingConfigs {
robert {
storePassword 'robert'
storeFile file('/Users/bournewang/Documents/Project/android.keystore')
keyPassword 'robert'
keyAlias 'mike'
}
}
当最终尝试生成签名的apk文件时:./ gradlew assembleRelease
它给出了错误:
任务执行失败':Myexample:packageRelease'。
无法从密钥库中读取密钥
答案 0 :(得分:60)
首先检查您的密钥库文件,在您的示例中,您创建名为my-release-key.keystore的文件。如果其正确且真正存在于文件夹Users/bournewang/Documents/Project
中,则检查别名,在您的示例中,它是 -alias alias_name ,但在配置中您指定了别名 mike
答案 1 :(得分:53)
为了找出问题所在,你可以使用gradle的signingReport
命令。
在mac上:
./gradlew signingReport
在Windows上:
gradlew signingReport
答案 2 :(得分:8)
很可能您的密钥别名对于您的密钥库文件不存在。
此answer应修复您的签名问题;)
答案 3 :(得分:3)
删除double-quotes
解决了我的问题,现在是:
DEBUG_STORE_PASSWORD=androiddebug
DEBUG_KEY_ALIAS=androiddebug
DEBUG_KEY_PASSWORD=androiddebug
答案 4 :(得分:2)
就我而言,在从其他来源复制文本时,它以某种方式包含了剪贴板条目末尾的空格。这样,密钥密码最后有一个空格。
答案 5 :(得分:0)
它可以是参数中的任何一个,而不仅仅是文件名或别名 - 对我来说它是密钥密码。
答案 6 :(得分:0)
对于不使用签名配置并尝试通过在命令行输入所有参数来测试Cordova Release命令的用户,如果密码中包含特殊字符,则可能需要用单引号将密码引起来
cordova run android --release -- --keystore=../my-release-key.keystore --storePassword='password' --alias=alias_name --password='password'
答案 7 :(得分:0)
最大的问题是别名或其他密码错误。请检查您的密码,您的问题已解决。如果您忘记了密码,则可以从androidStuido3.0 / System / Log中恢复密码...搜索关键字密码,然后保存您的密码
答案 8 :(得分:0)
我今天遇到了同样的错误。
<块引用>任务“:app:packageRelease”执行失败。 执行 com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable 时发生故障 com.android.ide.common.signing.KeytoolException:无法从存储“E:\keystore\news.jks”读取关键新闻:密钥库被篡改,或密码不正确
我有相同的密钥密码和密钥库密码。但是我写错了密码。
答案 9 :(得分:0)
答案 10 :(得分:0)
在 Android Studio 中转到 Build > Clean Project
,然后使用 Build > Generate Signed Bundle / APK...
重新生成已签名的 APK,然后清除密码字段并重新输入密码
答案 11 :(得分:0)
在我的情况下,由于某种原因,在将 android studio 更新到最后一个稳定版本后,默认情况下始终使用的密码已更改,我只需要再次设置正确的密码就可以了