前言:

关于gradle打包流程,大的可以分为以下几个方面:

一、对gralde打包流程的整体把控。

二、对gradle的进一步理解,这其中包括:gradle到底是什么,gradle的项目层次结构,gradle的一些依赖指令,gradle wrapper,自定义task,手写插件。

三、对gradle的深入分析,这其中包括:gradle的主要task分析等等。

这篇文章先说下对gradle打包流程的整体把控。

Android构建系统编译应用资源和源代码,然后将它们打包成可测试、部署、签署和分发的APK或Android App Bundle。

我们使用Android Studio开发的时候,使用gradle构建工具包来自动执行和管理构建流程,同时也可以

灵活地自定义构建配置。

Gradle和Android插件是独立于Android Studio运行的,所以我们除了可以在Android Studio上构建Android应用外,还可以通过命令行构建Android应用。

构建流程图:

  1. 编译器将源代码转换成DEX文件(Dalvik可执行文件,其中包括在Android设备上运行的字节码),并将其他所有内容转换成编译后的资源。
  2. 打包器将DEX文件和编译后的资源组合成APK或AAB。必须先为APK或者AAB签名,然后才能将应用安装到Android设备或分发到Google Play等应用商店。
  3. 打包器使用调试或发布密钥库为APK或AAB签名。
  4. 在生成最终APK之前,打包器会使用zipalign工具(zipalign 是一种 zip 归档文件对齐工具。它可确保归档中的所有未压缩文件相对于文件开头都是对齐的。)对应用进行优化,以减少其在设备上运行时所占用的内存。

build配置文件:

Android Studio会与Android Plugin for Gradle这个构建工具包协作,当我们在Android Studio中开始一个新项目时,会自动创建一些文件,并为其填充合理的默认值。Android应用模块的默认项目结构如下:

创建自定义build配置需要对这些build配置文件(即build.gradle文件)做出更改。这些纯文本文件使用领域特定语言(DSL)以Groovy描述和操作构建逻辑。其中Groovy是一种适用于Java虚拟机(JVM)的动态语言。

  • Gradle设置文件(settings.gradle文件)位于项目的根目录下,用于指示Gradle在构建应用时应将哪些模块包含在内。对于多模块项目需要指定应包含在最终build中的每个模块。
  • 顶层构建文件(顶层build.gradle文件)位于项目的根目录下,用于定义适用于项目中所有模块的构建配置。默认情况下,顶层构建文件使用buildscript代码块定义项目中所有模块共用的Gradle代码库和依赖项。注意,模块的依赖项不要放在顶层build.gradle文件的buildscript中,而应该放在具体模块的build.gradle文件中。对于包含多个模块的项目,可能有必要在项目级别定义某些属性并在所有模块之间共享这些属性,为此,可以将额外的属性添加到顶层build.gradle文件内的ext代码块中。当然,实际上我们应该避免这样做,因为这样会导致共享这些属性的模块相互结合,使得以后将模块作为独立项目导出更加困难。)
  • 模块级构建文件(模块级build.gradle文件)位于每个project/module/目录下,用于为其所在的特定模块构建设置。我们可以通过配置这些构建设置提供自定义打包选项(如额外的构建类型和产品变种),以及替换main/应用清单或顶层build.gradle文件中的设置。
  • Gradle属性文件。Gradle还包含两个属性文件,它们位于项目的根目录下,可用于指定Gradle构建工具包本身的设置:gradle.properties和local.properties。我们可以在gradle.properties文件中配置项目全局Gradle设置,比如使用androidX(android.useAndroidX=true)。我们可以在local.properties文件中为构建系统配置本地环境属性,其中包括sdk.dir(SDK的路径)、ndk.dir(NDK的路径,不过此属性已被弃用,NDK的所有下载版本都安装在Android SDK目录下的ndk目录中)、cmake.dir(CMake的路径)、ndk.symlinkdir(在Android Studio 3.5及更高版本中,创建指向NDK的符号链接,该符号链接的路径可比NDK安装路径短)

