在android源代码中构建一个特定的模块

dea*_*mer 30 android android-source

我正在处理从source.android.com下载的android源代码.

完成构建后,我浏览了这个网站http://elinux.org/Android_Build_System,它解释了android构建系统.

当我在外部/ webkit代码中进行更改并使用它进行构建时

make -j4 libwebcore它编译相应的文件并更新libwebcore.so,它节省了我很多时间.同样的事情适用于应用程序,也适用于构建apks.

当我在框架中进行更改并将命令作为 make -j4 framework 不编译相应文件时,会出现问题.谁能帮我!

Bja*_*sen 46

该文件夹frameworks包含许多内容,您必须更具体地说明如何构建.

例如,我做了一个改变: frameworks/base/cmds/input/src/com/android/commands/input/Input.java.现在相应的Android.mk文件位于: frameworks/base/cmds/input/Android.mk,其中包含一行说:LOCAL_MODULE := input.

因此,从源代码构建的模块被调用input,所以我调用:

$ make input
Run Code Online (Sandbox Code Playgroud)

哪个重建特定模块.

作为奖励信息,您可以使用mmm帮助程序,您可以指定要构建的模块的路径,如下所示:

$ mmm frameworks/base/cmds/input
Run Code Online (Sandbox Code Playgroud)

或使用mm它只是在您当前的工作目录中构建模块:

$ cd frameworks/base/cmds/input
$ mm
Run Code Online (Sandbox Code Playgroud)

我通常使用mmm我的首选工具.


更新

哦,我看到你可能会特别谈论所谓的模块 framework

我只是想修改:frameworks/base/core/java/android/app/Dialog.java,然后做一个:make framework.

这似乎重新编译框架就好了.在运行之前,您正在更改哪个文件make framework


回应你的评论

我只是想修改frameworks/base/core/java/android/webkit/WebView.java.mmm frameworks/base以及make framework对我来说完美无缺.

如果它对您不起作用,您是否可以使用有关您正在构建的Android版本,您正在键入的命令以及您所看到的输出的其他信息来更新您的问题?


Won*_*nil 29

这里有更充分的描述mm,mmm以及通过获取提供的其他方便的功能build/envsetup.sh文件:

. build/envsetup.sh从shell 调用以将以下函数添加到您的环境:

   lunch:   lunch <product_name>-<build_variant>
   tapas:   tapas [<App1> <App2> ...] [arm|x86|mips|armv5] [eng|userdebug|user]
   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, but not their dependencies.
   mmm:     Builds all of the modules in the supplied directories, but not their dependencies.
            To limit the modules being built use the syntax: mmm dir/:target1,target2.
   mma:     Builds all of the modules in the current directory, and their dependencies.
   mmma:    Builds all of the modules in the supplied directories, and their dependencies.
   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.
Run Code Online (Sandbox Code Playgroud)