[置顶] 我的DIY Android之旅--单独改造你的Android模块

大家编译过Android源码的童鞋肯定知道,编译整个Android源码需要非常长的时间,以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。

   首先, 一. 首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:

按照老罗的android之旅中的介绍,执行 ./build/envsetup.sh,会提示mmm命令找不到!

[置顶] 我的DIY Android之旅--单独改造你的Android模块_第1张图片

在网上找了一些资料,立马搞定!

 执行source build/envsetup.sh    (前面要加上source,否则找不到mmm等命令)(不同的shell窗口都得运行该命令后才能使用mmm等命令)

  注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:

      - croot: Changes directory to the top of the tree.

      - m: Makes from the top of the tree.
      - mm: Builds all of the modules in the current directory.
      - mmm: Builds all of the modules in the supplied directories.
      - cgrep: Greps on all local C/C++ files.
      - jgrep: Greps on all local Java files.
      - resgrep: Greps on all local res/*.xml files.
      - godir: Go to the directory containing a file.
 
      这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。
 
      二. 使用mmm命令来编译指定的模块,例如mms应用程序:
    现在我们就可以单独编译Android的模块,现在有必要单独改造一下Android的内置应用了,那我就选择Android里面最常用的短信应用吧,修改短信应用的一些属性,然后单独编译短信模块,最后在模拟器中查看改造的结果!
     由于只是简单的验证一下,我就只是简单的修改了一下短信的应用图标和短信的背景颜色,然后执行  mmm packages/apps/Mms/
     经过短暂的编译,编译成功了!
      编译完成之后,就可以在out/target/product/generic/system/app目录下看到mms.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/product/generic/system/bin目录下,动态链接库文件放在out/target/product/generic/system/lib目录下,out/target/product/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件等等...
 
 
      三. 编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。
       USER-NAME@MACHINE-NAME:~/Android$ make snod
[置顶] 我的DIY Android之旅--单独改造你的Android模块_第2张图片
       USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel /home/hu/android2.3/out/target/product/generic/system.img
      [置顶] 我的DIY Android之旅--单独改造你的Android模块_第3张图片
      证明单独编译是成功的!
 
   我们可以单独的改造Android的大部分应用属性,打造出一个属于自己的Android镜像文件,这样就大致算是一个属于自己的Android ROM嘛,当然,要做一个属于自己的Android ROM,你需要做的还有很多,你可以不用考虑适配部分,因为CM团队大致可以做出很多硬件上的适配,但你必须非常清楚Android的整体框架和代码,那样你才能做出很不一样的Android系统....

 

你可能感兴趣的:([置顶] 我的DIY Android之旅--单独改造你的Android模块)