2016-03-25 25 views
6

Potrzebuję danych związanych z projektem, takich jak nazwa projektu, wersja aplikacji i jej główny moduł z projektu Android opartego na gradle. Próbowałem różnych zadań, takich jak projekt, właściwości, ale żadne z nich nie zapewniało mi konkretnych informacji, których potrzebuję.Dostęp do danych związanych z projektem z polecenia Gradle

Czy istnieje sposób na znalezienie kodu wersji, nazwy aplikacji i głównego modułu Android za pomocą gradle w linii poleceń?

+0

Czy szukasz zadania, które wydrukuje kod wersji i nazwę aplikacji po uruchomieniu z wiersza poleceń?Co masz na myśli, mówiąc o "głównym module Android"? – Krishnaraj

+0

Chcę go bez edycji/aktualizacji kodu źródłowego. –

+0

czy ty i SET lub GET dane z gradle linii poleceń? – djodjo

Odpowiedz

2

Korzystanie zmienna "BuildConfig" globalne dostaniesz

boolean DEBUG

String APPLICATION_ID

String BUILD_TYPE

SMAK String

int VERSION_CODE

String VER SION_NAME

np: - BuildConfig.APPLICATION_ID

a jeśli zdefiniowano żadnych danych globalnych w Gradle jak

debug { 

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

dostaniesz to także szczegóły

BuildConfig.BASE_URL

+0

Chcę go w wierszu polecenia. Nie z klasy –

0

ty można użyć resValue, aby uzyskać wartość

Gradle

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

     } 

klasa

context.getString(R.string.versionCode); 
+0

Chcę go w wierszu polecenia.Nie z klasy –

1

Prawdopodobnie można napisać własne zadanie zwyczaj Gradle do tej operacji. Dodaj ten fragment kodu do swojej aplikacji build.gradle, gdzie definiujesz swoją wtyczkę dla Androida i uruchamiasz ją z konsoli. Możesz formatować dane wyjściowe tak, jak tego potrzebujesz i wykorzystywać inne dane ze skryptu budowania.

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

+0

Nie chcę edytować kod źródłowy –

0

ja nie wiem, czy to pasuje, można utworzyć jeden wspólny startowy Gradle plik, którego uruchamiany z linii poleceń, więc nie jest to manipulacja kodu źródłowego, gdzie można wydrukować wszystkie niezbędne dane . Ale gradle wyjście jest brudne.

Jest to fragment init.gradle który jest w /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}") 
      }) 
     } 
    }); 
} 

uruchomieniu tego skryptu jak ./gradlew --I /Users/username/init.gradle to co mam jako wyjście

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 

Więc to, co może być gotowe, kolejną dostępną opcją jest sparsowanie pliku build.gradle lub pliku manifest.xml w bashu, lub napisanie własnego narzędzia konsoli, które zrobi to z czystszym wyjściem. Mam nadzieję, że pomogłem.