【问题标题】:Add a make rule to the main make of AOSP向 AOSP 的主品牌添加 make 规则
【发布时间】:2017-06-12 04:58:32
【问题描述】:

我在frameworks/base/cmds/myproject 添加了一个新的C++ 子项目,它有自己的Android.mk 文件。当我运行make myproject 时,它会编译得很好,没有问题。

但是我想将make myproject 添加到主要的make。我的意思是,当有人在 AOSP 的根目录下运行 make 时,我的项目也将被包含在内。我该怎么办?

【问题讨论】:

    标签: android makefile android-source android-make


    【解决方案1】:

    您需要调用您的Android.mk 文件。有多种方法可以做到这一点,具体取决于您的需要。

    如果你希望你的myproyect 被编译为你在device/ 下的几个设备,那么寻找一个通用的mk 文件。比如高通就是这样做的,你可以复制给AOSP。

    • 编辑/创建device/common/common.mk
    • 从您想要的每台设备上拨打device/common/common.mk。 (这就是 QCM 的做法:$(call inherit-product, device/qcom/common/common.mk)

    如果您只希望它用于特定设备:

    • 让我们理所当然地想为mini_emulator_x86-userdebug 编译,它的mk 文件在device/generic/mini-emulator-x86 中。
    • 编辑mini_emulator_x86.mk
    • 编辑或添加PRODUCT_PACKAGES如下:

      PRODUCT_PACKAGES += \
          myproyect
      

    注意正确的缩进。

    这样,当您执行source build/envsetup.shlunch mini_emulator_x86-user 然后make 时,您的myproyect.mk 将到达。

    为了测试它:

    • 编辑您的myproject.mk 文件,添加如下内容:$(warning MyProject MK has been called
    • 致电lunch mini_emulator_x86-user
    • make | grep MyProject 并且您无需等待整个编译过程,如果这会在第一秒内输出一些内容,那么您就可以开始了。

    如需更多参考,您可以查看 Qualcomm 如何组织他们的 device 文件夹以及 commonbase mk 文件。看看他们的开源代码here

    【讨论】:

    • 谢谢,我会试一试,然后给你反馈。
    • 我的子项目不适用于特定设备。它应该为所有人而建。所以看来device/common/ 是我应该研究的正确位置。那里没有mk 文件。我应该更改generate-packages.sh吗?
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多