无需键入密钥即可生成已签名的 apk

Generate signed apk without typing key

首先是我的登录配置:

signingConfigs {
        development {
            storeFile file("mykey.jks") //Path to the keystore file
            keyAlias "mykey"
            storePassword "mykeydev"
            keyPassword "mykeydev"
        }
        production {
            storeFile file("mykey.jks") //Path to the keystore file
            keyAlias "mykey"
            storePassword "mykeyprod"
            keyPassword "mykeyprod"
        }
}

现在我的口味:

productFlavors {
    development{
        applicationId "br.com.myapp.dev"
        signingConfig signingConfigs.development
        resValue "string", "app_name", "DEV"
    }

    production {
        applicationId "br.com.myapp"
        signingConfig signingConfigs.production
        resValue "string", "app_name", "PROD"
    }
}

我有 buildTypes 这个:

buildTypes {
    release {
        minifyEnabled false
        productFlavors.production.signingConfig signingConfigs.production
        productFlavors.development.signingConfig signingConfigs.development
    }
}

我的问题是,如果所有密钥和内容都在我的 .gradle 中,为什么每次我想生成一个新的签名 apk 文件时都要求我输入 keyPassword 和 storePassword文件?

如果您在 gradle 中提供了密钥库路径和凭据。然后按照以下步骤生成签名的 apk。

  1. 转到构建变体
  2. Select 构建变体作为发布
  3. 单击 play/run 按钮

Apk 将在 Project/build/outputs/apk 文件夹中发布

当您从 "Build -> Generate Signed apk" 构建时,您需要偶尔输入 Android 的工作室密码,但它会为您保存加密的密码。这是最安全的方式。

但是由于您需要一种自动化方式,您可以使用 "Terminal" 视图,然后键入:./gradlew assembleRelease。 (如果你在 windows 机器上,我认为它是 gradlew assembleRelease)。

无论如何,不​​建议将密码写在 build.gradle 文件中:

android {

  signingConfigs {
    release {
        storeFile file('/your/keystore/location/key')
        keyAlias 'your_alias'
        keyPasswordString ps = System.getenv("ps")
        storePasswordif System.getenv("ps"ps == null) {
             throw new GradleException('missing ps env variable')
        }
        keyPassword ps
        storePassword ps
    }
}