mmm
和mm
指令在Android源码编译过程中扮演着重要角色,它们都属于Android构建系统(Build System)提供的命令集合,但用途略有不同。以下是它们之间的主要区别:
1. 功能和用途
- mmm(make module matches):该命令用于编译指定路径下的模块。它允许用户从任何位置执行命令,并指定要编译的模块路径作为参数。这意味着用户无需先切换到模块所在的目录,即可进行编译。
mmm
命令会查找指定路径下的Android.mk
或Blueprints
文件,并编译该路径下定义的模块及其依赖项。 - mm(make module):该命令用于编译当前目录下的模块。当使用
mm
时,它会查找当前目录对应的Android.mk
或Blueprints
文件,并仅编译该目录下定义的模块及其依赖项。这要求用户已经处于要编译的模块目录中。
2. 工作目录
- mmm:不依赖于当前工作目录,允许用户从源码树的任何位置执行命令,并指定要编译的模块路径。
- mm:假定用户已经处于要编译的模块目录中,因此其操作范围局限于当前目录及其子目录。
3. 使用场景
- mmm:适用于需要从不同位置编译多个不同模块的情况,或者当用户不想切换到模块所在目录时。
- mm:适用于用户已经在模块目录下,并希望快速编译该模块及其依赖项的情况。
4. 编译范围
无论是mmm
还是mm
,它们都只会编译指定的模块和必需的依赖项,而不会编译整个Android系统。这样可以节省编译时间,因为不需要重新编译整个系统的所有组件。
5. 示例
mmm示例:
mmm development/ky_ai/arnoldTestNdkDemo/SimpleJNI
此命令会编译位于
development/ky_ai/arnoldTestNdkDemo/SimpleJNI
目录下的模块及其依赖项。mm示例:
用户首先需要切换到模块所在的目录,例如:cd development/ky_ai/arnoldTestNdkDemo/SimpleJNI
mm
然后执行
mm
命令,这将编译当前目录下的模块及其依赖项。
结论
mmm
和mm
指令在Android源码编译中都是有用的工具,它们的主要区别在于工作目录和灵活性。mmm
提供了更大的灵活性,允许用户从任何位置编译模块,而mm
则更适用于用户已经在模块目录下的情况。这两个命令都旨在提高编译效率,通过仅编译指定的模块和依赖项来减少编译时间。