Получить доступ к данным, связанным с проектом, из команды Gradle

Мне нужны данные о проекте, такие как название проекта, версия приложения и его основной модуль из проекта Android. Я пробовал различные задачи, такие как проект, свойства, но ни один из них не дал мне конкретной информации, которая мне нужна.

Есть ли способ найти код версии, имя приложения и основной модуль андроида, используя gradle в командной строке?

Используя глобальную переменную BuildConfig, вы получите

Boolean DEBUG

Строка APPLICATION_ID

Строка BUILD_TYPE

String FLAVOR

Int VERSION_CODE

Строка VERSION_NAME

Например: – BuildConfig.APPLICATION_ID

И если вы определили любые глобальные данные в градиенте, как

debug { buildConfigField "String", "BASE_URL", '"http://172.16.1.175:8080/api/"' debuggable true } 

Вы получите эту информацию также

BuildConfig.BASE_URL

Вы можете, возможно, написать свою собственную задачу градиента для этого. Добавьте этот фрагмент кода в свое приложение build.gradle, где вы определяете свой плагин android и запускаете его с консоли. Вы можете форматировать вывод так, как вам нужно, и использовать другие данные из скрипта сборки.

task hello<<{ println("versionCode = ${android.defaultConfig.versionCode}") println("applicationId = ${android.defaultConfig.applicationId}") println("minSDK = ${android.defaultConfig.minSdkVersion}") }

Вы можете использовать resValue для получения значения

Gradle

  defaultConfig { //other config resValue "String","versionCode","1" } 

твой класс

 context.getString(R.string.versionCode); 

Я не знаю, подходит ли это, вы можете создать один общий файл init 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 

Таким образом, это то, что можно сделать, другой доступный вариант – проанализировать файл build.gradle или manifest.xml в bash или написать собственную консольную утилиту, которая сделает это с более чистым выходом. Надеюсь, я помог.