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

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

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

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 МК файлы. Взгляните на их открытый исходный код здесь

Другие вопросы по тегам