5455|3

854

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

如何单独编译Android源代码中的模块 [复制链接]

第一次下载好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://blog.csdn.net/luoshengyang/article/details/6566662
喜欢android的同学希望好好看看。O(∩_∩)O~。

最新回复

呵呵,学习,学习了,多谢分享!  详情 回复 发表于 2013-7-16 22:39

点评

在使用这个方法前,要定义一个shell script,把JAVA_HOME, ANDROID_JAVA_HOME给export出去。否则你用mmm命令时,会提示找不到java路径。  详情 回复 发表于 2013-7-16 09:43
点赞 关注
个人签名如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460

回复
举报

468

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
这个还是很重要的,要不然一些人只会重复编译,导致编译时间很长,其实单独编译,然后自己手动拷贝到out 下合理的路径都行的,有些会自动拷贝或者自己加入拷贝的一些mk 文件即可。
 
个人签名
 

回复

29

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
原帖由 Wince.Android 于 2013-5-25 09:23 发表

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

在使用这个方法前,要定义一个shell script,把JAVA_HOME, ANDROID_JAVA_HOME给export出去。否则你用mmm命令时,会提示找不到java路径。

点评

呵呵,学习,学习了,多谢分享!  详情 回复 发表于 2013-7-16 22:39

赞赏

1

查看全部赞赏

 
 
 

回复

468

帖子

0

TA的资源

纯净的硅(高级)

4
 
原帖由 seanew 于 2013-7-16 09:43 发表
在使用这个方法前,要定义一个shell script,把JAVA_HOME, ANDROID_JAVA_HOME给export出去。否则你用mmm命令时,会提示找不到java路径。
呵呵,学习,学习了,多谢分享!
 
个人签名
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表