【转】模块编译Android源码方法
原文网址:http://blog.csdn.net/androidlover1991/article/details/17014055
实际开发中,并不需要每次都编译所有源代码,只需要编译自己修改的模块即可。
Android 的编译系统提供了强大的机制支持单独模块的编译,而且十分简单。Android 提供三
种方式用于编译单独模块 :
1.make 模块名
2.mm 来自于 envsetup.sh 脚本中注册的函数
3. mmm 来自于 envsetup.sh 脚本中注册的函数
下面将分别介绍这三种方法。
1.make 模块名
这种方法适合第一次编译,会把依赖模块一并编译。它需要在全部源代码中找到编译模
块的 Android.mk 文件,并检查依赖模块是否有修改,因此编译时间较长。使用这种方法,我
们只需要搜索源码目录下的 Android.mk 文件,找到模块名,然后指定给 make 即可。
(1)编译应用层源码
对于应用层程序,需要查看 Android.mk 文件的 LOCAL_PACKAGE_NAME 变量。
例如,要编译 Phone 应用程序的源码,先查看 Phone 的 Android.mk 文件,在终端中运行
以下命令 :
allong@android:~/android/jellybean$ cat packages/apps/Phone/Android.mk
显示 Android.mk 的内容如下 :
......(省略部分内容)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com.android.phone.common
......(省略部分内容)
LOCAL_PACKAGE_NAME := Phone
......(省略部分内容)
找到 LOCAL_PACKAGE_NAME 字段,其值便是我们需要得到的编译参数,即 Phone。
得到编译参数后,在终端中运行如下命令便可单独编译 Phone 模块及其依赖模块 :
allong@android:~/android/jellybean$make Phone
(2)编译框架层和系统运行库源码
对于框架层和系统运行库,需要查看 LOCAL_MODULE 变量。
以 frameworks 包中的源码为例,在终端中运行以下命令 :
allong@android:~/android/jellybean$ find
frameworks -name Android.mk
该命令将搜索 frameworks 目录下所有的 Android.mk 文件,列表如下 :
frameworks/media/libvideoeditor/lvpp/Android.mk
frameworks/media/libvideoeditor/osal/src/Android.mk
frameworks/base/cmds/app_process/Android.mk
......(省略其他部分)
以 app_process 为例,在终端中运行以下命令 :
allong@android:~/android/jellybean$ cat
frameworks/base/cmds/app_process/Android.mk
显示 Android.mk 的内容如下 :
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= app_process
include $(BUILD_EXECUTABLE)
LOCAL_MODULE 变量的值便是我们要找的模块名。在终端中运行以下命令 :
allong@android:~/android/jellybean$make app_process
2.mmm 命令
该命令是 envsetup.sh 中注册的函数,用于在源码根目录编译指定模块,参数为模块的相对
路径。只能在第一次编译后使用。比如要编译 Phone 部分源码,需要在终端中执行以下命令 :
allong@android:~/android/jellybean$mmm packages/apps/phone
3.mm 命令
该命令也是 envsetup.sh 中注册的函数,用于在模块根目录编译这个模块。只能在第一次
编译后使用。例如要编译 Phone 部分源码,需要在终端中执行以下命令 :
allong@android:~/android/jellybean$cd packages/apps/phone
allong@android:~/android/jellybean/packages/apps/phone$mm
注意 mmm 和 mm 命令必须在执行“.build/envsetup.sh”之后才能使用,并且只编译发生变化的文
件。如果要编译模块的所有文件,需要 -B 选项,例如 mm -B。
【转】模块编译Android源码方法的更多相关文章
- 将Android源码导入eclipse中的方法以及编译Android源码指定模块
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...
- Ubuntu编译Android源码过程中的空间不足解决方法
Android源码一般几十G,就拿Android5.0来说,下载下来大概也有44G左右,和编译产生的文件以及Ubuntu系统占用的空间加起来,源码双倍的空间都不够有.编译源码前能分配足够的空间再好不过 ...
- 一次编译Android源码实验
注意,本文只供参考,是老文章 1.必要的软件环境 sudo apt-get install build-essential sudo apt-get install make sudo apt-get ...
- 【转】在Ubuntu下编译Android源码并运行Emulator
原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK $ sudo apt-ge ...
- 【转】Ubuntu10.04上编译Android源码(Build Android source in Ubuntu10.04 Platform)
原文网址:http://blog.csdn.net/chenyafei617/article/details/6570928 一.Introduction 今天我们就来谈谈如何在Ubuntu平台上面编 ...
- [原]编译Android源码过程中遇到的问题
编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...
- 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码(转)
2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源 ...
- wubi安装ubuntu后,增加swap大小,优化swap的使用参数-----------让ubuntu健步如飞,为编译android源码准备
wubi安装ubuntu后,终端输入free -m可以查到如下信息: total used free shared buffers cached Mem: 1944 1801 143 0 557 70 ...
- 在ubuntu16.04上编译android源码【转】
本文转载自:http://blog.csdn.net/fuchaosz/article/details/51487585 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...
随机推荐
- quartz.net 基于数据库的简单实现
前面简单学习了通过XML配置或者内存指定的方式实现调度任务.但此用法实战用途较小,企业上多需要分布式集群的方式.quart团队也考虑到了这点,于是有了我们今天要学习的.基于数据库实现分布式. Name ...
- display: inline-block 的神奇效果
先上要实现的效果图: 方案一:来自卢兄: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- play app to war
project/Build.scala import sbt._ import Keys._ import play.Play.autoImport._ import PlayKeys._ impor ...
- [转]深入理解JavaScript系列
文章转自:汤姆大叔-深入理解JavaScript系列文章 深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解Ja ...
- 生成dll文件的示例
看了好多网上写的关于dll文件生成和实用的资料发现多尔不全,都是抄来抄去,有的干脆就是搬用msdn上的原文,实在没有创意和可看的东西.于是本着学和实用的目的自己实践的东西分享给大家. 大前提:使用VS ...
- umask默认权限分配
umask默认权限分配的命令 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了用户创建文件的默认 权限,它与chmod的效果刚好 ...
- X-window
X-Window(也常称为X11或X)系统是一种以位图方式显示的软件视窗系统,最初是1984年麻省理工学院的研究,之后变成UNIX.类UNIX. 以及OpenVMS等操作系统所一致适用的标准化软件工具 ...
- mysql申请账户
INSERT INTO mysql.user set Host='%',user='alipay',password=password('alipay'),Select_priv='Y',Insert ...
- 利用Anaconda安装python后,如何安装opencv-python
利用Anaconda安装python后,想要安装opencv-python,但发现利用opencv-python的官方教程,没法实现opencv的安装 还好看到了另外一篇博客的方法,试一下,果然凑效 ...
- Thrift 使用方法