Добавьте правило make к основному make AOSP.

Я добавил новый подпроект C++ в frameworks/base/cmds/myproject, и у него есть собственный файл Android.mk. Когда я запускаю make myproject, он компилируется без проблем.

Однако я хочу добавить make myproject к основному make. Я имею в виду, что когда кто-то запускает make в корне AOSP, мой проект также будет включен. Что я должен делать?


person frogatto    schedule 12.06.2017    source источник


Ответы (1)


Вам нужно, чтобы ваш файл Android.mk вызывался. Существуют различные способы сделать это, в зависимости от ваших потребностей.

Если вы хотите, чтобы ваш myproyect был скомпилирован для нескольких устройств, которые у вас есть под device/, найдите общий файл 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 и вам не нужно ждать всей компиляции, если это выводит что-то в первые секунды, все готово.

Для дополнительной справки вы можете посмотреть, как Qualcomm организует свою папку device с файлами common и base mk. Взгляните на их открытый исходный код здесь

person Olaia    schedule 12.06.2017
comment
Спасибо, я попробую и отвечу на ваши вопросы. - person frogatto; 12.06.2017
comment
Мой подпроект не для конкретного устройства. Он должен быть построен для всех. Так что, кажется, это device/common/ правильное место, куда я должен заглянуть. Там нет mk файлов. Должен ли я изменить generate-packages.sh? - person frogatto; 13.06.2017