从Gradle命令访问项目相关数据

时间:2016-03-25 12:58:46

标签: android android-studio android-gradle build.gradle

我需要项目相关数据,如项目名称,应用程序版本和基于gradle的android项目的主要模块。我尝试了各种各样的任务,比如项目,属性,但没有给我提供我需要的具体信息。

有没有办法在命令行中使用gradle查找版本代码,应用程序名称和主要android模块?

4 个答案:

答案 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,或者编写自己的控制台实用程序,它将使用更清晰的输出。 我希望我能帮忙。