编译模块
android中的一个应用程序可以单独编译,编译后要重新生成system.img
在源码目录下执行
$ . build/envsetup.sh (.后面有空格)
就多出一些命令:
- 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 packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
可以使用
$ make snod
重新生成system.img,再运行模拟器
分享到:
相关推荐
在 Android 源代码工程中,单独编译某个模块是一件很有必要的事情。尤其是在我们修改了某个模块或新增了自己的模块时,重新编译整个 Android 系统镜像 system.img 是非常耗时的。这时,我们可以使用 Android 提供的...
在Android开发中,单个模块编译是一种常见的实践,它允许开发者独立地构建和测试应用程序或库的一个特定部分,而不必整个项目一起编译。这对于大型项目尤其有用,因为这样可以提高开发效率并减小程序构建时间。下面...
2. **引入条件编译**:在`Android.bp`中,我们可以使用`if`语句来根据特定条件决定是否编译某个模块。例如,如果一个模块只在特定的设备或产品变体上存在,我们可以在`if`语句中检查这些条件。 ```javascript if ...
### Android编译独立源代码知识点解析 #### 一、概览 在深入探讨如何编译Android独立源代码之前,我们先来了解下整个过程的基本框架。Android作为一个开源项目,其源代码包含了操作系统的核心部分以及一系列应用...
在深入研究Android源代码时,有时我们需要针对特定模块进行编译,而不是每次都重新编译整个Android系统。这不仅可以节省时间,还能提高开发效率。本文将详细介绍如何在Android源代码中单独编译模块。 首先,你需要...
当需要将某个模块作为独立的Application编译时,将其值设为`true`;反之,作为库模块时,将其值设为`false`。 3. **Build.gradle配置** - 针对每个业务模块(Business Module),在`build.gradle`文件头部添加...
- `app`模块:包含Android应用的源代码、资源和配置。 - `build.gradle`文件:定义了项目的构建配置,包括依赖库和注解处理器的配置。 - `src/main/java`目录:包含了项目的主要Java代码,包括注解和注解处理器的...
- **版本号1.1.8**:这代表了应用的某个特定迭代,通过对比不同版本的反编译结果,可以了解京东客户端的更新内容和优化方向。 - **安全性考量**:分析反编译后的代码,我们可以发现京东如何保护用户隐私,防止数据...
当修改了某个模块时,需要使用相应的编译命令来重新编译该模块。例如: * 如果修改了 DWS,需要使用 `gencode` 或 `./mk drvgen` 使其生成相应的 `.h/.c` 文件,然后使用 `./mk new preloader uboot kernel` 编译。...
在进行增量编译时,如果某个模块已编译过且未发生变化,使用`mmm`或`mm`命令可以提高效率,因为它们只编译修改过的文件。若需重新编译所有相关模块,可以添加`-B`参数,如`make -B [module_name]`。 总的来说,理解...
例如,如果只修改了某个模块,可以使用`mm`或`mmm`命令仅编译该模块及其依赖。另外,还可以通过`make snod`来创建系统映像,`make recovery_image`来生成恢复映像。 5. **调试与测试**:编译完成后,你可以通过...
### 多项目代码复用时的动态模块选择编译策略 #### 一、背景与问题提出 在软件开发过程中,特别是在处理多个项目共用同一份代码库的情况下,开发者经常会遇到如何在编译阶段灵活地选择开启或关闭某些功能模块的...
最后,针对某个模块的 Make 文件的名称统一为“Android.mk”,该文件中定义了如何编译当前模块。Build 系统会在整个源码树中扫描名称为“Android.mk”的文件并根据其中的内容执行模块的编译。 Android Build 系统...
3. `sun-java5-jdk`:Android编译需要JDK 5.0,不支持更新的版本。 4. `flex` 和 `bison`:用于解析和生成词法分析器和语法分析器。 5. `gperf`:用于生成效率高的数据结构。 6. `libsdl-dev`、`libesd0-dev`等库:...
查看编译日志以确定具体哪个模块出现问题,然后针对性地解决。 3. **fatal: fork: Cannot allocate memory** 这是因为系统内存不足,无法创建新的进程。增加虚拟机的内存分配或者优化编译选项(如减少并行编译的...
这份"Android Launcher 源码修改可编译.zip"的资源包含了一个可编译的Android Launcher源码,对于开发者来说,这是一份非常有价值的参考资料,可以深入理解Android启动器的工作原理,以及如何自定义和优化这个核心...
为了让HAL模块在Android系统中可用,你需要将其编译为动态链接库(`.so`文件),并将其放置在正确的系统目录下,通常是`/system/lib/hw`。同时,设备文件的创建和权限管理可以通过udev规则来完成。在Ubuntu上,你...
在`settings.gradle`文件中,我们可以根据`local.properties`中的`debug`属性动态决定是否包含某个模块。这样,在开发module1时,可以直接在Android Studio中以独立项目运行,而在需要与主APP联调时,只需简单调整...
问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件。(同时如果又有Module C 依赖了Module B,C也会出同样的问题) 解法: 1、正常给一个...