【问题标题】:how to build a single module from Android AOSP code base如何从 Android AOSP 代码库构建单个模块
【发布时间】:2020-01-10 14:52:41
【问题描述】:

我正在使用来自 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 源代码以提高速度。 这可能吗?

谢谢!

问候,

SQR

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

如果我运行 >mma,那么 >mm。构建正在通过,但它实际上没有编译任何东西(因为 java 文件已经构建了?)。

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

【问题讨论】:

  • out/host/linux-x86/bin/aapt 是联系人需要的。所以你应该先使用 mma。
  • @Yong,谢谢,请参阅我上面的帖子以获取更新。谢谢!

标签: android android-source


【解决方案1】:

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

例子:

m Contacts

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

【讨论】:

  • 嗨@Simpl,谢谢。我可以毫无问题地构建具有依赖关系的联系人应用程序。但是,我一直在寻找一种方法来构建联系人应用程序,而无需在 c++ 中重建大量依赖项。这可能吗?
  • 构建工具默认支持增量构建。但是,它将至少构建一次模块的所有依赖项。
猜你喜欢
  • 2015-08-19
  • 2019-09-02
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多