我已經在frameworks/base/cmds/myproject
添加了一個新的C++子項目,並且它有自己的Android.mk
文件。當我運行make myproject
時,它會很好地編譯並且沒有問題。將制定規則添加到AOSP的主製作
但是,我想將make myproject
添加到主要make
。我的意思是,當有人在AOSP的根源下運行make
時,我的項目也將包含在內。我該怎麼辦?
我已經在frameworks/base/cmds/myproject
添加了一個新的C++子項目,並且它有自己的Android.mk
文件。當我運行make myproject
時,它會很好地編譯並且沒有問題。將制定規則添加到AOSP的主製作
但是,我想將make myproject
添加到主要make
。我的意思是,當有人在AOSP的根源下運行make
時,我的項目也將包含在內。我該怎麼辦?
您需要調用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.sh
和lunch mini_emulator_x86-user
,然後make
,你的myproyect.mk
將達到。
爲了測試它:
myproject.mk
文件中加入這樣的事情:$(warning MyProject MK has been called
lunch mini_emulator_x86-user
。make | grep MyProject
而且你不需要等待整個編譯,如果這在第一秒輸出的東西,你很好去。有關更多的參考,你可以看看高通如何組織自己的device
文件夾,用common
和base
MK文件。看看他們的開源代碼here
謝謝,我會試試看,並回復您的反饋意見。 –
我的子項目不適用於特定設備。它應該爲所有人建造。所以它似乎是'設備/普通/'我應該考慮的正確的地方。這裏沒有'mk'文件。我應該改變'generate-packages.sh'嗎? –
我編輯了我的答案。希望能幫助到你! – Olaia