Android构建流程——篇一
Android构建流程
- 前言
- APK 构建流程
- AGP(3.2.0)任务列表总览图
- 参考文献
前言
大家平时开发Android项目时一般都是点击AS run按钮,这样apk会自动安装到手机上,这整个过程到底发生来什么呢?
今天就来梳理下整个流程gradle做了什么,讲解前先来熟悉下apk整体构建流程
APK 构建流程
官方新图
如图 1 所示,典型 Android 应用模块的构建流程通常按照以下步骤执行:
- 编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 Android 设备上运行的字节码),并将其他所有内容转换成编译后的资源。
- APK 打包器将 DEX 文件和编译后的资源合并到一个 APK 中。不过,在将应用安装并部署到 Android 设备之前,必须先为 APK 签名。
- APK 打包器使用调试或发布密钥库为 APK 签名:
- 如果您构建的是调试版应用(即专用于测试和分析的应用),则打包器会使用调试密钥库为应用签名。Android Studio 会自动使用调试密钥库配置新项目。
- 如果您构建的是打算对外发布的发布版应用,则打包器会使用发布密钥库为应用签名。如需创建发布密钥库,请参阅在 Android Studio 中为应用签名。
- 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,以减少其在设备上运行时所占用的内存。
构建流程结束时,您将获得应用的调试版 APK 或发布版 APK,以用于部署、测试或发布给外部用户。
上面是官方新图,感觉没有
Android构建流程——篇一相关推荐
- Android构建流程——篇二
文章目录 预操作 任务列表 如何查看一个task类 Task1: checkDebugClasspath 1. input/output 2. 如何找到任务实现类 3. 核心类(AppClasspat ...
- Android构建流程——篇七
文章目录 Task24 transformClassesWithDexBuilderForDebug 1.input/ouput 2. 核心类(DexArchiveBuilderTransform,T ...
- Android构建流程——篇四
文章目录 Task9 generateDebugResValues 1. input/ouput 2. 核心类(GenerateResValues) Task10 generateDebugResou ...
- Android构建流程——篇六
文章目录 Task17: javaPreCompileDebug 1. input/ouput 2. 验证 3. 核心类(JavaPreCompileTask) Task18:compileDebug ...
- Android构建流程——篇五
文章目录 Task13: processDebugManifest 1. input/ouput 2. 整体流程 3. 调用链路 4. 核心类(MergeManifests) 5. AndroidBu ...
- Android构建流程——篇三
文章目录 Task5 checkDebugManifest 1. input/ouput 2. 核心类(CheckManifest) Task6 generateDebugBuildConfig 1. ...
- Android构建流程——篇八
文章目录 Task29 checkDebugLibraries 1. inut/ouput 2. 核心类(CheckMultiApkLibrariesTask) Task30 processDebug ...
- 优酷 Android 构建速度优化实践
作者:苏彦郊(木磊) Android 项目一般使用 gradle 作为构建打包工具,gradle 简洁.动态的功能特性为人津津乐道,同样,构建执行速度缓慢的缺陷也一直为人诟病. 近年来,随着优酷功能特 ...
- AndroidStudio目录结构 APP构建流程 Jenkins持续集成构建 Gradle介绍 Proguard混淆
Android Studio目录结构 通常我们是将工程设置成project模式,这个模式下我们的工程有很多目录: .gradle:包含一些Gradle编译脚本,gradle是Google推荐的编译工具 ...
最新文章
- Matlab编程与数据类型 -- 函数M文件的调用
- 【python小游戏】据说这是一款还原度超高的小游戏,你感受下......
- 简析.NET Core 以及与 .NET Framework的关系
- MySQL之优化器、执行计划、简单优化
- 奥拉星插件flash下载手机版下载安装_终于等到你!安卓微信7.0.13内测版发布 支持夜间模式 附下载地址!...
- Leaflef笔记-使用leaflet-tilelayer-wmts插件获取地图及坐标(含错误分析思路)
- 人脸识别算法二:Fisherface(LDA)
- linux对磁盘进行分区_如何在Linux中对磁盘进行分区
- java实现文件下载的两种方式6_struts2实现文件下载功能
- 面试小能手速成,接口测试脚本如何编写?其实很简单
- git学习笔记-(3-linux基本命令)
- 数据结构c语言版编程软件,数据结构严蔚敏4版PDF下载_数据结构C语言版严蔚敏下载 完整版_当载软件站...
- 为什么要分层?数据仓库分层架构深度讲解
- Linux参考资料名称,Linux系统管理员必备参考资料下载汇总
- 【转】关于在.Net开发中使用Sqlite的版本选择问题
- JavaWeb(10.21)
- 【数学】用C语言实现函数的定积分—— 把 “定积分定义计算出的值” 和 “牛顿-莱布尼兹公式计算出的值” 两者进行误差比较
- Node.js 使用 zlib 内置模块进行 gzip 压缩
- 大部分前端都在用的 ES6 代码简化技巧,你都在用吗?
- MongoDB高性能、高可用之副本集、读写分离、分片、操作实践
热门文章
- java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信
- 九、玩转JavaScript的数组(五)
- 二十一、String、StringBuffer和StringBuilder的区别是什么?
- 八、爬虫解析利器 PyQuery 的使用
- 四十、Scrapyd的安装及使用
- 图马尔可夫网络:融合统计关系学习与图神经网络
- 论文解读 | 利用脑功能连接实现疲劳驾驶检测
- 复旦大学邱锡鹏教授:NLP预训练模型综述
- 追一科技热招职位来袭:AI新世界,不做旁观者
- 输入法注入源码_将注入进行到底:利用Mono注入C#游戏脚本