分享好友 最新动态首页 最新动态分类 切换频道
Android Studio之Gradle和Gradle插件的区别
2024-12-27 00:41

什么是Gradle?什么是Gradle插件

Gradle 跟 Android Studio 其实没有关系,但是 Gradle 官方还是很看重 Android 开发的,Google 在推出 AS 的时候选中了 Gradle 作为构建工具为了支持 Gradle 能在 AS 上使用,Google 开发了一个 AS 的插件叫 Android Gradle Plugin  ,所以我们能在 AS 上使用 Gradle 完全是因为这个插件的原因。


Gradle           对应:是一个构建代码的工具gradle-wrapper.properties中的distributionUrl=https/://services.gradle.org/distributions/gradle-2.10-all.zip
Gradle插件  对应:是谷歌为使用Gradle工具而自行开发的工具,  build.gradle中依赖的classpath 'com.android.tools.build:gradle:2.1.2'


gradle-wrapper.properties中配置的是的Gradle的版本.

build.gradle中的依赖指定的是Gradle插件的版本.

详细说明

Gradle

  • 一个构建系统构建项目的工具,用来编译Android app能够简化你的编译、打包、测试过程。也就是把那一个个文件、文件夹按照一定的规则关联起来,形成一个项目的工具,它其实不仅仅是用在AndroidStudio上。在AS第一次创建项目会自动下载 Gradle,这个过程很漫长(100多M),但是第一次之后就ok了。
  • 维基百科是这样解释的:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。


    构建工具就是对你的项目进行编译、运行、签名、打包、依赖管理等一系列功能的合集,那如何理解构建工具

    我们以前用 Eclipse开发Android程序,而Eclipse最初是用来做Java 开发的,Googl为了能在 Eclipse 上进行Android 开发,开发了ADT 插件(Android Developer Tools,正是因为有了 ADT ,我们才可以在 Eclipse 上进行编译、运行、签名、打包等一系列流程。而这背后的工作都是 ADT 的功劳,ADT 就是我们的构建工具。    

    一般来说构建工具除了以上提到的编译、运行、签名、打包等,还具备依赖 管理的功能,什么是依赖管理呢?我们以前在 Eclipse 上开发 Android 引用第三方库,一般都是先下载 jar 文件,然后把 jar 文件添加到 libs 目录。但假设第三方库有更新,需要下载最新的 Jar 文件替换掉原来的,非常繁琐,可以说这种方式只有依赖,而没有管理。    

    Gradle 引用第三方库方式是这样的:    compile 'com.android.support:support-v4:24.0.1'    
    我们直接可以看到源地址,升级的话直接改下版本号就可以了,这就是所谓的依赖管理。    

    传统的构建工具有 Make、Ant、Maven、Ivy等,而 Gradle 是新一代的自动化构建工具,它是一个独立的项目,跟 AS、Android 无关,官方网站:https://gradle.org/ 
     类似 Ant、Maven这类构建工具都是基于 xml 来进行描述的,很臃肿,而 Gradle 采用的是一种叫做 Groovy 的语言,语法跟 Java 语法很像,但是是一种动态语言,而且在 Java 基础上做了不少改进,用起来更加简洁、灵活,而且 Gradle 完全兼容 Maven、Ivy,这点基本上宣布了 Maven、Ivy 可以被抛弃了,Gradle 的推出主要以 Java 应用为主,当然目前还支持 Android、C、C++。

    classpath 'com.android.tools.build:gradle:2.1.2' 

    这个就是依赖 gradle 插件的代码后面的版本号代表的是 android gradle plugin 的版本,而不是 Gradle 的版本,这个是 Google 定的,跟 Gradle 官方没关系。关于 android gradle plugin 的更多信息可以到这里查看,这里列举了 android gradle plugin 每个版本的具体变化与具体功能:http://tools.android.com/tech-docs/new-build-system   

Gradle插件

  • 我们在AS中用到的Gradle其实应该被叫做Android Plugin for Gradle,它本质就是一个AS的插件,它一边调用 Gradle本身的代码和批处理工具来构建项目,一边调用Android SDK的编译、打包功能,从而让我们能够顺畅地在AS上进行开发。
  • Gradle插件跟 Android SDK BuildTool有关联,因为它还承接着AndroidStudio里的编译相关的功能,这也是我们要在项目的 local.properties 文件里写明Android SDK路径、在build.gradle 里注明 buildToolsVersion 的原因。
  • Gradle插件是独立于Android Studio运行的,所以它的更新也是与Android Studio分开的。Gradle插件会有版本号,每个版本号又对应有一个或一些 Gradle发行版本(一般是限定一个最低版本,也就是我们常见的类似gradle-3.1-all.zip这种东西

如果这两个版本对应不上了,那你的工程构建的时候就会报错。
对应关系如下(官网链接:Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers

插件版本Gradle版本1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.1+2.3.0+3.3+3.0.0+4.1+3.1.0+4.4+

Android Studio 3.0 之后自动将插件版本升级到3.0.0,所以我们也需要对应地把Gradle升级到4.1才行

  • Gradle Wrapper意为 Gradle 的包装,它的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分

    假设我们本地有多个项目,一个是比较老的项目,还用着 Gradle 1.0 的版本,一个是比较新的项目用了 Gradle 2.0 的版本,但是你两个项目肯定都想要同时运行的,如果你只装了 Gradle 1.0 的话那肯定不行,所以为了解决这个问题,Google 推出了 Gradle Wrapper 的概念,它在你每个项目都配置了一个指定版本的 Gradle ,你可以理解为每个 Android 项目本地都有一个小型的 Gradle ,通过这个每个项目你可以支持用不同的 Gradle 版本来构建项目。    

     

    ,接下来就是教大家用命令行测试下,请大家在终端或者 AS 带的终端上切换到所在项目的目录,然后输入 https://blog.csdn.net/LVXIANGAN/article/details/gradlew -v (win用户直接输入 gradlew -v) ,即可以查看当前项目所用的 gradle 的版本,gradlew 即为 gradle wrapper 的缩写如果你是第一次执行命令行,那么会出现一个下载的提示紧接着会打印一个个的点,这个过程很漫长,依赖你的网速,时间几分钟到几十分钟不等。    

    有人有疑问,我 AS 上明明已经可以正常运行该项目的,说明 Gradle 已经下载过了,为什么命令行还要再下载一次?我也一直有这个疑问,理论上是不该再下载的,但是事实他就是要重新下载一次,我猜测可能是bug吧。
    如果下载完成输入 https://blog.csdn.net/LVXIANGAN/article/details/gradlew -v 出现如下结果,证明你的项目是ok的,否则就是你的项目配置有问题了。    


       

最新文章
如何通过百度SEO优化提升网站排名增加潜在客户流量
随着互联网技术的不断发展,越来越多的人开始关注网络营销这一领域。无论是个人创业者,还是大型企业,都意识到通过互联网平台推广产品、品牌的重要性。特别是在百度等搜索引擎优化(SEO)方面,如何有效提升自己的网站排名,吸引更多的潜
翼真L380提升幸福感 智能配置和质感都不输大牌
刚步入社会时,收入一般不会太可观,此时一辆经济高性价比的车型往往是最合适的。在与同级别车型的竞争中,在空间表现上值得一说。接下来就和小编一起看看吧。先来看下翼真L380的外观,翼真L380前脸提升了整车的档次,让人过目不忘。头灯非
阴阳师百闻牌输出式神卡牌评分 最强输出单卡排名攻略
在阴阳师百闻牌里,输出类式神是现在最为主流的式神,但它们的单卡的质量并不统一,究竟哪些单卡强度高,应该是我们合卡和抽卡的目标呢?下面就为大家带来详细的攻略介绍,一起来看看吧! 更多攻略点击:阴阳师百闻牌式神大全 这是一篇基于
惠州seo工作室(惠州seo公司)
大家好,今天小编关注到一个比较有意思的话题,就是关于惠州seo工作室的问题,于是小编就整理了1个相关介绍惠州seo工作室的解答,让我们一起看看吧。专业网站建设如何给企业带来最大回报?随着早期互联网的兴起,网站是一个公司的标配,可
第十一章 文件操作_C语言插入、删除、更改文件内容
我们平时所见的文件,例如 txt、doc、mp4 等,文件内容是按照从头到尾的顺序依次存储在磁盘上的,就像排起一条长长的队伍,称为顺序文件。 除了顺序文件,还有索引文件、散列文件等,一般用于特殊领域
微信小程序开发多少钱一个月
在当今互联网飞速发展的时代,微信小程序因其便捷、功能多样和用户量庞大,成为众多企业、商家乃至个体创业者拓展线上业务的重要工具。对于想要开发微信小程序的企业而言,最关心的问题之一就是费用问题。在合肥开发一款微信小程序的费用到
淘宝关键词排名优化怎么做?影响因素有哪些?
标题是淘宝店铺自然搜索流量最重要的入口,如果宝贝的标题没有做好,那么后续的运营也就没有什么意义了。想要获取自然搜索流量,那么标题的关键词就得有权重,有排名。一、淘宝标题关键词如何优化靠前?首先,搜索引擎会先抓取大热词,大热
转:Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
https://www.cnblogs.com/52xf/p/4209211.html    附上表结构和初始数据图:用法: 一:语法(用法):      rank() over([partition by col1] order by col2)      dense_rank() over([partition by col
相关文章
推荐文章
发表评论
0评