2016-03-25 11 views
6

Ho bisogno di dati relativi al progetto come nome del progetto, versione dell'app e il suo modulo principale dal progetto Android basato su gradle. Ho provato varie attività come progetto, proprietà ma nessuna di queste mi fornisce informazioni specifiche di cui ho bisogno.Accedere ai dati relativi al progetto dal comando Gradle

C'è un modo per trovare il codice di versione, il nome dell'app e il modulo Android principale utilizzando gradle nella riga di comando?

+0

Stai cercando un'attività che stamperà il codice di versione e il nome dell'app quando viene eseguito dalla riga di comando?Inoltre, cosa intendi per "modulo Android principale"? – Krishnaraj

+0

Lo voglio senza modificare/aggiornare il codice sorgente. –

+0

e impostare o OTTENERE i dati dalla linea di comando gradle? – djodjo

risposta

2

Utilizzando "BuildConfig" variabile globale si otterrà

booleano DEBUG

String APPLICATION_ID

String BUILD_TYPE

String SAPORE

int VERSION_CODE

String VER SION_NAME

ad esempio: - BuildConfig.APPLICATION_ID

e se si è definito tutti i dati globali in Gradle come

debug { 

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

otterrete questi dati anche

BuildConfig.BASE_URL

+0

Lo voglio in riga di comando. Non dalla classe –

0

voi possibile utilizzare resValue per ottenere il valore

Gradle

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

     } 

la classe

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

Lo voglio in riga di comando. Non dalla classe –

1

Probabilmente si può scrivere il proprio compito Gradle personalizzato per farlo. Aggiungi questo snippet di codice nell'app build.gradle, dove definisci il tuo plug-in Android ed eseguilo dalla console. È possibile formattare l'output come se fosse necessario e utilizzare altri dati dallo script di build.

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

+0

Non voglio modificare il codice sorgente –

0

Non so se fa comodo, è possibile creare un file Gradle init comune, che si esegue da linea di comando, quindi non è una manipolazione del codice sorgente, in cui si stampa tutti i dati necessari . Ma l'uscita gradle è sporca.

Questa è frammento di init.gradle che è in /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}") 
      }) 
     } 
    }); 
} 

si avvia questo script come ./gradlew --I /Users/username/init.gradle Questo è quello che ho come uscita

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 

Quindi questo è quello che potrebbe essere fatto, un'altra opzione disponibile è analizzare il file build.gradle o manifest.xml in bash, o scrivere la propria utility della console che lo farà con un output più pulito. Spero di aver aiutato.

Problemi correlati