如何单独编译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

      这样一切就搞定了。

时间: 2024-12-25 00:00:40

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

单独编译Android 源代码中的模块实现方法_Android

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

【我的Android进阶之旅】Android 源代码中的Java代码中//$NON-NLS-1$ 注释是什么意思?

1.背景 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在编写自定义的Lint规则前,当然是需要去把Google的关于Lint检测的源代码看一遍学习学习如何编写自定义规则. google官方的lint源代码链接为: https://android.googlesource.com/platform/tools/base/+/master/lint/libs/lint-checks/src/main/java/com/androi

Android……源代码问题

问题描述 Android--源代码问题 传说中的编译 Android源代码 中的源代码应该不是自己写的java代码吧--编译源代码有什么用呢?众大神帮忙帮忙解惑 解决方案 不是你自己写的,如果你想定制系统,就需要对源代码进行修改,然后编译成新的系统,比如小米,华为,都是在源代码基础上修改过的 解决方案二: Android 基站定位源代码(有问题)解决Android通讯录中显示姓名颠倒问题的小工具的源代码

《深入理解Android:Telephony原理剖析与最佳实践》一2.2 Android源代码下载及编译过程

2.2 Android源代码下载及编译过程 前面完成了Ubuntu.JDK.Android SDK的安装和配置,接着开始下载和编译Android 4.0源代码,这个过程简单但花费的时间比较长,请读者先有个心理准备. Android 4.0的代号为Ice Cream Sandwich,简称ICS,中文名称冰淇淋三明治. 2.2.1 工作目录设置 本书采用ICS名称的文件夹作为Android 4.0源代码的根目录,在用户根目录下新建代码根目录ICS文件夹,并设置此目录为工作目录,在.bashrc中增

《深入理解Android:Telephony原理剖析与最佳实践》一第2章 搭建Android源代码编译环境

第2章 搭建Android源代码编译环境 第1章介绍了Android以及其Telephony功能模块的基本结构,在本章中将带着读者去搭建Android编译环境.即使你已经能够在自己计算机上成功编译Android源代码了,也希望你能阅读本章内容,因为本章不乏一些技巧的总结和Android相关实用工具使用方法的介绍. Android的编译环境作为深入学习Android的基础,不可缺失,能够成功下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步:Android环境搭建比

《深入理解Android:卷III A》一一1.1获取Android源代码

1.1获取Android源代码 在深入研究Android之前,首先必须获得一套Android的源代码.Google提供官方Android源代码的获取方法如下:https://source.android.com/source/downloading.html 这个页面介绍了使用repo脚本进行Android源码的下载的两个基本步骤. 1)首先通过repo init命令将当前文件夹初始化为repo脚本的工作区.其命令格式如下: repo init -u -b <分支名称> repo init命令

《深入理解Android 5 源代码》——第2章,第2.3节Android源代码提供的接口

2.3 Android源代码提供的接口我们知道,Android源代码当中提供了很多资源.工具或者文档供开发者使用,当然,其中也包括应用程序开发接口的实现,也就是我们开发应用程序所使用的SDK的API.正是由于有了这些种类丰富.功能强大.抽象程度高的接口,才让我们开发应用程序变得简单方便.在本节的内容中,将详细讲解Android系统中这些接口的基本知识. 2.3.1 暴露接口和隐藏接口我们可以将Android源代码编译生成一个SDK,这个SDK的功能等同于官方网站上单独下载的SDK开发包.这说明在

《深入理解Android:卷III A》一一1.4调试Android源代码

1.4调试Android源代码 调试是分析问题与印证对代码的理解的最有效手段,对Android这种复杂而庞大的系统来说尤为如此.Android的源代码主要由Java代码以及C/C++代码构成,因此调试Android源代码需要从Java的调试以及C/C++的调试两个方面说起.1.4.1使用Eclipse调试Android Java源代码 由于Android源代码是以一个普通的Java工程的方式导入的,于是在Eclipse中不能通过ADT所提供的DDMS直接对其进行远程调试. 1)首先需要通过DDM

Android编程中黑名单的实现方法_Android

本文实例讲述了Android编程中黑名单的实现方法.分享给大家供大家参考,具体如下: 说明:由于挂断电话android   api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务. 1.将android源代码中的"aidl"文件拷贝到项目中 这样项目中会生成两个包:android.telephony:此包中文件为:NeighboringCellInfo.aidl com.android.internal.telephony;此包中文件为:ITelephony.aidl 2.通过