如何使用上传密钥对您的应用进行签名

时间:2017-05-23 03:32:59

标签: android publish

我试图将我的应用发布到Google Play商店,我无法弄清楚如何使用上传密钥对该应用进行签名,如https://developer.android.com/studio/publish/app-signing.html

中所述

我使用的是Android Studio,我签了apk使用Build - >生成签名的APK,并在我自己的密钥库路径/文件中创建自己的密钥。现在,要发布,我需要使用谷歌上传密钥,这让我很困惑。所以,

  1. 在哪里可以在Google Play控制台中找到我的上传密钥?在此应用程序的App签名下,我可以看到MD5,SHA-1,SHA-256的上传证书,甚至可以下载upload.pem文件。我该怎么办?

  2. 那么我究竟如何使用Build - >在Android Studio中生成已签名的APK以使用此所谓的上传密钥进行签名?

  3. 我的应用使用Google登录来验证用户身份。现在它可以工作,如果我只是安装自己的apk。但是,如果我从谷歌商店下载它,它无法进行谷歌认证,我认为我搞砸了发布程序。

    仅供参考,我正在使用"使用Google Play App Signing"过程

    请帮忙。

5 个答案:

答案 0 :(得分:8)

我想我已经弄清楚了......

当您选择使用Google App签名流程时,Google Play会将您上传的应用程序的签名更改为应用程序签名证书的SHA-1证书指纹(与上载证书相对)。有关流程,请参见this Studio document处的图1。

[顺便说一下,您可以在Google Play台上找到这两个应用的证书 - >发布管理 - > App Signing]

这意味着,要让Oauth工作,您必须创建新的OAuth 2.0凭据(在console.developers.google.com上)使用应用签名证书' s指纹(与上传证书的指纹相反)具有相同的包名称。

您的软件包现在将拥有2个Oauth凭据,一个用于生产版本,另一个用于开发/测试。两者都具有相同的包名称;生产凭证将使用应用程序签名指纹,而开发/测试凭据将使用上载(或本地密钥库)指纹。

显然,在您的应用首次部署到Google Play(GP指定)之前,您不会知道应用签名指纹。因此,首次上传到Google Play后,需要先创建制作凭据,但需要先点击"部署到制作"

答案 1 :(得分:1)

您要遵循哪个流程,有两种方法可供选择: -

  1. 自行管理密钥和密钥库或
  2. 使用谷歌应用程序签名。(后来提供检索密钥的支持,即使你丢失它)。
  3. 让我们来谈谈第一个使用最多且容易的。 以下步骤: -

    1. 创建密钥库文件并在某个安全的地方保存密码,别名和别名密码。
    2. 将该密钥库文件保存在使用上述凭据保存文件的同一位置。
    3. 现在去构建 - >生成签名APK-&​​gt;选择刚刚创建的密钥库文件,提供所需的所有凭据,如: - 密码,别名,别名密码。
    4. Android studio会为您生成签名APK,您可以在Playstore上传相同的内容。
    5. 下次再次生成APK时,您只需按照步骤3和步骤4进行操作,因为您的密钥库文件将与之前使用的相同,因为您正在推送应用更新。当您想要更新应用时,APK应该使用相同的密钥库签名,或者您可以说相同的SHA证书。
    6. 如果你想通过cammand完成整个过程,那么你可以在app.gradle文件中添加buildType,这是更好更合适的方式。

      要添加buildType配置,请参阅gradle代码: -

      android{
      buildTypes {
              debug {
                  debuggable true
                  minifyEnabled false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
      
              release {
                  minifyEnabled false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                  storeFile file("path for release.keystore")
                  storePassword keystore_password
                  keyAlias keystore_alias
                  keyPassword keystore_alias_password
              }
          }
      } 
      

      在上述配置中,您需要在storeFile标记中提供发布密钥库文件的文件路径,并且还需要提供storePassword,keyAlias和keyPassword中的凭据。

      现在添加上述配置后,您可以通过简单的gradlew命令生成签名的apk: - ./gradlew clean assembleRelease

      如果你想使用第二种方法使用谷歌应用程序注册详细信息here如果您在任何步骤中遇到任何问题,请提及该步骤,以便我可以解决问题。

      首先要生成上传键,您需要执行以下操作: -

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

      然后使用以下方式签署apk:

      jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keys
      

      您还可以使用github lib从here自动执行整个过程。

      或者您可以参考here了解更多详情。

答案 2 :(得分:1)

使用新系统,上传密钥是一个简单而正常的密钥库,您可以使用android studio创建。 所以,juste签署你的apk,并将其发送到Playstore。

Google会删除此密钥,并使用宣布的应用程序密钥(并在Google Play中生成)

答案 3 :(得分:1)

如果谷歌正在为您的应用程序签名,则必须使用Google Play商店中的SHA。在您的Google Play控制台中,进入版本管理和应用签名。

从应用程序签名证书部分,获取SHA-1证书指纹值(不要抓住SHA1:部分):

11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:AA:BB:CC:DD:EE

并在此命令中使用它

echo "11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:AA:BB:CC:DD:EE" | xxd -r -p | openssl base64

它应该给你你的哈希

答案 4 :(得分:-1)

生成已签名的apk可以在Playstore上传的步骤

1)首先去构建变体并选择Release,默认选择debug。

2)然后去生成Build菜单并选择Generate signed apk 在那里,您将找到选择现有密钥库或创建新密钥库的选项

3)填写所需的详细信息,例如密钥库文件的路径.Keystore密码,密钥别名和密码

4)然后你会得到你想在playstore上发布的android app的build-release apk

现在转到谷歌开发者控制台并在管理版本菜单中选择选项以创建版本并上传apk