我正在尝试在AOSP的外部目录中构建我自己的库和应用程序,但问题是我必须每次运行make并且make将编译/构建整个android。 在我的外部应用程序文件夹中,我有Android.mk文件,但我无法使用ndk-build构建它,它将查找JNI文件夹和NDK_BUILD_PATH,所以问题是:
如何在不重建整个AOSP的情况下构建它?
答案 0 :(得分:11)
普通make
调用不会重建超过必要的次数,但即使使用叶库或二进制文件,即使是增量构建也可能需要几分钟。如果您只想构建特定模块,可以查看build / envsetup.sh顶部简要记录的函数。具体来说,m
和mm
shell函数应该是有用的,因为它们只构建一个或多个模块而不关心它们的依赖关系,甚至没有尝试读取树中找到的所有Android.mk文件。使用它们可以显着加快增量构建(但是所有依赖项必须在某些时候构建,即它们仅对增量构建有用)。
build / envsetup.sh还定义了许多其他shell函数,这些函数对于构建Android平台和使用其源代码非常有用。
答案 1 :(得分:9)
您可以使用以下命令获取Android代码中所有模块的列表:
make modules
构建任何单个模块:
make [modulename]
答案 2 :(得分:4)
为了简要说明更一般的情况,mm
是一个有用的命令,但是应该运行它的位置没有很好地记录 - 或者更具体地说,它并不总是清楚什么是“模块”
假设您已对SystemUI进行了更改,这是一个专门的应用程序,是Android整体功能的关键。这是框架/基础存储库的一部分。
如果您只是转到frameworks / base目录,并执行mm
它将无法找到任何操作 - 您的更改将被忽略。
要使用mm
实际获取更改,您必须位于它们所在的目录中 - 在此示例中,您需要位于frameworks / base / packages / SystemUI中。其他代码库的适当位置会有所不同 - 但作为猜测,您可能需要处于覆盖更改的Android.mk
所在的位置。
然后,您可以使用树顶部的make snod
目标重建system.img并使用fastboot闪存,或使用adb remount
,adb推送新的SystemUI.apk,以及然后adb shell "start; stop"
重新启动Android框架。