Android学习笔记之编译系统(五)apk编译流程
apk项目是如何编译的?
总结:
我们可以通过mm showcommands命令查看编译过程。今天下载了小米的Notes,便签,没有Android.mk文件,自己加上了Androd.mk,将这个项目放在自己的电脑工程下编译。总结了一下编译过程,不当之处请指正。参考柯元旦android内核剖析。
接下来我们就按顺序看看apk编译过程中的流程。
1、首先编译项目下的资源文件,生成R.java文件。因为资源文件相对独立,不会跟java文件存在依赖,相反java文件要以来资源文件,因为我们在java文件中通过R.string.xx来引用具体某个资源。编译res资源文件,主要是aap进行编译。命令使用:
-J :指定R.java的输出目录
-M:指定AndroidManifest.xml的位置
-P:指定public_resources.xml的输出目录,这个文件记述了apk资源中属性的相关描述
-S:指定res目录的路径
-I:指定apk项目可能引用的其他资源,比如framework层下的资源。
比如短彩信中会引用framework下的资源
acp -fp /out/target/product/generic/obj/APPS/MiuiNotes_intermediates/package.apk /out/target/product/generic/system/app/MiuiNotes.apk
这样我们通过编译同时生成了MiuiNotes.apk以及MiuiNotes.odex文件。
我们的源文件class.dex包含在MiuiNotes.odex中,我们的MiuiNotes.apk中包括资源文件。