Apk反编译流程
.apk文件的组成
apk文件其实就是个压缩包,里面包含:
- classes.dex文件
- resource
打包流程
- aapt编译打包资源文件,生成
R.java
。- 编译AndroidManifest成二进制;
- 编译layout等xml文件,生成
R.java
,和resource.arsc
文件。
- 处理aidl文件,生成对应的.java文件。
- java编译器(javac)编译项目源码,生成.class文件,位于bin/classes目录下;
- Android编译器使用dx工具整合所有的class文件生成
classes.dex
文件; - 由
apkbuilder
打包生成apk; - 对包签名;
- 对齐处理,将包中的资源文件距离文件起始偏移为4字节的整数倍,这样通过内存映射访问apk文件时可提高速度,减少运行时内存的使用。
安装流程
核心类:PMS
(PackageManagerService)
- 复制apk到
data/app
目录下,解压并扫描安装包,把classes.dex文件保存到dalvik-cache目录,并再data/data目录下创建对应的应用数据目录; - 解析AndroidManifinest,提取信息写入
/data/system/packages.xml
; - Launcher加载桌面图标;
APK安装方式
方式 | 有无界面 |
---|---|
系统应用 | 无 |
market应用下载 | 无 |
第三方下载 | 有 |
adb | 无 |