Gradle 常用命令和查看錯誤信息
Gradle 是 Android 現(xiàn)在主流的編譯工具空厌,使用它可以幫助我們編譯堤器、打包APP等過程泉蝌。同時歇万,我們也可以為Gradle指定構(gòu)建規(guī)則,讓它按照我們的指定構(gòu)建應(yīng)用勋陪。在Android中贪磺,我們常用的clean、build等其實就是使用的gradle方式來進行構(gòu)建的诅愚,只是這些Android studio幫我們做了寒锚,我們只需要在界面上進行點擊就可以了。但是违孝,還有一些比較有用的命令A(yù)ndroid Studio并沒有全部封裝刹前,比如:查看module的依賴關(guān)系、編譯錯誤追蹤等雌桑。下面我們就來說一說gradle中常用命令(使用gradle的指令喇喉,需要用到gradlew(即gradle wrapper的簡寫))和一個錯誤追蹤的實例。
- 推薦文章:gradle的介紹校坑,《Android Gradle 指南》
- gradlew使用格式:
- gradlew 使用標準格式: gradlew [option…] [task…]
- 也可以用:gradlew [task…] [option…]
其中:option表示選項轧飞,task表示任務(wù)衅鹿。
在Android studio撒踪,我們可以在Terminal窗口中輸入命令过咬。
常用命令
- gradlew -?/-h/--help:顯示幫助信息,會打印可選參數(shù)及參數(shù)說明信息
- gradlew -v/--version:打印版本信息
- gradlew tasks --all:查看所有任務(wù)制妄,包括緩存任務(wù)等
- gradlew clean:清除工程目錄下的build文件夾
- gradlew build:檢查依賴并編譯打包掸绞,debug、release環(huán)境的包都會打出來
- gradlew assemble***:編譯指定的包:如Debug包(gradlew assembleDebug)耕捞、Release包(gradlew assembleRelease)衔掸、渠道包(gradlew assembleGoogleRelease/assembleGoogleDebug;渠道包需要結(jié)合Product Flavors)俺抽、定制的版本等等
- gradlew install***:編譯并安裝指定的包:如Debug包(gradlew installDebug)敞映、Release包(gradlew installRelease)、渠道包磷斧、定制的版本等等振愿;
- gradlew uninstall**:卸載已安裝的指定模式的包:如Debug包(gradlew uninstallDebug)、Release包(gradlew uninstallRelease)弛饭、渠道包冕末、定制的版本等等;
- gradlew :${modeleName}:dependencies:查看模塊的包依賴關(guān)系侣颂,如gradlew :app:dependencies
- gradlew --refresh-dependencies:強制刷新依賴档桃,即檢查依賴是否有更新比如動態(tài)版本、SHA1進行本地cache和遠程倉庫散列碼的對比等憔晒,有更新則下載更新進行構(gòu)建
- gradlew build -i/–info -d/–debug -s/–stacktrace:編譯(build)并打印debug模式和info等級的日志及所有異常的堆棧信息(–stacktrace)
- gradlew clean build --refresh-dependencies:組合指令藻肄,清除構(gòu)建(gradlew clean)并重新構(gòu)建(gradlew build),同時強制刷新依賴(gradlew --refresh-dependencies)
- gradlew --offline:離線模式拒担,即讓Gradle只使用本地cache里的依賴嘹屯,如果cache中沒有也不會更新依賴,而是提示編譯失敗
- gradlew –info:打印堆棧信息
- gradlew --daemon:守護進程澎蛛,使用Gradle的守護進程構(gòu)建抚垄,能夠提高構(gòu)建效率,如果守護進程沒啟動或現(xiàn)有的都處于忙碌狀態(tài)谋逻,就啟動一個守護進程呆馁;
- gradlew --no-daemon:如果你已經(jīng)配置為使用守護進程構(gòu)建,可以使用該選項本次不用守護進程構(gòu)建毁兆;
- gradlew --continuous:連續(xù)構(gòu)建浙滤,即任務(wù)隊列中即使某個任務(wù)失敗,不會終止執(zhí)行气堕,而是會繼續(xù)執(zhí)行下一個任務(wù)
錯誤追蹤
有時候我們在使用Android Studio進行打包apk時纺腊,項目報錯畔咧。但是報錯信息卻非常少,不知道在哪里報錯了揖膜。這時候使用gradlew就可以快速的對錯誤進行定位誓沸。
使用命令查看錯誤詳細信息:gradlew build -–stacktrace ,使用該條命令編譯項目壹粟,并打印異常堆棧信息(當然還可以添加其他的參數(shù))
或者說我們在編譯報錯時 拜隧,Android studio 往往會告訴我們是哪一個task執(zhí)行失敗了,這打印出來的信息中趁仙,我們能找到類似這種信息Task :app:mergeDebugResources FAILED
洪添,它告訴我們 mergeReleaseResources task執(zhí)行失敗,那么我們就可以單獨執(zhí)行這條命令(gradlew :app:mergeDebugResources
)雀费,打印出失敗的詳細信息干奢,然后通過詳細信息就可以對錯誤的地方進行修改了。
使用Android Studio點擊執(zhí)行命令
在Android Studio中盏袄,有很多命令其實都不需要我們?nèi)ビ涀∶罘蘧驗榇蠖鄶?shù)的命令可以通過點擊的形式執(zhí)行,我們最常使用的就是運行apk貌矿、使用Android Studio進行打包炭菌。其實,在Android Studio的 Gradle 窗口中還有很多的命令可以通過點擊直接執(zhí)行逛漫。如圖:
對于打印錯誤的詳細信息黑低,其實Android Studio中也是可以配置的,位置方式如下:【File -> Settings -> Build, Execution, Deployment > Compiler 的 Command-line Options: 】后面的輸入框中可以輸入 --stacktrace 或其他需要打印的詳細信息參數(shù)酌毡。