如何从 Android AOSP 代码库构建单个模块



我正在使用 aws 的 AOSP 构建环境,它本质上是 EC2 上的 AOSP 结帐(我的猜测(。

  • 在 AOSP 根级别,我可以运行>m来成功构建所有内容。

  • 在模块级别,我可以运行>MMA来成功构建具有所有依赖项的模块。

  • 但是,如果我在模块文件夹上运行>mm,它会失败。

例如,如果我尝试构建联系人应用程序,


ubuntu@ip-172-31-37-80:~/aosp/oreo/packages/apps/Contacts$ mm
make: Entering directory '/home/ubuntu/aosp/oreo'
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=8.0.0
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.15.0-1056-aws-x86_64-with-Ubuntu-18.04-bionic
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=OPD1.170816.025
OUT_DIR=out
============================================
[38/38] bootstrap out/soong/.minibootstrap/build.ninja.in
[1/2] out/soong/.bootstrap/bin/minibp out/soong/.minibootstrap/build.ninja.in
[4/4] out/soong/.bootstrap/bin/minibp out/soong/.bootstrap/build.ninja
[791/792] glob test/vts/utils/native/trace_processor/Android.bp
[47/47] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
out/build-aosp_arm-packages_apps_Contacts_Android.mk.ninja is missing, regenerating...
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
[ 99% 1301/1302] glob vendor/*/*/Android.bp
ninja: error: 'out/host/linux-x86/bin/aapt', needed by 'out/target/product/generic/obj/APPS/Contacts_intermediates/package.apk', missing and no known rule to make it
01:29:34 ninja failed with: exit status 1
build/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
make: Leaving directory '/home/ubuntu/aosp/oreo'
#### make failed to build some targets (25 seconds) ####

我的想法是只从应用程序级别文件夹构建那些 Java 源代码以加快速度。 这可能吗?

谢谢!

问候

质控

======= 更新 =======

如果我跑>mma,那么>mm。 构建正在通过,但它实际上没有编译任何内容(因为 Java 文件已经构建了?

如果我运行>mma,然后>mm 干净,然后>mm,然后 mm 无法构建。

您可以使用m <module>构建包含所有依赖项的单个模块。

例:

m Contacts

关于您收到的错误消息:我有时会收到这些类型的错误消息,因为存储库未正确签出,因此文件丢失。aapt源位于frameworks/base/存储库中。您应该检查 git 状态是否有效以及frameworks/base/tools/aapt目录是否存在。

最新更新