Android和Gradle对应用进行签名时使用了旧的不存在的密钥库

时间:2019-01-25 01:31:38

标签: android gradle apk

我试图使用名为“ keystore.keystore” 的旧密钥库中的数据对新的Android应用进行签名。它无法恢复密钥,因此我从磁盘上删除了该密钥库,并创建了一个名为“ keystore.jks” 的新密钥。

然后,我在页面https://developer.android.com/studio/build/build-variants#signing中按照以下指南在build.gradle中添加了以下内容:

signingConfigs {
    release {
        storeFile file("C:\\SomeDirectory\\keystore.jks")
        storePassword "mypassword123"
        keyAlias "key"
        keyPassword "mypassword123"
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

然后我转到Android Studio中的构建/生成签名包/ APK 菜单选项。它没有从上述build.gradle文件中选择有关密钥库,密钥或别名的信息,因此我在对话框窗口中再次手动输入了该信息。

按下一步后,任务完成,但出现以下错误:

  

“ C:\ SomeDirectory \ keystore.keystore(系统找不到文件   指定)”。

请注意密钥库的名称,它是旧名称。它来自哪里??

因此,我打开了cmd.exe并运行了它:“ gradlew.bat assembleRelease”。发生了类似的错误:

  

任务:app:packageRelease FAILED   失败:构建失败,发生异常。   * 什么地方出了错:   任务':app:packageRelease'的执行失败。   java.io.FileNotFoundException:C:\ SomeDirectory \ keystore.keystore    (系统找不到指定的文件)

使缓存无效/重启无效。

gradle为什么引用旧的密钥库名称,如何使其使用新的密钥库?

4 个答案:

答案 0 :(得分:1)

我今天也面临同样的问题。

对我有用的是在两次构建之间删除app/build/intermediates/signing_config/release/out/signing-config.json文件(我不知道为什么这样)。

答案 1 :(得分:0)

gradlew clean将使gradle使用新的

答案 2 :(得分:0)

如果您使用的是MAC,则〜/ Users / [用户名] /。gradle / gradle.properties也应进行编辑

答案 3 :(得分:-1)

我有完全一样的问题。一个Android Studio Clean Project并重新启动即可为我解决。