命令行
很多做 Android 開發不久的同學,習慣於使用圖形界面,對命令行操作很陌生甚至恐懼。遇到 AS 運行錯誤,束手無策。
AS 為了確保易用性,也在 UI 界面上屏蔽了很多命令行運行的細節,導致很多人覺得 AS 難用。
這種情況,我在解決用戶集成使用 Bugtags SDK 的問題的時候,經常能遇到。其實 GUI 界面的操作,絕大部分情況下,也是基於命令工具的。如果你習慣了命令行,你會愛上它的,因為它簡單、直接,深入。
典型錯誤
AS 剛推出的時候,stackoverflow 上詢問最多的問題,便是進入項目的時候,一直處於:
Gradle: resolve dependancies '_debugCompile'
狀態,一直無法前進,到底 IDE 在做什么呢?看不出來。
一句命令行
當用戶遇到問題時,我最常提醒用戶使用的是在項目根目錄下,運行如命令行:
mac:
./gradlew clean build --info > bugtags.log
windows:
gradlew.bat clean build --info > bugtags.log
這個命令行的意思,是運行 clean 和 build 兩個 gradle task,並且打開 info 參數使得輸出更多的信息,最終把所有輸出的信息,輸出到項目根目錄下的 bugtags.log 文件。用戶把這個文件發給我,我根據這個輸出文件,通常就能分析出問題所在。
假設命令行去除重定向輸指令:
./gradlew clean build --info
信息將會輸出在控制台,剛才提到的那個典型錯誤,可能是這樣的:
其實是在下載一個比較大的文件,不用驚慌,你要做的就是 just wait! 至於是在下載什么。我想在下一篇詳細描述。
如果你對基本的命令行知識有所了解,前面就已經足夠了,如果你想了解更多,請繼續。
擴展
在哪運行
當我給出這個命令的時候,最常見的問題,就是在哪運行。答案是控制台(Terminal)。
控制台
在 mac 下,有 terminal(bash/zsh 等),在 windows 下,則是 powershell 或者 cmd。
關鍵一點:
├── gradlew
├── gradlew.bat
AS 在使用 Gradle 的時候,為了靈活,或者為了應對 Gradle 系統的快速迭代,推薦使用在項目根目錄中放置 Gradle 的 wrapper:gradlew 來實現對不同版本的使用。
因此,在控制台運行命令,主要是跟gradlew打交道。這個 wrapper,在 mac 下是一個具有執行權限的文件:gradlew,在 windows 下,是一個批處理文件:gradlew.bat。
通常,mac 下在當前目錄下運行可執行文件是這樣:./gradlew xxxwindows 下在當前目錄下運行批處理文件是這樣:
gradlew.bat xxxTerminal 插件
AS(Intellij IDEA)已經做了一個很實用的插件:
點擊 Terminal,AS 會幫你完成下面的操作:
- 模擬打開 terminal
- cd 到當前項目根目錄下
快速定位文件夾
IDE 還支持將項目中的某個文件夾拖放到 Terminal 窗口中實現快速定位到這個文件夾:![]()
使用 help
要知道都有哪些 gradle 命令運行的參數,可以使用:來獲取。下面列舉幾個重要的參數。$ ./gradlew --help USAGE: gradlew [option...] [task...] ...build 某個指定 module
AS 推薦的結構是multiple project結構,即一個 project 下,管理多個 module,如果每次都要 build 全部的 project 的話,有點浪費時間,則可以使用-p module參數,其中 module 是你要 build 的 module:$ ./gradlew -p app clean build明確指定不執行某個 task
Gradle 的命令存在依賴,例如 build task,是依賴於一系列的其他的 task,如果想要指定不執行某個 task,則可以使用-x task參數,其中 task 是要忽略的那個,這個參數可以傳遞多次。$ ./gradlew build -x test -x lint總結
Gradle 的命令行還有很多其他技巧,上面只是列舉到了本人日常用到最多的幾個。有興趣可以留言深入討論。參考資料
mac-terminal
windows-terminal
有問題?在文章下留言或者加 qq 群:453503476,希望能幫到你。
想要及時收到最新博客文章,請關注:
『mobdev』微信公眾號二維碼


