深入淺出Android Gradle構建系統(三:build task)
java和Android通用的任務
在build檔案中使用了Android或者Java外掛之後就會自動建立一系列可以執行的任務。
Gradle中有如下一下預設約定的任務:
1. assemble
該任務包含了專案中的所有打包相關的任務,比如java專案中打的jar包,Android專案中打的apk
2. check
該任務包含了專案中所有驗證相關的任務,比如執行測試的任務
3. build
該任務包含了assemble和check
4. clean
該任務會清空專案的所有的輸出,刪除所有在assemble任務中打的包
assemble, check 和 build 任務實際上並不做任何事情,它們其實只是為外掛提供了一個鉤子,真正的事情都是由外掛來完成的。
這樣的話,開發人員就不需要關心我到底執行的是一個java專案還是一個Android專案,也不用關心我到底使用了哪些gradle外掛,因為我都可以呼叫這些約定的任務來完成構建。
比如使用findbugs外掛會建立一個新的任務,並且使得check任務依賴於這個新建的任務,這樣每次執行check任務的時候,都會執行這個新建的任務。
在命令列執行
注意:Gradle會自動檢查一個任務的輸入和輸出。比如連續兩次執行build任務的,Gradle會報告所有的任務都已經是最新剛執行過的了,不需要再次執行。這樣的話,任務之間就算是有相互依賴,也不會導致重複的執行。
1. jar
assemble任務會依賴jar任務,看名字就知道這是負責打jar包的任務。jar任務本身又會依賴很多其他的任務,比如classes任務,classes任務會編譯java程式碼
2. test
check任務會依賴test任務,這個任務會執行所有的測試。測試程式碼使用testClasses任務編譯,但是我們基本不用手動執行testClasses任務因為test任務已經新增了對它的依賴。
通常情況下,我們只要執行assemble和check任務就夠了。
想檢視java外掛提供的所有任務以及他們的依賴可以點這個[連結](http://gradle.org/docs/current/userguide/java_plugin.html)
1. connectedCheck
執行那些需要在真機或者模擬器上執行的檢查任務,這些任務會並行地在所有連線的裝置上執行
2. deviceCheck
使用APIs連線遠端裝置執行檢查.主要用於CI(持續整合)服務上.
上面兩個任務都會執行 assemble 和 check任務。新加這兩個任務是很有必要的,這樣可以保證我們可以執行那些不需要連線裝置的檢查任務。
注意:build任務並不依賴於deviceCheck或者connectedCheck
Gradle中有如下一下預設約定的任務:
1. assemble
該任務包含了專案中的所有打包相關的任務,比如java專案中打的jar包,Android專案中打的apk
2. check
該任務包含了專案中所有驗證相關的任務,比如執行測試的任務
3. build
該任務包含了assemble和check
4. clean
該任務會清空專案的所有的輸出,刪除所有在assemble任務中打的包
assemble, check 和 build 任務實際上並不做任何事情,它們其實只是為外掛提供了一個鉤子,真正的事情都是由外掛來完成的。
這樣的話,開發人員就不需要關心我到底執行的是一個java專案還是一個Android專案,也不用關心我到底使用了哪些gradle外掛,因為我都可以呼叫這些約定的任務來完成構建。
比如使用findbugs外掛會建立一個新的任務,並且使得check任務依賴於這個新建的任務,這樣每次執行check任務的時候,都會執行這個新建的任務。
在命令列執行
- gradle tasks
- </pre>會列出所有主要的任務如果想看到全部的任務和它們的依賴,可以執行:<pre name="code" class="java">gradle tasks --all
注意:Gradle會自動檢查一個任務的輸入和輸出。比如連續兩次執行build任務的,Gradle會報告所有的任務都已經是最新剛執行過的了,不需要再次執行。這樣的話,任務之間就算是有相互依賴,也不會導致重複的執行。
Java專案常用的任務
Java plugin 主要建立了兩個任務:1. jar
assemble任務會依賴jar任務,看名字就知道這是負責打jar包的任務。jar任務本身又會依賴很多其他的任務,比如classes任務,classes任務會編譯java程式碼
2. test
check任務會依賴test任務,這個任務會執行所有的測試。測試程式碼使用testClasses任務編譯,但是我們基本不用手動執行testClasses任務因為test任務已經新增了對它的依賴。
通常情況下,我們只要執行assemble和check任務就夠了。
想檢視java外掛提供的所有任務以及他們的依賴可以點這個[連結](http://gradle.org/docs/current/userguide/java_plugin.html)
Android專案常用的任務
和其他gradle外掛一樣,Android外掛也提供了一些預設的任務,比如assemble,check,build,clean,同時它也提供了一些自己特有的任務,比如:1. connectedCheck
執行那些需要在真機或者模擬器上執行的檢查任務,這些任務會並行地在所有連線的裝置上執行
2. deviceCheck
使用APIs連線遠端裝置執行檢查.主要用於CI(持續整合)服務上.
上面兩個任務都會執行 assemble 和 check任務。新加這兩個任務是很有必要的,這樣可以保證我們可以執行那些不需要連線裝置的檢查任務。
注意:build任務並不依賴於deviceCheck或者connectedCheck
一個Android專案通常至少會有兩種輸出:debug apk和release apk。對應的gradle中有兩個任務可以分別輸出不同的apk:
assembleDebug
assembleRelease
這兩個任務又會依賴其他的任務來構建一個apk。assemble任務依賴這兩個任務,呼叫assemble任務就會生成兩種apk。
小提示: Gradle支援在命令列使用camel風格的縮寫來代替任務的名字,比如:
等同於
只要沒有其他任務的縮寫也是'aR'
check相關的任務的依賴:
check依賴lint
connectedCheck依賴 connectedAndroidTest和connectedUiAutomatorTest (還沒有實現)
deviceCheck依賴於那些實現了test擴充套件的外掛所提供的任務
最後,Android gradle外掛還提供了install和uninstall任務,用來安裝和解除安裝apk
assembleDebug
assembleRelease
這兩個任務又會依賴其他的任務來構建一個apk。assemble任務依賴這兩個任務,呼叫assemble任務就會生成兩種apk。
小提示: Gradle支援在命令列使用camel風格的縮寫來代替任務的名字,比如:
- gradle aR
- gradle assembleRelease
check相關的任務的依賴:
check依賴lint
connectedCheck依賴 connectedAndroidTest和connectedUiAutomatorTest (還沒有實現)
deviceCheck依賴於那些實現了test擴充套件的外掛所提供的任務
最後,Android gradle外掛還提供了install和uninstall任務,用來安裝和解除安裝apk
相關文章
- 深入淺出Android Gradle構建系統(3):build taskAndroidGradleUI
- 深入淺出Android Gradle構建系統(五:build type)AndroidGradleUI
- 深入淺出Android Gradle構建系統(一:簡介)AndroidGradle
- 深入淺出Android Gradle構建系統(1):簡介AndroidGradle
- 深入淺出Android Gradle構建系統(二:專案結構)AndroidGradle
- 深入淺出Android Gradle構建系統(2):專案結構AndroidGradle
- 深入淺出Android Gradle構建系統(四:自定義構建過程之配置manifest)AndroidGradle
- 深入淺出Android訊息系統之一Android
- 深入理解gradle中的taskGradle
- 華為雲釋出分散式編譯構建系統CodeArts Build分散式編譯UI
- Android小知識-深入淺出Android系統啟動流程(上)Android
- Android小知識-深入淺出Android系統啟動流程(下)Android
- Gradle for Android ( 構建變體 )GradleAndroid
- [Android、Java]加快gradle構建AndroidJavaGradle
- 深入淺出Android Support AnnotationsAndroid
- 理解 Android Build 系統AndroidUI
- Tomcat深入淺出——Servlet(三)TomcatServlet
- PostgreSQL VACUUM 之深入淺出 (三)SQL
- 深入淺出UML類圖(三)
- Redis雲端架構深入淺出Redis架構
- 深入淺出的webpack構建工具---HappyPack優化構建(九)WebAPP優化
- 深入淺出的webpack構建工具---DllPlugin DllReferencePlugin提高構建速度(七)WebPlugin
- 用Gradle 構建你的android程式GradleAndroid
- Gradle for Android系列之二 build.gradle檔案GradleAndroidUI
- 深入淺出Android BufferQueue-上Android
- android Binder機制深入淺出Android
- 唯快不破!華為雲釋出分散式編譯構建系統CodeArts Build分散式編譯UI
- 深入淺出FE(十四)深入淺出websocketWeb
- 【深入淺出ES6】解構
- Gradle for Android 第二篇( Build.gradle入門 )GradleAndroidUI
- 用Android SDK Build Tools手動構建APKAndroidUIAPK
- com.android.tools.build:gradle:2.0.0-alpha3 build errorsAndroidUIGradleError
- Android開發:build.gradle 配置指南AndroidUIGradle
- 每日構建 Daily buildAIUI
- 深入淺出的webpack構建工具---babel之配置檔案.babelrc(三)WebBabel
- Gradle For Android(2)--基礎的定製構建GradleAndroid
- Gradle for Android 第五篇( 多模組構建 )GradleAndroid
- 使用Gradle構建Android應用內測版本GradleAndroid