如何使用上传密钥创建已签名的apk?

时间:2017-12-15 16:05:11

标签: android android-studio apk

我按照Manage your app signing keys说明"要为新应用创建上传密钥,请按照sign your app上的说明操作。"

我在此处查看"使用google play App署名",将我重定向到Manage your app signing keys。此链接与第一个链接相同,因此我陷入了重定向循环。

我在#34部分检查;生成密钥和密钥库"在sign your app中再次将我链接到Manage your app signing keys

如果我在&#34部分下查看;手动签署APK"在sign your app中,如果我想使用Google Play应用签名进行签名,我会看到说明我应该使用我的上传密钥。有关详情,请查看Manage your app signing keys

我不知道从哪里获取上传密钥。我只是在重定向循环中。

3 个答案:

答案 0 :(得分:4)

"上传密钥"并不是什么特别的东西 - 它只是密钥库中的另一个密钥。您需要在开发者控制台中将此密钥注册为上传密钥,以便Google将其识别为您的上传密钥。

要生成上传密钥,只需按照以下步骤生成密钥和密钥:"生成密钥和密钥库"在Sign Your App documentation上。您生成的密钥将是您的上传密钥。

生成上传密钥后,您需要使用

将其导出
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem

其中upload-keystore.jks是包含您要用作上传密钥的密钥的密钥库的名称,而upload是密钥的别名。

最后,您需要在开发者控制台中访问您的应用,转到版本管理>应用程序签名,然后单击"上传公钥证书"按钮上传您之前生成的.pem文件。这会将您的密钥注册为"上传密钥"对于那个应用程序。

答案 1 :(得分:0)

也许您的意思是Google App Signing? 通过从AndroidStudio创建密钥,所有过程与之前相同,选择Build - >生成签名APK - >新建 - >返回 - >然后按照对话过程进行操作。

那么Google App Signing在哪里?
根据{{​​3}},如果您丢失了密钥,它就是开发人员的安全功能。

  

如果您丢失了密钥库或认为它可能已被盗用,Google Play App Signing可以请求重置您的上传密钥。如果您未注册Google Play App Signing并丢失密钥库,则需要发布包含新软件包名称的新应用。

答案 2 :(得分:0)

最简单的方法是在不必彻底了解的情况下使用构建 - >生成签名的APK菜单。它将带您完成制作商店和钥匙的向导。我通常每个商店只做一个应用程序,所以如果我做的话很容易分开和出售。

完成向导后,告诉它将商店放在项目的根目录中,并记下密码密钥和别名信息。

接下来,我通常会将密钥和密码添加到CI构建服务器上的环境变量中,但是如果要构建本地,则可以将它们添加为本地计算机的本地环境变量,以避免将此信息放入repo中。 / p>

然后修改Gradle构建文件以从环境变量中提取信息,如:

    android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    signingConfigs {
        release {
            storeFile file("$projectDir/../myappkeystore.jks")
            storePassword System.getenv('MYAPP_STORE_PASSWORD')
            keyAlias System.getenv('MYAPP_KEY_ALIAS')
            keyPassword System.getenv('MYAPP_KEY_PASSWORD')
        }
    }

    defaultConfig {
        applicationId "com.appstudio35.myApp"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 12
        versionName "0.08.4"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

    packagingOptions {
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
    }
}

然后确保添加环境变量。在Windows中只需一次添加一个,但在Mac或Linux中,您必须导出它们。我通常在〜/ .bash_profile中使用来自终端的vi来包含。

export MYAPP_STORE_PASSWORD='$mYpASSWORD$'
export MYAPP_KEY_ALIAS=MyAlias
export MYAPP_KEY_PASSWORD='$MyKeyPassword$'

然后,您只需转到gradlew所在项目的根目录并运行bash gradlew assembleRelease(或者如果您愿意,可以使用向导)。当您上传时,只需提供您在注册应用程序签名时创建的密钥库。它真的只是保留一份副本,没什么特别的,但是如果你丢失了它,你可以在以后恢复。

希望有所帮助。当你开始从终端构建密钥库时,它们会变得复杂得多。该向导做得很好。 ;)

此外,我收到了几封谷歌电子邮件,试图了解他们的“上传”商店和关键信息。经过大约10次来回,我终于意识到它实际上只是你的签名密钥库,它不是一个新的密码库,根据谷歌的代表,你没有单独的一个。