Android APK打包流程
目录
- 一、概述
- 二、打包流程
- 1、打包资源文件,生成R.java文件
- 2、处理aidl文件,生成相应的Java文件
- 3、编译项目源代码,生成class文件
- 4、转换所有的class文件,生成classes.dex文件
- 5、打包生成APK文件
- 6、对APK文件进行签名
- 7、对签名后的APK文件进行对齐处理
一、概述
今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。
通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式:
- 用Eclipse或者Android Studio集成开发环境直接生成APK;
- 使用Ant工具在命令行方式下打包APK。
不过不管哪种方式,打包APK的本质过程都是一样的。
APK文件:
其实就是一个压缩包,当你解压以后会发现它内部主要就是资源文件
和classes.dex
,这个classes.dex就是Android系统Dalvik虚拟机的可执行文件。
APK打包的流程图:
二、打包流程
1、打包资源文件,生成R.java文件
打包资源的工具是aapt(The Android Asset Packaing Tool),位于android-sdk/platform-tools目录
下。在这个过程中,项目中的AndroidManifest.xml文件
和布局文件XML
都会编译,然后生成相应的R.java
。
2、处理aidl文件,生成相应的Java文件
这一过程中使用到的工具是aidl
(Android Interface Definition Language),即Android接口描述语言
。位于android-sdk/platform-tools目录
下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。
如果在项目没有使用到aidl文件,则可以跳过这一步。
3、编译项目源代码,生成class文件
项目中所有的Java代码,包括R.java
和.aidl文件
,都会变Java编译器(javac)编译成.class文件
,生成的class文件位于工程中的bin/classes目录
下。
4、转换所有的class文件,生成classes.dex文件
dx工具
生成可供Android系统Dalvik虚拟机执行的classes.dex文件
,该工具位于android-sdk/platform-tools 目录
下。
任何第三方的libraries
和.class文件
都会被转换成.dex文件
。
dx工具
的主要工作是将Java字节码转成成Dalvik字节码
、压缩常量池
、消除冗余信息
等。
5、打包生成APK文件
所有没有编译的资源(如images等)
、编译过的资源和.dex文件
都会被apkbuilder工具
打包到最终的.apk文件
中。
打包的工具apkbuilder
位于 android-sdk/tools目录
下。apkbuilder为一个脚本文件,实际调用的是android-sdk/tools/lib/sdklib.jar文件
中的com.android.sdklib.build.ApkbuilderMain类
。
6、对APK文件进行签名
一旦APK文件生成,它必须被签名才能被安装在设备上。
在开发过程中,主要用到的就是两种签名的keystore。一种是用于调试的debug.keystore
,它主要用于调试,在Eclipse或者Android Studio中直接run以后跑在手机上的就是使用的debug.keystore。另一种就是用于发布正式版本的keystore
。
7、对签名后的APK文件进行对齐处理
如果你发布的apk是正式版的话,就必须对APK进行对齐处理,用到的工具是zipalign,它位于android-sdk/tools目录
下。
对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。
对齐的作用就是减少运行时内存的使用。
Android APK打包流程相关推荐
- rn android mac打包,React-Native之MAC平台Android apk打包流程
MAC :Android打包流程7步走:(详情参照英文官网) 1).使用keytool首先生成keystore(包含storeFile file.storePassword .keyAlias .ke ...
- Android apk打包流程★
1.apk打包 Android开发中打包apk主要有两种方式: ①使用Android Studio集成直接生成apk: ②使用ant工具在命令行方式下打包apk. 不管哪种方式,打包apk的本质过程都 ...
- Android APK 打包过程 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程
哔哩哔哩:https://www.bilibili.com/video/BV1UE411A7rW?p=1 Android 逆向工程师系统培训‹第九期›( 课程目录 ):https://ke.yijin ...
- 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )
文章目录 一.APK 文件结构 二.APK 打包流程 三.APK 安装流程 四.安卓虚拟机 一.APK 文件结构 Android 应用的安装包时 以 " .apk " 为后缀的 A ...
- apk私钥_移动安全(二)|APK打包流程及签名安全机制初探
0x00.今天我们聊什么? 今天我们聊些啥?许久不见,是该聊些啥了,话不多说,先来个五毛钱得,聊一聊胡小毛的Android逆向之路吧,当然,你们想知道的一定不是走了这么远的路,胡小毛今年是不是又长高了 ...
- android Apk打包过程概述_android是如何打包apk的
最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R. ...
- app加固apk文件防止反编译apk打包流程
文章目录 [1]加固 一.为什么要加固 二.加固方案 ①免费的第三方加固方案 ②付费的第三方加固方案SDK ③Java IO 流实现AES加密dex [2]加固方案的实现方式 [3]apk文件构造 [ ...
- Android中APK打包流程
aapt: android application package tool,SDK (Android打包流程图) #Android打包流程 1.通过aapt工具将 资源文件(res).清单文件(An ...
最新文章
- LINQ to SQL语句之 Count/Sum/Min/Max/Avg
- 【 数字信号处理 】定点数的表示之二进制数的原码与补码
- 过拟合与模型调优(part2)--重抽样技术
- MVC Controller与ActionResult的返回值
- 高效!Anchor DETR:旷视提出一种基于Transformer的目标检测神器!
- Selenium学习(2) 元素定位
- 关于物联网规则引擎技术,你想要知道的都在这儿!
- 剑指offer——3.实现数组中重复数字查找
- 【Flutter】Dart中的类和对象
- VS2012+OpenCV2.4.9+Qt5.3.1环境配置
- 数据科学 第 5 章 主成分分析(降维)、相关性
- 经纬度转换,度转度分秒,度分秒转为度,前端js
- 超像素分割图神经网络资料汇总
- opengl 4.5离线文档下载
- zemax---透镜基础篇
- java实现ZUC算法加密解密
- ecshop多国货币汇率换算,多国货币切换,多国货币价格转换
- 逻辑谬误_新网络谬误
- 公司董事会人数怎么确定
- 基于关联规则的气象服务智能推荐
热门文章
- 使用vs2010生成64位的dll文件
- 超级计算机作文650字,努力初中作文650字(通用11篇)
- 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
- 机器学习中的特征空间
- 【IUI 2020】人在回路机器学习——Human-in-the-Loop AI in Government: A Case Study
- Linux中设置开机启动执行命令和普通用户配置环境变量开机启动生效
- 用dd命令克隆ubuntu系统
- CC2640R2F的各个驱动文件放在哪里比较好
- linux系统自动清理日志实现脚本
- [附源码]Python计算机毕业设计高校教室管理系统