Android应用原码编译大致过程概括
2015-10-16 11:12
211 查看
编译过程
第一步:
工具:aapt
输入:assets目录,AndroidManifest.xml,res目录
输出:resources.ap_,R.java
其中,resources.ap_其实就是一个压缩文件,将其重命名为resources.zip,解压后可看到内容包括
assets目录(保持原样),
res目录(类型为res/animator、res/anim、res/color、res/drawable(非Bitmap文件,即非.png、.9.png、.jpg、.gif文件)、res/layout、res/menu、res/values和res/xml的资源文件会转换为二进制文件,图片等保持原样),
AndroidManifest.xml(已转换为二进制文件),
resources.arsc(资源索引表,二进制文件,存放的时xml资源的地址,位于寄存器中,便于快速高效访问)。
gen目录下生成R.java文件,赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中
参考下图:
第二步:
工具aidl工具
输入:aidl文件
输出:对应的.java文件
第三步:
工具:javac
输入:程序的.java文件,第一步生成的R.java文件,第二步aidl生成的相关.java文件,引入的包(.jar)等
输出:.class文件
第四步:
工具:dx.bat工具
输入:第三步生成的所有.class文件
输出:一个classes.dex文件
第五步:打包签名
输入:第一步resources.ap_中的四个文件(assets目录,res目录,AndroidManifest.xml,resources.arsc),第四步的classes.dex文件,libs目录(.so文件等)
输出:.apk文件
.apk文件解压后发现多了个META-INF目录,这是存放签名信息的目录
如下图:
第一步:
工具:aapt
输入:assets目录,AndroidManifest.xml,res目录
输出:resources.ap_,R.java
其中,resources.ap_其实就是一个压缩文件,将其重命名为resources.zip,解压后可看到内容包括
assets目录(保持原样),
res目录(类型为res/animator、res/anim、res/color、res/drawable(非Bitmap文件,即非.png、.9.png、.jpg、.gif文件)、res/layout、res/menu、res/values和res/xml的资源文件会转换为二进制文件,图片等保持原样),
AndroidManifest.xml(已转换为二进制文件),
resources.arsc(资源索引表,二进制文件,存放的时xml资源的地址,位于寄存器中,便于快速高效访问)。
gen目录下生成R.java文件,赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中
参考下图:
第二步:
工具aidl工具
输入:aidl文件
输出:对应的.java文件
第三步:
工具:javac
输入:程序的.java文件,第一步生成的R.java文件,第二步aidl生成的相关.java文件,引入的包(.jar)等
输出:.class文件
第四步:
工具:dx.bat工具
输入:第三步生成的所有.class文件
输出:一个classes.dex文件
第五步:打包签名
输入:第一步resources.ap_中的四个文件(assets目录,res目录,AndroidManifest.xml,resources.arsc),第四步的classes.dex文件,libs目录(.so文件等)
输出:.apk文件
.apk文件解压后发现多了个META-INF目录,这是存放签名信息的目录
如下图:
相关文章推荐
- Android apk 反编译和混淆
- 定制Android系统开发之二——系统服务
- Android KITKAT 以上实现translucent状态栏
- Android通知栏颜色改变方法
- Android平台对H264视频硬解码
- 查看Android应用包名、Activity的几个方法
- android中xml tools属性详解
- 怎样使一个Android应用不被杀死?
- android中ListView或GridView出现在adapter中的getView出现多次position为0的情况
- android ble蓝牙开发略解-Android 蓝牙4.0开发
- Android 实现圆形图片
- Android下常见的内存泄露 经典
- iOS和Android设计理念的演变
- 搭建 Android 开发环境
- 强烈推荐转载-Android 性能测试
- Android2.2、2.3定制修改状态栏布局、背景、去除状态栏按键、添加状态栏按键
- android修改浏览器默认主页
- android按钮弹出和收回
- 【Android】用MediaRecorder录制视频太短崩的问题
- Android内存泄漏分析及调试