`

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

 
阅读更多

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,执行这个脚本文件后,就可以获得一些有用的工具:

      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
      这样一切就搞定了。
分享到:
评论

相关推荐

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

    Android 源码单独编译模块是指在 Android 源代码工程中编译指定的模块,而不需要重新编译整个 Android 系统。这种方法可以节省大量的时间和资源,因为编译整个 Android 系统需要漫长的等待时间。 在 Android 源代码...

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

    总结一下,单独编译Android源代码中的模块主要涉及以下步骤: 1. 执行`build`目录下的`envsetup.sh`脚本。 2. 使用`mmm`命令编译特定模块,如`mmm packages/apps/Email/`。 3. 通过`make snod`命令打包`system.img`...

    android P android9源码编译.ipr.iml文件

    总的来说,`.ipr`和`.iml`文件在Android P源码编译过程中起着关键作用,它们帮助开发者在Android Studio环境中高效地管理和编译大规模的源代码项目。通过理解这些文件的作用,开发者可以更流畅地进行源码级别的调试...

    Android单个模块编译

    要单独编译一个模块,可以通过命令行工具`gradlew`(Gradle Wrapper)来执行。在项目根目录下,使用以下命令: ``` ./gradlew :moduleName:assembleDebug ``` 这里,`:moduleName`替换为你要编译的模块名,`...

    android.bp动态编译文档

    动态编译是一种优化构建过程的方法,它只编译必要的源代码,从而节省时间和资源。在`Android.bp`中,我们可以利用条件语句和变量来实现这一目标。下面我们将分步骤解析如何进行动态编译。 1. **理解Android.bp文件...

    《Android系统源代码情景分析》

    1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android...

    Android系统源代码情景分析-罗升阳-源码

    1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用...

    android4.0 settings 设置 模块 源代码

    在`classes.jar`中包含了编译后的Java类文件,而源代码的构建过程涉及`Android.mk`或`build.gradle`文件,它们定义了如何编译和打包`settings`模块。 总的来说,`settings`模块的源代码不仅展示了Android系统如何...

    单独编译和使用 webrtc 音频回声消除模块

    要单独编译和使用WebRTC的音频回声消除模块,你需要遵循以下步骤: 1. **获取源码**:从WebRTC的官方GitHub仓库克隆源码,确保你获取的是最新稳定版或者特定版本的代码。 2. **构建环境设置**:安装必要的依赖库,...

    我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包

    我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包

    你们要的Android组件化来了,module单独编译运行

    "你们要的Android组件化来了,module单独编译运行"这个标题表明我们将讨论如何实现Android应用的组件化,使得每个模块可以独立编译和运行,这在大型项目中非常关键,因为它提高了开发效率并降低了集成风险。...

    Qt On Android核心编程 源码

    Qt支持多种语言的本地化,源码中可能包含如何在Android应用中实现多语言切换的代码。 9. **调试与性能优化** 在Android上调试Qt应用需要熟悉Android Studio的ADB工具和Qt的qmake或cmake构建系统。源码可能包含...

    Android 源码编译过程

    在本文中,我们将深入探讨如何编译Android源代码,这是Android开发过程中不可或缺的一部分。通过编译源码,你可以自定义系统、修复问题或为设备创建特定的ROM。以下是详细的步骤,分为准备构建环境、获取源码和编译...

    androidstudio模块demo

    在Android Studio中,每个模块通常是一个单独的Gradle项目,可以拥有自己的build.gradle文件,定义依赖、编译配置等。通过模块化,我们可以实现代码的隔离,降低耦合度,同时便于团队协作和代码复用。 二、Android ...

    Android应用源码之系统源码获取及编译.zip

    7. **模块化编译**:Android源码采用模块化的构建方式,如HAL(硬件抽象层)使得硬件厂商能够轻松适配Android,而AOSP中的各种服务和应用也是独立模块,方便单独编译和调试。 8. **Android版本差异**:不同版本的...

    Android系统源代码情景分析光盘

    1.3.2 编译Android源代码........................................... 4 1.3.3 运行Android模拟器........................................... 5 1.4 下载、编译和运行Android内核源代码.........................

    android源码开发实战11.10.zip

    4. **模块化开发**:Android的框架层和库层都是模块化的,每个模块都有自己的Makefile,开发者可以单独编译修改的模块,提高了开发效率。 5. **驱动程序开发**:在Kernel层,开发者可以接触到硬件驱动程序,学习...

    Android 26源码

    Android 26源码是Android操作系统的一个重要版本,它的源代码揭示了系统内部的工作机制,为开发者提供了深入理解和定制Android系统的可能性。这个压缩包包含了构建Android 26所需的所有源代码,包括系统服务、框架、...

Global site tag (gtag.js) - Google Analytics