首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中访问等级命令行-P变量

在Android中访问等级命令行-P变量
EN

Stack Overflow用户
提问于 2015-04-16 15:41:31
回答 2查看 4K关注 0票数 8

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

代码语言:javascript
复制
gradle assembleRelease -PkeyPw='secret123' -PstorePw='secret123' -PkeyAlias='My-Testkey' -PkeyLocation='/home/someUser/test-key.keystore'

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

代码语言:javascript
复制
signingConfigs {
   release {
      storeFile $keyLocation
      storePassword $storePw
      keyAlias $keyAlias
      keyPassword $keyPw
   }
}

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

谢谢你的帮忙!

编辑

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

代码语言:javascript
复制
new ProcessBuilder().inheritIO.command(cmd).start 

并得到以下错误:

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 07:01:35

通过-P交换机传递的所有属性都可以通过project变量访问。因此,将是:

代码语言:javascript
复制
signingConfigs {
   release {
      storeFile project.keyLocation
      storePassword project.storePw
      keyAlias project.keyAlias
      keyPassword project.keyPw
   }
}

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

代码语言:javascript
复制
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'
   }
} 
票数 11
EN

Stack Overflow用户

发布于 2017-05-22 03:03:37

处理此问题的另一种方法是重写build.gradle文件中的值。

代码语言:javascript
复制
./gradlew assembleRelease -Pandroid.injected.signing.store.file='/home/someUser/test-key.keystore' -Pandroid.injected.signing.store.password='secret123' -Pandroid.injected.signing.key.alias='My-Testkey' -Pandroid.injected.signing.key.password='secret123'

这不需要build.gradle文件中的特殊代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29679654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档