2012-10-30 71 views
22

我上我从source.android.com下载的Android源代码工作的特定模块。建立在Android源代码

完全构建后,我通过这个网站http://elinux.org/Android_Build_System这也解释了Android构建系统去。

当我做外部/ WebKit的代码修改,并与

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

当我在框架中进行更改并给出命令为 make -j4 framework它没有编译相应的文件时出现问题。 任何人都可以帮助我!

回答

36

文件夹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 

其中重建的具体模块。

作为奖励信息,你可以使用mmm助手,你可以指定模块的路径来构建这样的:

$ mmm frameworks/base/cmds/input 

或使用mm刚刚构建模块在你当前的工作目录:

$ cd frameworks/base/cmds/input 
$ mm 

我通常使用mmm作为我的首选工具。


更新

哦,我知道你可能会特别为约叫做framework

模块我只是试图修改来说话:frameworks/base/core/java/android/app/Dialog.java,并做了:make framework

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


在回答您的评论

我只是试图修改frameworks/base/core/java/android/webkit/WebView.javammm frameworks/base以及make framework完美的作品对我很好。

如果它不适用于您,您是否可以更新您的问题,并提供有关您正在构建哪个Android版本,您准确输入哪些命令以及您看到的输出的其他信息?

+0

我想建立框架/基/核心/ JAVA /安卓/ WebKit的/ WebView.java 我只看到3个.mk文件,我认为它与指定的类 1)frameworks/base/core/java/res/Android.mk 2)frameworks/base/core/java/jni/Android.mk 3)frameworks/base/Android.mk In 3)文件我看到了LOCAL_MODEULE:= framework 我应该使用命令make -j4 framework –

+0

@YSBhai:查看我的更新答案。 –

+0

@ BjarkeFreund-Hansen TARGET_DEVICE foo没有私人修复资源 –

20

这里是mmmmm,便捷等通过获取build/envsetup.sh文件中提供的功能更全面的描述:

Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment: 
    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.