原文网址:http://blog.csdn.net//article/details/6566662/

第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。

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

USER-NAME@MACHINE-NAME:~/Android$ .  ./build/envsetup.sh

      注意,这是一个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命令来编译指定的模块,例如Email应用程序:
USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/
      编译完成之后,就可以在out/target/product/generic/system/app目录下看到Email.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
      四. 参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:
USER-NAME@MACHINE-NAME:~/Android$ emulator
      这样一切就搞定了。
老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

【转】如何单独编译Android源代码中的模块--不错相关推荐

  1. 如何单独编译Android源代码中的模块

    第一次下载好Android源代码工程后,我们通常是在android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了And ...

  2. 编译 Android 源代码 之路一

    编译Android源代码 很久之前就想编译Android源代码试试,一直没有尝试,这几天利用业余时间尝试编译一下Android源代码. 虽然网络上有很多作者,写过编译Android源代码的过程,基本上 ...

  3. 如何在Android Studio中删除模块

    本文翻译自:How to delete a module in Android Studio Is there a way to delete a module within Android Stud ...

  4. android 单独编译lk,ASOP源码中单独编译preloader/lk/kernel/framework模块

    单独编译preloader 主要步骤 cd bootable/bootloader/preloader ./build.sh 2>&1 TARGET_PRODUCT=${PROJECT} ...

  5. Ubuntu下编译Android源代码

    上一次将了Ubuntu下下再Android源代码,地址:http://blog.csdn.net/zqiang_55/article/details/7173392 现在来说说Ubuntu下边缘And ...

  6. 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码

    下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...

  7. c语言程序可以单独编译,c语言中的函数可不可以单独进行编译?_后端开发

    在C语言中,要求参加运算的数必须是整数的运算符是什么_后端开发 在C语言中要求参加运算的数必须是整数的运算符是"%":"%"符号在c语言中有两种释义,一是求余符 ...

  8. android.bp 编译,Android编译系统中的Android.bp

    Android.bp,是用来替换Android.mk的配置文件. 它使用Blueprint框架来解析,最终转换成Ninja文件. 与Android.mk不同的是,Android.bp是纯粹的配置文件, ...

  9. ASOP源码中单独编译preloader/lk/kernel/framework模块

    ASOP单独编译重要模块 单独编译preloader 单独编译LK 单独编译kernel 单独编译init模块 单独编译framework的services模块 打包system.img 打包boot ...

最新文章

  1. gvim plugin管理
  2. SGU 260.Puzzle (异或高斯消元)
  3. kali 改root_Kali Linux 将默认以非 root 身份运行
  4. sql 高级 (五)(create index(创建索引) drop)
  5. Centos7下删除virbr0网卡信息
  6. c++ 优先队列_什么是队列?(Python队列)
  7. spark on yarn 内存分配详解
  8. OpenGL shapedpoints异形点的实例
  9. JavaScript 中的 require / exports、import / export、浅谈JavaScript、ES5、ES6
  10. 配置phoenix连接hbase_使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
  11. 动态规划——零钱兑换(Leetcode 322)
  12. PCB参数计算神器-Saturn PCB Design Toolkit下载及安装指南
  13. webpack打包后的文件夹是空的_webpack打包Vue工程
  14. 机器学习篇01:在线学习的支持向量机算法学习笔记
  15. BitCoin Gloom系列
  16. 云主机前景几何,风萧萧兮!
  17. 成都计算机影响力高校,成都最好的三所大学,你更青睐哪一所?
  18. 苹果手机怎么编辑word文档_怎么用苹果手机扫描文件转换成Word?这个方法我一定要告诉你...
  19. 解决webpack-dev-server由于网络问题出现ETIMEDOUT
  20. 香港消委会:大部分航空公司超卖机票无赔偿细则

热门文章

  1. 2010.2--netscreen ssg 140 恢复出厂设置的方法
  2. 【路径规划】Astart算法——图文直观解析
  3. 履带机器人运动控制器c++_敏捷得像猫,被抛出后能平稳着地,有意思的美国西点军校机器人!...
  4. 【入门级】自学Python第一步,记住这7大编码规范
  5. Python基础语法总结,Python初学者必备
  6. go channel 缓冲区最大限制_GO语言圣经学习笔记(八)Goroutines和Channels
  7. lg-1 x 怎么算_阿迪达斯crazy byw x实战测评 crazy byw x脚感怎么样
  8. 机械转行的都干啥去了?机械转行计算机难吗?
  9. mysql主从复制(master-slave)_mysql主从复制------Master-Slave搭建及注意事项
  10. HDU5443(ST表)