深入淺出(chū)AndroidGradle構建系統(三:buildtask)
發表時(shí)間:2020-10-19
發布人(rén):融晨科技
浏覽次數:42
接上(shàng)一篇 深刻淺出(chū)Android Gradle構建體系(二:項目構造)
構建義務(Build Tasks)
java和(hé / huò)Android通用的(de)義務
在(zài)build文件中應用了(le/liǎo)Android或者Java插件之(zhī)後就(jiù)會主動創建一系列可以(yǐ)運行的(de)義務。
Gradle中有如下一下默認商定的(de)義務:
1. assemble
該義務包含了(le/liǎo)項目中的(de)所有打包相幹的(de)義務,比如java項目中打的(de)jar包,Android項目中打的(de)apk
2. check
該義務包含了(le/liǎo)項目中所有驗證相幹的(de)義務,比如運行測試的(de)義務
3. build
該義務包含了(le/liǎo)assemble和(hé / huò)check
4. clean
該義務會清空項目标所有的(de)輸出(chū),删除所有在(zài)assemble義務中打的(de)包
assemble, check 和(hé / huò) build 義務實際上(shàng)并不(bù)做任何工作,它們其實隻是(shì)爲(wéi / wèi)插件供給了(le/liǎo)一個(gè)鈎子(zǐ),真正的(de)工作都是(shì)由插件來(lái)完成的(de)。
如許的(de)話,開辟人(rén)員就(jiù)不(bù)須要(yào / yāo)關懷我到(dào)底運行的(de)是(shì)一個(gè)java項目照樣一個(gè)Android項目,也(yě)不(bù)消關懷我到(dào)底應用了(le/liǎo)哪些gradle插件,因爲(wéi / wèi)我都可聲調用這(zhè)些商定的(de)義務來(lái)完成構建。
比如應用findbugs插件會創建一個(gè)新的(de)義務,并且使得check義務依附于(yú)這(zhè)個(gè)新建的(de)義務,如許每次履行check義務的(de)時(shí)刻,都邑履行這(zhè)個(gè)新建的(de)義務。
在(zài)敕令行履行
gradle tasks
</pre>會列出(chū)所有重要(yào / yāo)的(de)義務如不(bù)雅想看到(dào)全部的(de)義務和(hé / huò)它們的(de)依附,可以(yǐ)運行:<pre name="code" class="java">gradle tasks --all
留意:Gradle會主動檢查一個(gè)義務的(de)輸入和(hé / huò)輸出(chū)。比如持續兩次運行build義務的(de),Gradle會申報所有的(de)義務都已經是(shì)最新剛運行過的(de)了(le/liǎo),不(bù)須要(yào / yāo)再次運行。如許的(de)話,義務之(zhī)間就(jiù)算是(shì)有互相依附,也(yě)不(bù)會導緻反複的(de)履行。
Java項目常用的(de)義務
Java plugin 重要(yào / yāo)創建了(le/liǎo)兩個(gè)義務:1. jar
assemble義務會依附jar義務,看名字就(jiù)知道(dào)這(zhè)是(shì)負粜ヲjar包的(de)義務。jar義務本身又會依附很多其他(tā)的(de)義務,比如classes義務,classes義務會編譯java代碼
2. test
check義務會依附test義務,這(zhè)個(gè)義務會運行所有的(de)測試。測試代碼應用testClasses義務編譯,然則我們根本不(bù)消手動運行testClasses義務因爲(wéi / wèi)test義務已經添加了(le/liǎo)對它的(de)依附。
平日情況下,我們隻要(yào / yāo)運行assemble和(hé / huò)check義務就(jiù)夠了(le/liǎo)。
想查看java插件供給的(de)所有義務以(yǐ)及他(tā)們的(de)依附可以(yǐ)點這(zhè)個(gè)[鏈接](http://gradle.org/docs/current/userguide/java_plugin.html)
Android項目常用的(de)義務
和(hé / huò)其他(tā)gradle插件一樣,Android插件也(yě)供給了(le/liǎo)一些默認的(de)義務,比如assemble,check,build,clean,同時(shí)它也(yě)供給了(le/liǎo)一些本身特有的(de)義務,比如:1. connectedCheck
運行那些須要(yào / yāo)在(zài)真機或者模仿器上(shàng)履行的(de)檢查義務,這(zhè)些義務會并行地(dì / de)在(zài)所有連接的(de)設備上(shàng)運行
2. deviceCheck
應用APIs連接長途設備履行檢查.重要(yào / yāo)用于(yú)CI(持續集成)辦事上(shàng).
膳绫擎兩個(gè)義務都邑履行 assemble 和(hé / huò) check義務。新加這(zhè)兩個(gè)義務是(shì)很有須要(yào / yāo)的(de),如許可以(yǐ)包管我們可以(yǐ)運行那些不(bù)須要(yào / yāo)連接設備的(de)檢查義務。
留意:build義務并不(bù)依附于(yú)deviceCheck或者connectedCheck
一個(gè)Android項目平日至少會有兩種輸出(chū):debug apk和(hé / huò)release apk。對應的(de)gradle中有兩個(gè)義務可以(yǐ)分别輸出(chū)不(bù)合的(de)apk:
assembleDebug
assembleRelease
這(zhè)兩個(gè)義務又會依附其他(tā)的(de)義務來(lái)構建一個(gè)apk。assemble義務依爛魅這(zhè)兩個(gè)義務,調用assemble義務就(jiù)會生成兩種apk。
小提示: Gradle支撐在(zài)敕令行應用camel風格的(de)縮寫來(lái)代替義務的(de)名字,比如:
gradle aR等同于(yú)
gradle assembleRelease隻要(yào / yāo)沒有其他(tā)義務的(de)縮寫也(yě)是(shì)'aR'
check相幹的(de)義務的(de)依附:
check依附lint
connectedCheck依附 connectedAndroidTest和(hé / huò)connectedUiAutomatorTest (還沒有實現)
deviceCheck依附于(yú)那些實現了(le/liǎo)test擴大(dà)的(de)插件所供給的(de)義務
最後,Android gradle插件還供給了(le/liǎo)install和(hé / huò)uninstall義務,用來(lái)安裝和(hé / huò)卸載apk