gradle打包流程(一)--- 整体把控相关推荐

  1. gradle打包流程(二)--- 进一步理解gradle

    一.gradle是什么 1.gradle是一个自动化构建工具. gradle是通过组织一系列task来最终完成自动化构建的,所以task是gradle里最重要的概念.以生成一个可用的apk为例,整个过 ...

  2. Android Ant 和 Gradle 打包流程和效率对照

    一.Ant 打包:(下载ant.配置环境变量就不说了) 1.进入命令行模式,并切换到项目文件夹.运行例如以下命令为ADT创建的项目加入ant build支持: android update proje ...

  3. Android打包流程-签名

    编译任务 META-INF主要用来存储当前的apk的签名信息, 与AP相关的签名信息有下面两个: validateSigningDebug packageDebug 校验签名文件 会先通过valida ...

  4. 从 Android 到 React Native 开发(四、打包流程解析和发布为 Maven 库 )

    1.从 Android 到 React Native 开发(一.入门) 2.从 Android 到 React Native 开发(二.通信与模块实现) 3.从 Android 到 React Nat ...

  5. 【SDK接入篇】【1】Unity的internal 与 gradle打包

    一.简单说说internal 与 gradle打包的区别 **internal: unity内置,仅需Android SDK支持,不能导出工程** (适用于仅使用Unity开发的项目) **Gradl ...

  6. Unity4.x UWP版本打包流程

    Unity4.xUWP版本打包流程整理 一.准备 1.安装Win10专业版(版本号10.0.14393.0 及以上); 2. 64位处理器; 3.下载并安装Windows Software Devel ...

  7. rn android mac打包,React-Native之MAC平台Android apk打包流程

    MAC :Android打包流程7步走:(详情参照英文官网) 1).使用keytool首先生成keystore(包含storeFile file.storePassword .keyAlias .ke ...

  8. 安卓打包流程一篇文章就够了

    作为一个安卓开发,如果你对安卓打包流程还不熟悉的话?不妨看看这篇文章.本文会带你深入了解安卓打包流程的各个细节.更重要的是,熟悉安卓打包流程会让你对apk瘦身.参数化构建.资源文件处理有更深的理解. ...

  9. webpack 打包流程

    流程梳理 在开始之前我们先对于整个打包流程进行一次梳理. 这里仅仅是一个全流程的梳理,现在你没有必要非常详细的去思考每一个步骤发生了什么,我们会在接下来的步骤中去一步一步带你串联它们. 整体我们将会从 ...

最新文章

  1. 让Centos5.6的Firefox支持Java
  2. java 方法特点是什么_Java String 的特点是什么?它有哪些重要的方法?
  3. python基础指令-python的一些基本命令
  4. 你应该知道的Excel 2007小技巧
  5. php取指定长度,php截取指定长度的简单示例
  6. 客户信贷应收总额相关
  7. Flink Forward Asia Hackathon 最新参赛指南请查收
  8. flink从0到第一个应用成功运行遇到的所有问题和解决方法
  9. Java中的Memento设计模式-示例教程
  10. React事件绑定几种方法测试
  11. 一个例子看懂神马是闭包
  12. MFC中的CString类使用方法指南
  13. 想为自己设置的软件加一个属于自己的图标吗?使用AWT_Swing_图标解决你的问题(源码解析)
  14. Unity编辑器扩展-基本界面编写
  15. cmd控制台执行php乱码,解决CMD控制台乱码问题
  16. linux dns mx 记录,一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录
  17. JSF 原理简要介绍
  18. 背景图片大小兼容ie
  19. PADS Logic 原理图连接
  20. 服务器可视化监控系统,可视化服务器监控系统

热门文章

  1. elf文件反编译C语言,如何将ELF可执行文件转换为C代码?生成的C代码不需要是人类可读的...
  2. 计算机辅助药物设计manson,计算机辅助药物设计 薛定谔 autodock
  3. 2020算法秋招面经
  4. 魔兽争霸3地图(WarIII Maps):神魔之井
  5. 服务器系统盘 转速,服务器磁盘转速怎么看
  6. mysql 增加合计行_SQL:给查询添加一个合计行
  7. 【单片机】2.8 AT89S52单片机的最小应用系统
  8. JavaScript正则表达式验证邮箱
  9. 诛仙服务器显示横线,诛仙手游字变颜色怎么弄_诛仙手游字体颜色代码大全_快吧手游...
  10. 3.01 bison基本概念及语法介绍