Windows上的Gradlew - System.console()为null

时间:2014-08-07 15:55:32

标签: gradle android-gradle

我想在System.console()中使用build.gradle让用户输入密钥库的密码。

然后我执行

gradlew assembleRelease --no-daemon

我总是得到

Cannot invoke method readPassword() on null object

如何在Windows上请求用户输入gradlew?

我在google和堆栈溢出中搜索了很多但没有任何效果。

3 个答案:

答案 0 :(得分:1)

在Gradle中使用System.console()时存在一些已知问题。如果--no-daemon没有帮助(它在某种程度上对我的Mac有帮助),你可能无法做任何事情来使其工作(除了向Gradle项目提交解决问题的拉动请求)。解决控制台输入问题的一种方法是弹出一个Swing对话框。

答案 1 :(得分:0)

您还可以使用gradle的-P命令行选项来帮助签名。在您的build.gradle中,像这样添加唱歌配置:

signingConfigs {
      release {
          storeFile file("path/to/your/keystore")
          storePassword RELEASE_STORE_PASSWORD
          keyAlias "your.key.alias"
          keyPassword RELEASE_KEY_PASSWORD
      }
   }

然后调用gradle构建如下:

  

等级-PRELEASE_KEYSTORE_PASSWORD = ******* -PRELEASE_KEY_PASSWORD = ******构建   如果愿意,可以使用-P设置storeFile和keyAlias。

这基本上是Destil的解决方案,但具有命令行选项。

有关gradle属性的更多详细信息,请参阅gradle用户指南。

答案 2 :(得分:-1)

然后不要使用gradlew。请改用gradle。 Gradlew在后台运行,这是不可互动的,因此你将如何输入想要阅读的输入?