【Android】Gradle基础

Groovy

  • Apache的Groovy是Java平台上设计的面向对象编程语言。
  • Groovy代码动态地编译成运行于Java虚拟机(JVM)上的Java字节码,可以与其他Java代码和库进行互操作。在可运行Java的地方,就可运行Groovy。
  • 可以作为Java平台的脚本语言使用,并结合了Python、Ruby、Smalltalk等语言的强大功能。脚本语言用于将应用程序连接起来,实现一些繁琐的,变动频繁的细节,如基于groovy的 gradle构建等;只需要非常少的代码,却实现了相当强大的功能。
  • Groovy的语法与Java非常相似,大多数Java代码也符合Groovy的语法规则,大部分有效的Java文件也是有效的Groovy文件。
  • Groovy代码比Java代码更加紧凑,因为它不需要Java需要的所有元素。
  • Groovy特性包括了Java中不支持的静态和动态类型(使用关键字 def),
    运算符重载,提供了lists(列表)和关联数组(maps)提供了原生语法,
    原生支持正则表达式,多态迭代,字符串内嵌表达式,
    添加帮助方法以及Null条件运算符
  • 引入了DSL(领域定义语言)概念,简单易读,方便维护。
    DSL的全称是 Domain Specific Language,即领域特定语言,或者我们可以翻译成“特定领域的语言”。
    它的特性是为解决某一类任务而专门设计的语言。

Gradle

  • Gradle是一个项目构建工具,可以按照一定的规则把目录和文件关联起来,自动化地构建从而形成一个项目。
  • Gradle是一个开发框架,基于Groovy语言,支持各平台基于它的框架去开发定制自己编译和打包规则。
构建
  • 构建
    包括编译(Compile)、连接(Link)、将代码打包成可用或可执行形式等。AndroidStudio的build就是通过Gradle来实现的。
    如果没有构建工具,需要在控制台通过javac先将 Java 文件编译为 class 文件,然后再用jar命令将 class 文件打包为 jar 包。
    通过自动化构建工具只需要一个命令或是点一个按钮就可以打出 jar包。
    如果 Android 我们不用 Gradle 命令或是按运行按钮打包。那么我们得执行多少命令才能最终打出一个 apk 包。
    能够编译和打包android项目,是因为Google团队在Gradle的基础上扩展了一个Android的gradle插件。
  • Gradle插件
    是针对Gradle发行版和Android SDK Build Tools封装的一个工具,主要有两大功能:
    1、调用Gradle本身的代码和批处理工具来构建项目
    2、调用Android SDK的编译、打包功能
对比
  • Ant
    1、为 Java 项目提供平台构建任务,具有良好的跨平台性,用build.xml文件来配置。
    2、ant不支持自动去下载配置依赖jar,不支持动态编译。
    3、在项目规范上规范性不足,灵活性太高,对 build.xml 没有约定规范;
    4、XML 作为构建脚本,如果项目构建较为复杂,build.xml 就会很长,难以维护。
  • Maven
    1、约定优于配置。对目录结构有约束,不需要自定义构建过程,配置较为简单。
    2、Maven还具有生命周期,更重要的是Maven内置了依赖管理
    3、缓存机制。如Android中.gradle文件。
    4、缺乏灵活性: 规范性太强,缺乏灵活性,会写很多冗余配置;
  • Gradle
    1、强大的依赖管理(基于 Apache Ivy),支持自动下载依赖包
    2、具有Ant的task的强大和灵活,又有Maven的生命周期管理、规范化的构建框架和仓库,且易于使用 。
    3、扩展性:脚本基于Groovy的动态DSL,支持像写脚本一样的去写项目的构建规则。
    4、Gradle 是 Android 的官方构建工具,并支持许多流行的语言和技术。
    5、快速构建: 二次构建只构建我们修改代码相关的类,不会耗费时间来构建整个项目;
    6、高性能:Gradle使用了缓存机制来加快构建,如Android中的.gradle文件夹。
    7、强大的多工程构建支持
    8、对已有的 maven 和 ivy 仓库的全面支持
    9、支持依赖传递管理,而不需要远程仓库或者 pom.xml 或者 ivy 配置文件
使用
  • Projects和Tasks是Gradle中最重要的两个概念。
  • 任何一个Gradle构建都是由一个或多个projects组成的。
  • projects其实就是Idea、AndroidStudio中的Module
  • tasks顾名思义就是任务,它是Gradle中的原子性操作,如编译、打包、生成javadoc等,一个project中会有多个tasks。
  • Gradle的构建模块是基于task的,Gradle要做的就是按照task之间的依赖关系来组织task按照合适的顺序运行。

  • Gradle Wrapper。官方建议任何 Gradle 构建方法在 Gradle Wrapper 帮助下运行。
  • Gradle Wrapper 是一个脚本,调用事先已经声明的 Gradle 版本,编译前先下载它。这样本地不用再去手动安装 Gradle 环境,开发者能够快速的启动并且运行 Gradle 项目,提高开发效率。
  • 可以称 Gradle Wrapper 为 Gradle 包装器,是将 Gradle 再次包装。让所有的 Gradle 构建方法在 Gradle 包装器的帮助下运行。

  • Gradle评估(evaluate)和指定构建脚本时有三个固定步骤:
    1、初始化(Initialization): 初始化构建所需的运行环境,并检查哪些projects参与构建
    2、配置(Configuration): 将tasks组织起来,决定它们按何种顺序执行
    3、执行(Execution): 执行tasks
Android
  • Android 项目中跟 Gradle 相关的主要有 7 个部分:
  • 根目录下的 build.gradle:顶级构建文件,配置 Gradle 版本和 Maven 依赖;
  • app 目录下的 build.gralde文件:app 打包和签名配置,及模块的依赖;
  • gradle 文件夹: 配置 gradel-wrapper;
  • setting.gradle 文件: 添加编译的所有模块;
  • gradle.projects 文件: 项目范围的梯度设置,编译内存,Gradle 并发性等设置。;
  • gradlew 和 gradlew.bat 文件: Gradle 启动脚本文件;可以通过gradlew命令来打包
  • .gradle 文件夹: 编译时的缓存文件夹。
命令
  • 查看app模块的依赖
    $ gradle app:dependencies
  • 编译并打Debug包
    $ gradle assembleDebug
  • 编译app module 并打Debug包
    $ gradlew install app:assembleDebug
  • 编译并打Release的包
    $ gradle assembleRelease
  • 编译并打Release包并安装
    $ gradle installRelease
  • 卸载Release包
    $ gradle uninstallRelease
  • 排除某些任务
    $ gradle clean build -x mTest
参考:

https://m.imooc.com/wiki/gradlebase-intro
https://blog.csdn.net/LiMubai_CN/article/details/102746815
https://www.jianshu.com/p/cc909d2bd13e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值