android - 在 Android 构建中访问 Gradle 命令行 -P 变量

标签 android command-line build gradle

首先,我是 gradle 的新手,所以这可能是一个愚蠢的问题,但我找不到解决方案。 我正在尝试在终端中构建一个签名的 Android .apk 文件,我想使用命令行来传递一些参数:

gradle assembleRelease -PkeyPw='secret123' -PstorePw='secret123' -PkeyAlias='My-Testkey' -PkeyLocation='/home/someUser/test-key.keystore'

现在我想在 build.gradle 文件中使用这些变量:

signingConfigs {
   release {
      storeFile $keyLocation
      storePassword $storePw
      keyAlias $keyAlias
      keyPassword $keyPw
   }
}

但它们是空的(可能是因为它根本没有任何意义,但我没有找到如何做到这一点)。

感谢您的帮助!

编辑

我使用命令从 java 运行 gradle 构建

new ProcessBuilder().inheritIO.command(cmd).start 

并得到以下错误:

FAILURE: Build failed with an exception. 
* Where: 
Build file 'somePlace/app/build.gradle' line: 16 
* What went wrong: 
A problem occurred evaluating project ':app'. 
> Could not find property 'keyLocation' on project ':app'. 
* Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

最佳答案

通过-P 开关传递的所有属性都可以通过project 变量访问。所以它将是:

signingConfigs {
   release {
      storeFile project.keyLocation
      storePassword project.storePw
      keyAlias project.keyAlias
      keyPassword project.keyPw
   }
}

最好在使用前检查 project 是否指定了属性(以避免出现问题):

signingConfigs {
   release {
      storeFile project.hasProperty('keyLocation') ? project.keyLocation : 'default'
      storePassword project.hasProperty('storePw') ? project.storePw : 'default'
      keyAlias project.hasProperty('keyAlias') ? project.keyAlias : 'default'
      keyPassword project.hasProperty('keyPw') ? project.keyPw : 'default'
   }
} 

关于android - 在 Android 构建中访问 Gradle 命令行 -P 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679654/

相关文章:

c# - 将 C# 语法高亮显示为 HTML 的命令行工具?

command-line - 通过命令行在iPhone设备上安装应用程序

ruby - 尝试安装 Ruby 2.4.2 时出现 BUILD FAILED 错误

java - 如何修复 "canvas: trying to use a recycled bitmap error"?

android - Ionic 4/Cordova - 获取设备帐户

java - Android studio TextView 值不会更新

android - 我如何告诉我的老板使用 Xamarin 不会让它更快

Linux 和/或 GOW 兼容 - 用文本文件替换关键字

.net - Expecto:记录各个测试状态

android - OkBuck 和 Realm 的问题