如何单独编译安卓系统源码指定模块
昨天花了一天的时间编译android系统源码,我在想要是用家里那台老爷车编译起码需要几天时间了,好了,言归正传,这篇讲怎么编译单独的app,以及重新打包system.img。单独编译我们需要用到mmm命令。
1.获取mmm命令:
在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
~/Android_Dev/Android4_4source $ . ./build/envsetup.sh
执行后可能会出现这个错误:build/envsetup.sh: 1: Syntax error: "(" unexpected 若没有请跳过。有的话执行$sudo dpkg-reconfigure dash命令,并选择“否”就能修正。
回车之后会出现一些东西。其实,这是一个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.
在这里,我们只关注mmm命令,用它编译指定模块用mmm就好了。
2.开始编译指定模块(以email app为例):
~/Android_Dev/Android4_4source $ mmm packages/apps/Email/
然后我的电脑上开始编译了,编译到了后面出现了个小问题:
make: *** No rule to make target `out/target/common/obj/JAVA_LIBRARIES/sdk_v18_intermediates/classes.jar', needed by `out/target/common/obj/APPS/Email_intermediates/classes-full-debug.jar'. Stop.
这个错误是因为我偷懒没有把系统编译完成就单独编译,这样子是不行的,于是我开始重新编译整个系统。
编译完成之后,我们可以在out/target/product/generic/system/app目录下看到Email.apk文件了。android系统自带的app都放在这个目录下,另外android系统的一些可执行文件,放在out/target/product/generic/system/lib目录下,硬件层(HAL)接口文件放在out/target/product/generic/system/lib/hw,编译好模块后,还需要重新打包system.img文件以便在模拟器上运行的时候看到效果。使用:$ make snod命令。
相关推荐
Android 源码单独编译模块是指在 Android 源代码工程中编译指定的模块,而不需要重新编译整个 Android 系统。这种方法可以节省大量的时间和资源,因为编译整个 Android 系统需要漫长的等待时间。 在 Android 源代码...
Android 模块单独编译详解 在 Android 源代码工程中,单独编译某个模块是一件很有必要的事情。尤其是在我们修改了某个模块或新增了自己的模块时,重新编译整个 Android 系统镜像 system.img 是非常耗时的。这时,...
需要注意的是,编译Android源码可能需要大量的计算资源,包括内存和磁盘空间。此外,由于源码的复杂性,可能需要解决依赖问题、编译错误或配置问题。熟悉Android的构建系统,如`build.gradle`文件和`Android.mk`文件...
本文将详细介绍如何在Android源代码中单独编译模块。 首先,你需要在Android源代码根目录下找到`build`目录,并执行其中的`envsetup.sh`脚本。这是一个初始化环境的脚本,执行后会添加一些用于构建和管理Android源...
"安卓Android商品销售管理系统源码.zip" 这个标题表明这是一个与安卓应用开发相关的项目,特别是一个商品销售管理系统的源代码。在Android平台上,开发人员经常使用Java或Kotlin语言编写应用程序,而这个系统可能...
要单独编译一个模块,可以通过命令行工具`gradlew`(Gradle Wrapper)来执行。在项目根目录下,使用以下命令: ``` ./gradlew :moduleName:assembleDebug ``` 这里,`:moduleName`替换为你要编译的模块名,`...
7. **模块化编译**:Android源码采用模块化的构建方式,如HAL(硬件抽象层)使得硬件厂商能够轻松适配Android,而AOSP中的各种服务和应用也是独立模块,方便单独编译和调试。 8. **Android版本差异**:不同版本的...
要单独编译和使用WebRTC的音频回声消除模块,你需要遵循以下步骤: 1. **获取源码**:从WebRTC的官方GitHub仓库克隆源码,确保你获取的是最新稳定版或者特定版本的代码。 2. **构建环境设置**:安装必要的依赖库,...
4. **模块化开发**:Android的框架层和库层都是模块化的,每个模块都有自己的Makefile,开发者可以单独编译修改的模块,提高了开发效率。 5. **驱动程序开发**:在Kernel层,开发者可以接触到硬件驱动程序,学习...
9. **系统服务**:Android有许多系统服务,如网络管理、电源管理、位置服务等,它们在源码中以单独的服务类形式存在。 10. **开发者工具**:如ADB(Android Debug Bridge)、DDMS(Dalvik Debug Monitor Service)...
我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包
总的来说,编译Android源码是一项技术性工作,需要耐心和一定的Linux基础。遵循上述步骤,你应该能够成功地为Dream/G1设备编译CyanogenMod或其他自定义ROM。随着Android系统的不断更新,编译流程可能会有所变化,...
通常,这会涉及到使用`repo`工具来克隆整个Android源码树。 2. **环境设置**:确保你有一个适合编译的开发环境。这包括安装Linux操作系统(通常是Ubuntu或Debian),配置Java JDK,以及安装Git等必备工具。还需要...
【标题】"安卓Android源码——ProgressWheel-master.zip"是一个包含Android开发中ProgressWheel组件源码的压缩包。ProgressWheel通常用于在应用加载数据或执行长时间操作时展示进度,为用户提供友好的界面反馈。 ...
"你们要的Android组件化来了,module单独编译运行"这个标题表明我们将讨论如何实现Android应用的组件化,使得每个模块可以独立编译和运行,这在大型项目中非常关键,因为它提高了开发效率并降低了集成风险。...
1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 2.1 开发Android硬件驱动程序 2.1.1 ...
例如,可以单独编译系统服务或特定应用。 9. **编译和调试** 编译Android源码需要搭建Android Build Environment,通常包括JDK、Git、Python等工具。使用源码编译的命令如"source build/envsetup.sh"和"make -j8...
在Android上,源码可能展示了如何使用Qt多媒体模块与Android的多媒体服务交互,以及如何访问传感器数据。 7. **网络通信** Qt的网络模块在Android上同样适用,包括HTTP、FTP等协议的支持。源码中可能有使用...
在Android Studio中,每个模块通常是一个单独的Gradle项目,可以拥有自己的build.gradle文件,定义依赖、编译配置等。通过模块化,我们可以实现代码的隔离,降低耦合度,同时便于团队协作和代码复用。 二、Android ...