用于签名 Android 应用程序的密钥库

Keystore For Signing Android App

我正在尝试在我的 Androd 应用中实施应用内结算,当我测试购买功能时,我收到错误 "This version of the application is not configured for billing through Google Play."

我怀疑我没有正确生成签名的 APK,问题出在我的 buil.gradle 文件上。

我按照说明生成了一个密钥库 here 并生成了 .jks。我的问题是 signingConfigs 中的 storeFile file() 到底应该填什么?

以下示例来自 Android 文档:

signingConfigs {
    release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
    }
}

简单地输入我的 .jks 文件的路径是行不通的。 .jks 文件与 .keystore 文件不同吗?如果是这样,我如何生成 .keystore?

更新

我从这个 answer 中了解到 .keystore 和 .jks 是任意文件扩展名。

我的计划是简单地将我的 keystore.jks 文件复制到应用程序目录中,然后添加如下标签:

    storeFile file("keystore.jks")

这是正确的吗?不幸的是,Google Play 发布 apk 需要几个小时,所以我无法快速回答这个问题。

keytool -genkey -v -keystore name_of_your_file.keystore -alias your_alias -keyalg RSA -keysize 2048 -validity 10000

这是将生成新密钥的命令

  • 更改 name_of_your_file 为您的名字
  • 和 your_alias 作为您的别名

密钥库将在您调用它的文件夹中生成

然后将此添加到您的 build.gradle

signingConfigs { 
    config { 
        storeFile file("${rootDir}/name_of_your_file.keystore") 
        storePassword "qwerty" 
        keyAlias "your_alias" 
        keyPassword "qwerty" 
    } 
}

buildTypes { 
    release { 
        signingConfig android.signingConfigs.config 
    }
} 

但将 qwerty 更改为您的密码 和 your_alias 到您生成密钥库时使用的别名 和 name_of_your_file 到您的 kestore

的名称

清理您的项目并 运行 ./gradlew task assembleRelease

我解决了这个问题。关键是选择 app 目录作为密钥存储路径。

以下是我如何在 Android Studio 中生成签名 apk 的详细说明:

  1. 转到构建->生成签名的 apk
  2. Select应用模块,点击下一步
  3. 在密钥存储路径下,单击新建。
  4. 会弹出下面的window。 Select 密钥库路径的应用程序目录。它将创建一个默认名称为 "keystore.jks" 的密钥库。喜欢的可以改。
  5. 输入密钥库的密码。我们称之为 "StorePassword"
  6. 输入密钥别名(我们称之为 "KeyAlias")和密钥密码(我们称之为 "KeyPassword")
  7. 在 build.gradle 文件中添加以下内容:

示例签名配置:

 signingConfigs {
    release {
        storeFile file("keystore.jks")
        storePassword "StorePassword"
        keyAlias "KeyAlias"
        keyPassword "KeyPassword"
    }
}
  1. 继续通过生成签名的 apk 向导并输入适当的密码并生成 apk。关键是要确保 build.gradle 在最终签名的 apk 中更新。
  2. 要确认您已成功签署 .apk,请参阅 this 问题。

当然,要有安全的备份,并且在密钥库生成后要对其进行极度保护。

在 Android Studio 中转到 Build->Generate Signed apk 并按照步骤操作。 您不需要在 build.gradle 中添加 signingConfigs 至少在当前 android 工作室版本 1.3.2