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

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662

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

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

[email protected]:~/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应用程序:

[email protected]:~/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运行在模拟器上时,就可以看到我们的程序了。

[email protected]:~/Android$ make snod

      四. 参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:

[email protected]:~/Android$ emulator

      这样一切就搞定了。

老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

时间: 2024-10-28 21:07:07

如何单独编译Android源代码中的模块的相关文章

【转】如何单独编译Android源代码中的模块

原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包syst

单独编译Android源代码中的某个模块

众所周知,编译一个固件要花很久时间.有时只改系统的某个模块的某个功能,如修改系统Setting源码的一些地方,这时就没有必要再整个系统编译一遍,这时就需要用到模块编译(前提是系统已经编译过一遍). 下面以编译A20平台源码中的一个apk为例. 例如要修改系统设置中HDMI分辨率输出,让其只有几个输出选项. 1,进入android\device\softwinner\common\packages  这个目录,找到TvdSettings这个文件夹,这个就是A20定制的系统设置源码. 2,找到Dis

向Android系统中添加模块及产品流程

 添加Android模块  一.基础知识: (1)在Android系统中,编译都是以模块(而不是文件)作为单位的,每个模块都有一个唯一的名称: (2)为了将模块编译到Android系统中,每个模块都需要一个专门的Make文件,也即是"Android.mk"文件: 二.实现hello.c 模块的编写  1. 如在 hardware/test目录下,编写hello.c 2. 在hardw/test目录下,编写Android.mk Android.mk编写的步骤: (1)设置当前模块的编译路

[转]编译Android源代码常见错误解决办法

1. 编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz PLATFORM_VERSION_CODENAME=AOSPPLATFORM_VERSION=AOSPTARGET_PRODUCT=genericTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=TARGET_BUILD_TYPE

编译Android源代码与内核总结

这些天花了些时间自己下载了android源代码来编译,当中走了一些弯路导致耗了些时间,如今又一次梳理总结下,让有同样想法的人自己编译的时候能少走些弯路,官方指导文档在http://source.android.com/source/initializing.html. 1.安装linux环境 我是windows系统,安装了Vmware虚拟机.在虚拟机上装了ubuntu-12.04,我的这个版本号是32位的,这个还蛮重要的.安装32位或者64位的将决定你能编译的android版本号,官方文档里Fo

【转】单独编译android framework模块出现的问题

原文网址:http://blog.csdn.net/leonan/article/details/8629561 全编andorid后,单独修改编译一个framwork模块,make snod会有如下告警信息:Warning: with dexpreopt enabled, you may need a full rebuild 使用这样make snod 出来的镜像,内核不能启动,模拟器一直停留在“android”标志状态.查看log发现有如下错误打印:DexOpt: mismatch dep

编译android源代码(aosp)

步骤1:按照官方的文档,下载源码,配置环境,并执行相应的命令.最好按照官方的硬件和系统配置build. build的版本是6.0,源码目录是/home/koder/android-source-20151229 Requirements: 下载的源码很大,估计有30,40G左右.加上build,最好腾出100+的空间来. 按官方说的MAC OS或者Ubuntu LTS (14.04)X64,自己是Ubuntu LTS (14.04) 64位. 硬件问题:内存不足,看文末问题1. 有一个注意文档说

单独编译源码树下的模块

1, 进入相应的目录 # make CONFIG_XXX_XX=m -C /lib/modules/`uname -r`/build M=`pwd` modules

android 单独编译某个模块

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