关于使用打包命令gradle、gradlew以及使用AndroidStudio右侧gradle菜单栏打包/install-run的区别

时间:2024-03-21 19:39:09

关于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目录)