1. 程式人生 > >關於使用打包命令gradle、gradlew以及使用AndroidStudio右側gradle選單欄打包/install-run的區別

關於使用打包命令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不能被勾上。

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


下載完後,用於存放的目錄命名規則為(以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,即services.gradle.org/dis,注意檔案中的\不算。對distributionUrl計算md5。例如printf “services.gradle.org/dis” | md5 得到8c9a3200746e2de49722587c1108fe87。利用0x8c9a3200746e2de49722587c1108fe87構造一個uint 128位整數。將整數利用base36得到base36的值(取小寫)。如2.14.1-all的base36值為8bnwg5hd3w55iofp58khbp6yv。

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目錄)