天天看點

關于使用打包指令gradle、gradlew以及使用AndroidStudio右側gradle菜單欄打包/install-run的差別

關于APP的打包,我們常用的有:

1.使用gradle指令打包

2.使用gradlew指令打包

3.使用AndroidStudio自帶工具打包

那麼,你有沒有考慮過這三種方式的差別呢?我就給大夥簡單介紹下吧。

1.使用gradle指令打包。

在cmd控制台或者AndroidStudio的Terminal使用gradle指令打包的話,需要在環境變量裡配置gradle路徑和ANDROID_HOME(SDK路徑),這樣 的話,使用gradle指令進行assemble打包,我們使用到的Gradle工具就是環境變量配置路徑裡的Gradle工具了。

2.使用gradlew指令打包

重點說下在項目目錄下,使用gradlew指令打包。gradlew即gradle-wrapper就是Gradle的封裝類,這能友善我們在不使用開發工具的情況下,也能對項目進行Gradle打包。gradlew指令使用到的Gradle工具放在C:\Users\使用者名\.gradle\wrapper目錄下,當你用Studio打開新項目時,如果此項目用到的gradle-wrapper版本是之前你沒使用過的話,那麼就會去下載下傳此版本的gradle-wrapper,并儲存到C:\Users\使用者名\.gradle目錄下,當然,下載下傳的前提是你的開發工具Gradle配置不能使用離線版本。如下圖的offline work不能被勾上。

關于使用打包指令gradle、gradlew以及使用AndroidStudio右側gradle菜單欄打包/install-run的差別

自動下載下傳完後,我們可以檢視到C:\Users\使用者名\.gradle\wrapper目錄下,已經有你需要的版本了,如下圖。

關于使用打包指令gradle、gradlew以及使用AndroidStudio右側gradle菜單欄打包/install-run的差別

下載下傳完後,用于存放的目錄命名規則為(以2.14.1-all為例):

wrapper/dists/gradle-2.14.1-all/${base36}/gradle-2.14.1-all.zip 

wrapper/dists/gradle-2.14.1-all/${base36}/gradle-2.14.1-all.zip.lck 

wrapper/dists/gradle-2.14.1-all/${base36}/gradle-2.14.1-all.zip.ok

其中,base36的規則為:

從gradle/wrapper/gradle-wrapper.properties中得到distributionUrl,即https://services.gradle.org/distributions/gradle-2.14.1-all.zip,注意檔案中的\不算。對distributionUrl計算md5。例如printf “https://services.gradle.org/distributions/gradle-2.14.1-all.zip” | md5 得到8c9a3200746e2de49722587c1108fe87。利用0x8c9a3200746e2de49722587c1108fe87構造一個uint 128位整數。将整數利用base36得到base36的值(取小寫)。如2.14.1-all的base36值為8bnwg5hd3w55iofp58khbp6yv。

關于使用打包指令gradle、gradlew以及使用AndroidStudio右側gradle菜單欄打包/install-run的差別

3.使用AndroidStudio自帶工具打包

當我們使用AndroidStudio右側gradle菜單欄打包或者install-run的時候,使用到的Gradle工具其實是在AndroidStudio安裝目錄\gradle目錄下的Gradle工具,這是我們下載下傳AndroidStudio時預設放在AndroidStudio下的Gradle工具,這是友善,即使在打開新項目時,Gradle工具下載下傳失敗了,也能通過install-run或右側gradle菜單欄打包等方式運作項目。

總結:

1.使用gradle指令打包(gradle工具路徑為環境變量裡配置的路徑)

2.使用gradlew指令打包(gradle工具路徑在C:\Users\使用者名\.gradle\wrapper目錄下)

3.使用AndroidStudio自帶工具打包(radle工具路徑在AndroidStudio安裝目錄\gradle目錄下)

繼續閱讀