在 AOSP 的主要 make 中添加 make 规则

fro*_*tto 0 android makefile android-source android-make

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

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

Ola*_*aia 5

您需要Android.mk调用您的文件。根据您的需要,有多种方法可以做到这一点。

如果您希望myproyect针对您拥有的多个设备进行编译device/,请查找一个通用mk文件。例如,高通就是这样做的,您可以将其复制到 AOSP。

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

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

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

    PRODUCT_PACKAGES += \
        myproyect
    
    Run Code Online (Sandbox Code Playgroud)

注意正确的缩进。

这样,当你这样做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文件夹、withcommonbasemk 文件。在这里查看他们的开源代码