android构建过程
参考: http://blog.csdn.net/shangmingchao/article/details/47375111
首先,需要了解一下构建APK的七大工具:
①aapt
全称是Android Asset Packaging Tool,Android资源打包工具。可以将资源文件编译成二进制文件,还可以查看、创建、更新zip格式的文档附件(zip、jar、apk)。
②aidl
全称是Android Interface Definition Language,Android接口定义语言。可以将.aidl文件编译成.Java文件。
③javac
全称是Java Compiler,Java编译器。可以将Java语言编写的类和接口定义文件(.java)编译成字节码类文件(.class)。
④dx
全称是Dalvik Executable,Dalvik虚拟机可执行程序。可以将部分.class文件转换成一个.dex文件。
⑤apkbuilder
可以将.dex文件、已经打包好的资源文件、libs中的Native库等其它资源打包成未签名的.apk文件。SDK3.0之后废弃了该工具,可以直接利用sdklib.jar中的APKBuilderMain.class实现其功能。
⑥jarsigner
全称是Java Archive Signer,Jar签名工具。可以为jar文件签名,还可以校验jar文件的签名和完整性。
⑦zipalign
可以优化apk。以帮助操作系统更高效地根据请求获取资源,将Data structure alignment(DSA,数据结构对齐标准)限定为4-byte boundaries。
这七大工具就包含在 我们配置Android SDK时下载的 Android SDK Build-tools中,有了这“七个小矮人”的帮助,我们就能顺利地将IDE中的项目变成可以在设备上运行的应用程序了,下图简单描述了这个过程,是官网上的一张图^_^。
详细的构建过程如下图所示:
也是官网上的一张图,哈哈。总之就是利用各种工具以生成中间文件(intermediates)的形式最终生成apk文件。下面是关于这个过程的一些解释:
①aapt工具将程序的资源文件(如AndroidManifest.xml文件、Activity中的xml布局文件)进行编译,并生成供Java代码引用资源的R.java文件。
②aidl工具将所有.aidl接口转换成.java接口。
③所有的Java代码(包括R.java和.aidl文件)被Java编译器编译成.class文件。
④dex工具将所有的.class文件转换成Dalvik字节码,第三方库和所有在module构建中用到的.class文件也将被转换成.dex文件,以便被打包成最终的.apk文件。
⑤所有无需编译的资源(如图片)、已经编译好的资源,以及.dex文件被发往apkbuilder工具以打包成一个.apk文件。
⑥打包好了.apk文件后,一旦apk被创建,在安装到设备之前必须用debug key或release key签名。
⑦最终,若应用已经用发行模式签名了,你必须用zipalign工具对齐.apk。因为对齐最终的apk有助于该应用在设备上运行时减小内存的使用。
Android构建对应的API Level参见:API_LEVEL。
android构建过程相关推荐
- Android构建流程——篇二
文章目录 预操作 任务列表 如何查看一个task类 Task1: checkDebugClasspath 1. input/output 2. 如何找到任务实现类 3. 核心类(AppClasspat ...
- android Android项目构建过程
今天,简单讲讲android studio如何把写好的工程打包成apk的. 平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run 'app'就可以在buil ...
- App打包原理——Android项目构建过程
从开发者直观感受上来说,项目构建就是从Android Studio 点击'run'到生成apk之间的过程.今天我们讲解下这个过程中,用到的构建工具和构建的过程. 一)如下是一个apk解压后的目录,我们 ...
- android 详细构建过程,Android构建模块详细步骤概述
大家可能还记得,我们51CTO在一篇文章中介绍过有关Android模块的一些基本概念,相信大家应该可以对这些模块有一个深刻的认识了.在这里,我们会分步骤详细为大家讲解一下Android构建模块的相关知 ...
- Android启动过程以及各个镜像的关系
Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...
- 《Android构建MVVM》系列(一) 之 MVVM架构快速入门
前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Arc ...
- android 构建者设计模式,Android中的设计模式之构建者模式
参考 <设计模式:可复用面向对象软件的基础 >3.2 Builder 生成器--对象创建型模式 <Android源码设计模式解析与实战>第3章 Builder模式 意图 将一个 ...
- APK构建过程-命令行编译
官方对APK构建过程的介绍 官方 - 构建流程介绍 典型 Android 应用模块的构建流程,按照以下常规步骤执行: 编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 An ...
- 迁移学习+TfLite Android构建自己的喵咪识别APP(一)
迁移学习+TfLite Android构建自己的喵咪识别APP(一) 本教程是我自己实践过程的记录,具体的理论细节请参照其他博客 一.基础知识 官方实践教程一: 迁移学习实现图像分类器 https:/ ...
最新文章
- 港中文自动驾驶点云上采样方法
- 来认识世界上第一支AI基金:模仿股票分析师 365天无间断工作
- java导出csv文件使用Excel打开乱码问题
- Windows异常学习笔记(一)—— CPU异常记录模拟异常记录
- FFmpeg转OpenCV Mat显示
- 【Verilog语法】PC-relatve branch 以及 Delay Slot 的含义
- siwft初学(一)
- KOA中的ejs的基本使用
- C++ 虚函数 纯虚函数 抽象类 代码示例
- qml 时间控件_Qt6官方最新消息:桌面样式Qt quick Controls 2支持大多控件,委托更少,运行更流畅...
- docker每次都重新拉取远程镜像的问题
- *第八周*数据结构实践项目四【字符串加密】
- kubernetes多节点集群搭建过程分析
- 泛泰A870 Recovery KitKat 合集
- 如何查看自己windows电脑的IP地址
- python爬取淘宝数据遇见的坑
- kafka内外网连接问题
- 一张老照片上看故乡内江
- 【报告分享】小红书·新消费浪潮下的决策价值之地-小红书(附下载)
- JVM监控及诊断工具-GUI篇
热门文章
- js控制复选框选中显示不同表单_Vue之 表单
- linux 有用的命令,linux有用命令(持续更新)
- java中输入char类型_java中如何输入char类型
- @excel注解_java bean 一对多,多对一 poi导出excel表格
- 【项目管理】质量管理
- 软件开发定律系列之布鲁克斯定律有感
- 给新手项目经理的12条建议
- Dockerfile中通过ENV指定动态参数在RUN时传递参数(部署后台jar包时指定端口为例)
- SqlServer在附加数据库时提示:无法打开物理文件**.mdf 操作系统错误拒绝访问
- Linux-通过XShell使用sz命令提示找不到