Android 定制编译基本流程

首先一般的目录结构的作用参考博客:[Android 源码目录结构详解][6]
在工作中,因为需要根据客户需求进行简单的系统定制,因此需要明确 android 系统运行会去哪些目录读取哪些 .mk 文件

一般手机定制的源代码中会存在两个目录,一个属于 android 源码部分,另一个属于自己公司定制的代码部分,由于 android 系统的运行是以散射的形式去读取 .mk 文件(首先读取项目的主 make 文件,再读取由主 make 文件引用的其他 make 文件,知道将所需要的 make 文件读取完整)

定制基本操作:

  1. 到自己所负责项目的 make 文件下找到需要的模块宏(eg:GN_APK_**_SETTINGS_SUPPORT)
  1. 根据找到的宏到定制项目下寻找该 apk 所在文件夹,该目录下的 .mk 文件就会有那个模块的宏开关,若不需要这个模块则直接改为 false
  2. 如果定制涉及到需要在代码中进行修改的话,则需要进入到该模块对应的代码中进行修改(找到需求中需要修改的地方即可)

编译的过程(以MTK为基础的定制):

  1. 首先,系统会加载 MTK Android 源代码目录下所需的系统文件
  2. 然后会加载 定制公司 project 目录文件下的 项目名.mk
  1. 然后会加载 定制公司名 目录文件下的对应项目的文件(比如 海外 项目)
    (前三步都是在 MTK Android 源码目录下进行的,每一层级若出现同名文件都会进行覆盖)
  2. 加载第三步的文件之后,那些文件会映射到第二个目录中(公司定制的代码部分)就是在这个文件下的 common_version_version/app 目录下进行读取系统 app ,那么修改完这些之后,重新编译就能体现出修改的内容

当然这只是一个简单的流程,如果涉及到比较深度的定制,那么则需要明确修改的宏对应的代码部分,不然就会导致明明修改了某处地方但是编译之后没有得到对应的结果

编译需要使用 android 源码中的 Tmake*** 脚本文件进行编译(这个脚本文件由公司内部定义)

总的来说,定制手机先从获取的基础代码进行执行,然后从定制公司的目录出发寻找所映射的文件读取,编译后会生成一个可供刷机的软件,使用该软件就能够将定制的系统安装到手机上。基本过程就是这样,没有图片可能比较抽象,建议下套源码结合这些步骤摸索一下(如有错误,欢迎指出)

你可能感兴趣的:(Android 定制编译基本流程)