原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻譯:Android Studio 中文組(大錘譯)
通用任務
將一個plugin運用到build file中時,會自動創建一系列的構建任務(build task)去運行。Java plugin和Android Plugin也都會如此。
我們對于任務的約定有以下四個:
- assemble任務,匯集所有項目輸出
- check任務,運行所有校驗
- build任務,既匯集又校驗
- clean任務,清除所有項目輸出
assemble, check and build任務自己本身不做任何事情,它們只是plugin錨點,真正任務的是由plugin來添加執行。
這樣做的好處是,不管你在什么項目中,你都可以調用同樣的命令來執行。
通過命令行,你可以得到更高級別的任務,命令如下:
gradle tasks
列出當前運行的所有任務,以及查看他們之間的依賴關系:
gradle tasks --all
注: Gradle會自動地檢測一個任務中申明的輸入和輸出。當重復執行兩次build任務時,Gradle會報告當前所有任務是UP-TO-DATE的狀態。
Java項目的任務
Java plugin會創建兩個任務,分別掛到錨任務中,如下:
assemble
jar This task creates the output.
check
test This task runs the tests.
- jar任務是編譯執行Java源代碼。
- test任務是運行unit test
通常,java項目中的任務只會用到assemble和check這兩個,更多的其他task詳見此處。
Android 任務
Android的任務比通用的四大任務多了“connectedCheck”和“deviceCheck”,這是想要讓項目忽視設備是否連接,正常執行check任務。
- assemble任務, 匯集所有項目輸出
- check任務,運行所有校驗
- connectedCheck任務,運行所有需要鏈接設備或模擬器的校驗, 并行運行
- deviceCheck任務,運行調用遠程設備的校驗,運用于CI Servers
- build任務,既匯集又校驗
- clean任務,清除所有項目輸出
注:build任務不依賴與deviceCheck或connectedCheck
一個安卓的項目至少有兩個輸出,一是debug apk,二是release apk.這兩個輸出都有自己對應的錨任務,來實現它們各自的構建調用assemble任務時會同時調用assembleDebug和assembleRelease來保證有兩個輸出。
assemble
- assembleDebug
- assemblRelease
Tip: Gradle 支持Camel命名方式的簡寫,比如在輸命令行時,可以用aR代替assembleRelease,如果沒有其他別的任務也是aR簡寫的話:
gradle aR = gradle assembleRelease
Check任務也有它們自己的依賴關系:
- check
---lint (目前還沒實現,汗一個)
- connectedCheck
---connectedInstrumentTest
---connectedUiAutomatorTest (這個也還沒實現……)
- deviceCheck
依賴于任務創建時,其他插件實現測試的擴展點
最后, 為了能夠安裝卸載,Android plugin 為所有的build類型(debug,release,test)都創建了install/uninstall 任務,但需要signing。
文章列表