我需要项目相关数据,如项目名称,应用程序版本和基于gradle的android项目的主要模块。我尝试了各种各样的任务,比如项目,属性,但没有给我提供我需要的具体信息。
有没有办法在命令行中使用gradle查找版本代码,应用程序名称和主要android模块?
答案 0 :(得分:2)
使用“BuildConfig”全局变量,您将获得
boolean DEBUG
字符串APPLICATION_ID
String BUILD_TYPE
String FLAVOR
int VERSION_CODE
字符串VERSION_NAME
例如: - BuildConfig.APPLICATION_ID
如果您在gradle中定义了任何全局数据,如
debug {
buildConfigField "String", "BASE_URL", '"http://172.16.1.175:8080/api/"'
debuggable true
}
你也会得到这个细节
BuildConfig.BASE_URL
答案 1 :(得分:1)
您可以编写自己的自定义gradle任务来执行此操作。在您的app build.gradle中添加此代码段,您可以在其中定义Android插件并从控制台运行它。您可以按需要格式化输出,并使用构建脚本中的其他数据。
$this->MyForm->input('callback_time', array(
'type' => 'customTime',
// ...
));
答案 2 :(得分:0)
您可以使用resValue获取值
<强>摇篮强>
defaultConfig {
//other config
resValue "String","versionCode","1"
}
你的班级
context.getString(R.string.versionCode);
答案 3 :(得分:0)
我不知道它是否适合,你可以创建一个从命令行运行的公共init gradle文件,因此它不是源代码操作,在那里你打印出所有必要的数据。但是gradle输出很脏。
这是init.gradle的片段,位于/Users/username
allprojects{
afterEvaluate({//listen for project evaluation
println(project.name)//it is supposed to be 2 projects "ProjName" and "app"
if(project.name.equalsIgnoreCase("app")){//or any other condtion to check if it is inner android project
project.task("getVersion",{
println("versionCode = ${android.defaultConfig.versionCode}")
})
}
});
}
启动此脚本,如./gradlew --I /Users/username/init.gradle
这就是我的输出
music
app
versionCode = 1
:help
Welcome to Gradle 2.4.
To run a build, run gradlew <task> ...
To see a list of available tasks, run gradlew tasks
To see a list of command-line options, run gradlew --help
To see more detail about a task, run gradlew help --task <task>
BUILD SUCCESSFUL
Total time: 6.929 secs
This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.4/userguide/gradle_daemon.html
所以这是可以做的,另一个可用选项是在bash中解析build.gradle文件或manifest.xml,或者编写自己的控制台实用程序,它将使用更清晰的输出。 我希望我能帮忙。