美文网首页
Gradle 介绍

Gradle 介绍

作者: 月影路西法 | 来源:发表于2020-11-03 19:06 被阅读0次

Gradle介绍

apk的构建过程


apk的构建过程.png

这个APK构建的过程主要分为以下几步:

通过AAPT(Android Asset Packaging Tool)打包res资源文件,比如AndroidManifest.xml、xml布局文件等,并将这些xml文件编译为二进制,其中assets和raw文件夹的文件不会被编译为二进制,最终会生成R.java和resources.arsc文件。
AIDL工具会将所有的aidl接口转化为对应的Java接口。
所有的Java代码,包括R.java和Java接口都会被Java编译器编译成.class文件。
Dex工具会将上一步生成的.class文件、第三库和其他.class文件编译成.dex文件。
上一步编译生成的.dex文件、编译过的资源、无需编译的资源(如图片等)会被ApkBuilder工具打包成APK文件。
使用Debug Keystore或者Release Keystore对上一步生成的APK文件进行签名。
如果是对APK正式签名,还需要使用zipalign工具对APK进行对齐操作,这样应用运行时会减少内存的开销。
从以上步骤可以看出,APK的构建过程是比较繁琐的,而且这个构建过程又是时常重复的,如果没有构建工具,手动去完成构建工作,无疑对于开发人员是个折磨,也会产生诸多的问题,导致项目开发周期变长。
在Gradle出现之前,有三个基于Java的构建工具:Ant、Gant和Maven,它们被应用于Java或者Android开发中,我们来看看它们都有什么特点。

Gradle的特性
Gradle是一款基于JVM的专注于灵活性和性能的开源构建工具。


image.png

从上图可以看出,Gradle结合Ant和Maven等构建工具的最佳特性。它有着约定优于配置的方法、强大的依赖管理,它的构建脚本使用Groovy或Kotlin 编写,是Android的官方构建工具。Gradle的构建脚本的样式如下所示。
build.gradle

apply plugin:'java'
group='com.mycompany.app'
archivesBaseName='my-app'
version='1.0-SNAPSHOT'

repositories{
   mavenCentral()
}

dependencies{
   testCompile 'junit:4.11'
}

这个build.gradlet等同于此前Maven的pom.xml。可以看出Groovy编写构建脚本代码量更少,可读性更强。
下面列出Gradle与竞争对手不同的特性。

1.1 轻松的可拓展性

Gradle 有非常良好的拓展性。如果你想要在多个构建或者项目中分享可重用代码,Gradle的插件会帮助你实现。将Gradle插件应用于你的项目中,它会在你的项目构建过程中提供很多帮助:为你的添加项目的依赖的第三方库、为你的项目添加有用的默认设置和约定(源代码位置、单元测试代码位置)。其中Android Gradle插件继承Java Gradle插件,在本系列后续的文章会介绍插件的内容。

1.2 采用了Groovy

Ant和Maven的构建脚本是由XML来编写的,如果XML逻辑复杂内容太多就不容易维护。Gradle可以使用Groovy来实现构建脚本,Groovy 是基于Jvm一种动态语言,它的语法和Java非常相似并兼容Java,因此你无需担心学习Groovy的成本。Groovy在Java的基础上增加了很多动态类型和灵活的特性,比起XML,Gradle更具有表达性和可读性。

1.3 强大的依赖管理

Gradle提供了可配置的可靠的依赖管理方案。一旦依赖的库被下载并存储到本地缓存中,我们的项目就可以使用了。依赖管理很好的实现了在不同的平台和机器上产生相同的构建结果。

1.4 灵活的约定

Gradle可以为构建你的项目提供引导和默认值,如果你使用这种约定,你的Gradle构建脚本不会有几行。比起Ant,Gradle不仅仅提供了约定,还可以让你轻松的打破约定。

1.5 Gradle Wrapper

Gradle Wrapper是对Gradle 的包装,它的作用是简化Gradle本身的下载、安装和构建,比如它会在我们没有安装Gradle的情况下,去下载指定版本的Gradle并进行构建。Gradle的版本很多,所以有可能出现版本兼容的问题,这时就需要Gradle Wrapper去统一Gradle的版本,避免开发团队因为Gradle版本不一致而产生问题。

1.6 可以和其他构建工具集成

Gradle可以和Ant、Maven和Ivy进行集成,比如我们可以把Ant的构建脚本导入到Gradle的构建中。

1.7 底层API

Gradle显然无法满足所有企业级构建的所有要求,但是可以通过Hook Gradle的生命周期,来监控和配置构建脚本。

1.8 社区的支持和推动

Gradle是一个开源的项目,它遵循了Apache License 2.0协议。Gradle的优良特性吸引了很多开发者并形成了Gradle社区,很多开源软件开发者为Gradle的核心代码做出了共享。

相关文章

  • Gradle系列

    Gradle系列:Gradle系列一之Gradle介绍Gradle系列二之配置Groovy环境Gradle系列三之...

  • Gradle介绍

    简介 Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置...

  • Gradle介绍

    参考链接:http://wuxiaolong.me/2016/03/30/gradle4android1/

  • Gradle介绍

    前言 构建,软件生命周期中重要的一环,在现代软件开发过程中,起着越来越重要的作用。过去在Java或类Java的世界...

  • gradle介绍

    gradle的生命周期配置->初始化->加载

  • Gradle介绍

    Gradle工具使用入门到精通: Java作为一门世界级主流编程语言,有一款高效易用的项目管理工具是java开发者...

  • Gradle 介绍

    Gradle介绍 apk的构建过程 这个APK构建的过程主要分为以下几步: 通过AAPT(Android Asse...

  • gradle介绍

    1. gradle是什么? gradle是一款构建工具 2.什么是构建工具? 自动化帮我们完成一系列的编译打包的流...

  • Android Gradle使用详解(二)--添加依赖

    Android Gradle使用技巧-gradle使用详细介绍Android Gradle使用详解(一)--设置a...

  • 小码哥Android培训-Gradle 入门到精通(一)

    前言 Gradle详解内容将分篇介绍,这里首先介绍Gradle的基础知识和项目结构。 1 Gradle 安装 gr...

网友评论

      本文标题:Gradle 介绍

      本文链接:https://www.haomeiwen.com/subject/jreivktx.html