2016-03-25 48 views
6

我需要項目相關的數據,如項目名稱,應用程序版本和其基於gradle的android項目的主要模塊。我已經嘗試過諸如項目,屬性等各種任務,但沒有給我提供我需要的具體信息。從Gradle命令訪問項目相關數據

有沒有辦法在命令行中使用gradle查找版本代碼,應用程序名稱和主要的android模塊?

+0

您是否正在查找將從命令行運行時打印版本代碼和應用程​​序名稱的任務?另外,你的意思是'主android模塊'? – Krishnaraj

+0

我希望它不需要編輯/更新源代碼。 –

+0

你和SET或從gradle命令行獲取數據? – djodjo

回答

2

使用 「BuildConfig」 的全局變量,你會得到

布爾DEBUG

字符串APPLICATION_ID

字符串BUILD_TYPE

串味

INT VERSION_CODE

字符串VER SION_NAME

如: - BuildConfig.APPLICATION_ID

,如果你的gradle中定義的任何全局數據像

debug { 

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

你會得到這也

詳情BuildConfig.BASE_URL

+0

我想要它在命令行中。而不是從類 –

0

你可以使用resValue來獲得價值

搖籃

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

     } 

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

我想要它在命令行中。而不是從類 –

1

你也許可以寫出這樣做,自己的自定義任務的gradle。將此代碼片段添加到您的應用程序build.gradle中,在其中定義您的android插件並從控制檯運行它。您可以根據需要格式化輸出,並使用構建腳本中的其他數據。

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

+0

我不想編輯源代碼 –

0

我不知道它是否適合,您可以創建一個共同的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,或者編寫自己的控制檯實用程序,它將使用更清晰的輸出來執行此操作。 我希望我能幫上忙。