??Gradle是一個(gè)構(gòu)建工具,它是用來幫助我們構(gòu)建app的,構(gòu)建包括編譯营密、打包等過程。我們可以為Gradle指定構(gòu)建規(guī)則目锭,然后它就會(huì)根據(jù)我們的“命令”自動(dòng)為我們構(gòu)建app评汰。Android Studio中默認(rèn)就使用Gradle來完成應(yīng)用的構(gòu)建,除此之外我們可以用gradle的指令選擇性的去構(gòu)建我們所需要的app侣集。用gradle的指令構(gòu)建app键俱,需要用到gradlew(即gradle wrapper的簡(jiǎn)寫)兰绣,本文對(duì)gradlew的常用指令做一個(gè)總結(jié)世分。
??gradlew與gradlew.bat: gradlew為L(zhǎng)inux下的shell腳本,gradlew.bat是Windows下的批處理文件缀辩。gradlew是gradle wrapper的縮寫臭埋,也就是說它對(duì)gradle的命令進(jìn)行了包裝,比如我們進(jìn)入到指定Module目錄并執(zhí)行“gradlew.bat assemble”即可完成對(duì)當(dāng)前Module的構(gòu)建(Windows系統(tǒng)下)臀玄。
??gradlew使用標(biāo)準(zhǔn)格式:gradlew [option...] [task...]
其中:option表示選項(xiàng)瓢阴,task表示任務(wù)。也可以用:gradlew [task...] [option...]健无,具體用哪種格式可以根據(jù)個(gè)人愛好決定荣恐。下面對(duì)gradlew的常用指令做一個(gè)說明:
- gradlew -?/-h/--help:顯示幫助信息,即會(huì)打印可選參數(shù)及參數(shù)說明信息;
- gradlew -v/--version:版本號(hào)(會(huì)打印工程用的Gradle的版本號(hào)叠穆、Kotlin少漆、Groovy、Ant硼被、JVM示损、OS等的版本號(hào));
- gradlew tasks --all:查看所有任務(wù)嚷硫,包括緩存任務(wù)等检访;
- gradlew clean:清除工程目錄下的build文件夾;
- gradlew build: 檢查依賴并編譯打包仔掸,debug脆贵、release環(huán)境的包都會(huì)打出來;
- gradlew assemble***:編譯指定的包:如Debug包(gradlew assembleDebug)起暮、Release包(gradlew assembleRelease)丹禀、渠道包(gradlew assembleOemRelease/assembleOemDebug)、定制的版本等等鞋怀;
- gradlew install***:編譯并安裝指定的包:如Debug包(gradlew installDebug)双泪、Release包(gradlew installOemRelease/installOemDebug)、定制的版本等等密似;
- gradlew uninstall**:卸載已安裝的指定模式的包:如Debug包(gradlew uninstallDebug)焙矛、Release包(gradlew uninstallRelease)、渠道包(gradlew uninstallOemRelease/uninstallOemDebug)残腌、定制的版本等等村斟;
- gradlew :模塊名稱:dependencies,如gradlew :app:dependencies抛猫,作用:查看包依賴關(guān)系蟆盹;
- gradlew build -i/--info -d/--debug -s/--stacktrace:編譯(build)并打印debug模式和info等級(jí)的日志及所用異常的堆棧信息(--stacktrace);
- gradlew clean build --refresh-dependencies:組合指令闺金,清除構(gòu)建(gradlew clean)并重新構(gòu)建(gradlew build)逾滥,同時(shí)強(qiáng)制刷新依賴(gradlew --refresh-dependencies);
- gradlew --offline:離線模式败匹,即讓Gradle只使用本地cache里的依賴寨昙,如果cache中沒有也不會(huì)更新依賴,而是提示編譯失斚颇丁舔哪;
- gradlew --refresh-dependencies:強(qiáng)制刷新依賴,即檢查依賴是否有更新比如動(dòng)態(tài)版本槽棍、SHA1進(jìn)行本地cache和遠(yuǎn)程倉(cāng)庫(kù)散列碼的對(duì)比等捉蚤,有更新則下載更新進(jìn)行構(gòu)建抬驴;使用這種方式可以避免手動(dòng)刪除cache;
- --info:打印堆棧信息缆巧;
- gradlew --daemon:守護(hù)進(jìn)程怎爵,使用Gradle的守護(hù)進(jìn)程構(gòu)建,能夠提高構(gòu)建效率盅蝗,如果守護(hù)進(jìn)程沒啟動(dòng)或現(xiàn)有的都處于忙碌狀態(tài)鳖链,就啟動(dòng)一個(gè)守護(hù)進(jìn)程;
- gradlew --no-daemon:如果你已經(jīng)配置為使用守護(hù)進(jìn)程構(gòu)建墩莫,可以使用該選項(xiàng)本次不用守護(hù)進(jìn)程構(gòu)建芙委;
- gradlew --continuous:連續(xù)構(gòu)建,即任務(wù)隊(duì)列中即使某個(gè)任務(wù)失敗狂秦,不會(huì)終止執(zhí)行灌侣,而是會(huì)繼續(xù)執(zhí)行下一個(gè)任務(wù);
- gradlew --parallel --parallel-threads=N:并行編譯裂问;
- gradlew --configure-on-demand:按需編譯侧啼。
??總結(jié):gradlew的有些指令有簡(jiǎn)寫的方式,如"gradlew --version"可以用簡(jiǎn)寫方式"gradlew -v代替堪簿,"gradlew --help"可以用簡(jiǎn)寫方式"gradlew -h""或gradlew -?"代替痊乾,"gradlew --no-rebuild"可以用簡(jiǎn)寫方式"gradlew -a"代替,"gradlew --debug"可以用簡(jiǎn)寫方式"gradlew -d"代替椭更,"gradlew --stacktrace"可以用簡(jiǎn)寫方式"gradlew -s代替等等哪审,可以發(fā)現(xiàn)簡(jiǎn)寫的指令只需要一個(gè)減號(hào)(“-”)開頭,沒有簡(jiǎn)寫的指令需要用兩個(gè)減號(hào)(即“--”)開頭虑瀑。
??如果感覺我的文章對(duì)您有用湿滓,請(qǐng)給個(gè)喜歡,如果有疑問舌狗,也歡迎在下方留言叽奥,謝謝!M词獭朝氓!