如何构建Android AOSP的一部分?

时间:2014-01-04 17:57:59

标签: android android-ndk android-source

我正在尝试在AOSP的外部目录中构建我自己的库和应用程序,但问题是我必须每次运行make并且make将编译/构建整个android。 在我的外部应用程序文件夹中,我有Android.mk文件,但我无法使用ndk-build构建它,它将查找JNI文件夹和NDK_BUILD_PATH,所以问题是:

如何在不重建整个AOSP的情况下构建它?

3 个答案:

答案 0 :(得分:11)

普通make调用不会重建超过必要的次数,但即使使用叶库或二进制文件,即使是增量构建也可能需要几分钟。如果您只想构建特定模块,可以查看build / envsetup.sh顶部简要记录的函数。具体来说,mmm 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框架。