2017-06-12 21 views
0

我已經在frameworks/base/cmds/myproject添加了一個新的C++子項目,並且它有自己的Android.mk文件。當我運行make myproject時,它會很好地編譯並且沒有問題。將制定規則添加到AOSP的主製作

但是,我想將make myproject添加到主要make。我的意思是,當有人在AOSP的根源下運行make時,我的項目也將包含在內。我該怎麼辦?

回答

4

您需要調用Android.mk文件。根據您的需求,有多種方式可以這樣做。

如果您想要爲device/下的多個設備編譯myproyect,請查找共同的mk文件。例如,Qualcomm就是這樣做的,您可以將其複製到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而且你不需要等待整個編譯,如果這在第一秒輸出的東西,你很好去。

有關更多的參考,你可以看看高通如何組織自己的device文件夾,用commonbase MK文件。看看他們的開源代碼here

+0

謝謝,我會試試看,並回復您的反饋意見。 –

+0

我的子項目不適用於特定設備。它應該爲所有人建造。所以它似乎是'設備/普通/'我應該考慮的正確的地方。這裏沒有'mk'文件。我應該改變'generate-packages.sh'嗎? –

+0

我編輯了我的答案。希望能幫助到你! – Olaia

相關問題