在 Android Studio 中获取用户对 gradle 构建的输入

kan*_*nde 4 gradle android-studio android-gradle-plugin

我正在使用 Android Studio IDE,我需要可以选择在代码中分配一个变量,该变量的值将在运行 apk 或生成 apk 时输入。

我知道我无法使用System.console,还有其他解决方案吗?

dre*_*rew 7

可以使用命令行输入或 Android Studio 中的 swing 对话框来完成此操作。如果 gradle 作为守护进程运行,下面的示例任务将显示一个对话框,如果不是,则将显示一个命令行提示符。

import groovy.swing.SwingBuilder

task ask << {
  def keyPassPhrase
  def console = System.console()
  if (console) {
      keyPassPhrase = console.readLine('> Please enter key pass phrase: ')
  } else {
      new SwingBuilder().edt {
          dialog(modal: true,
                  title: 'Enter credentials',
                  alwaysOnTop: true,
                  resizable: false,
                  locationRelativeTo: null,
                  pack: true,
                  show: true
          ) {
              vbox {
                  label(text: "Please enter key passphrase:")
                  input = passwordField()
                  button(defaultButton: true, text: 'OK', actionPerformed: {
                      keyPassPhrase = input.password;
                      dispose();
                  })
              }
          }
      }
  }
  print "Key pass phrase: ${keyPassPhrase}"
}
Run Code Online (Sandbox Code Playgroud)

(感谢 Tim Roes 提供的绝妙解决方案 https://www.timroes.de/2014/01/19/using-password-prompts-with-gradle-build-files/