3

首先是我的signinConfigs:

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?

4

2 回答 2

2

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

  1. 转到构建变体
  2. 选择构建变体作为发布
  3. 单击播放/运行按钮

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

于 2017-07-06T20:12:13.530 回答
2

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

但由于您需要一种自动化方式,您可以使用“终端”视图,然后键入:./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
    }
}
于 2017-07-06T21:02:24.043 回答