Как построить часть Android AOSP?

Я пытаюсь создать свои собственные библиотеки и приложения во внешнем каталоге AOSP, но проблема в том, что я должен запускать make каждый раз, и make будет компилировать/строить весь андроид. В моей внешней папке приложений у меня есть файл Android.mk, но я не могу его построить с помощью ndk-build, он будет искать папку JNI и NDK_BUILD_PATH, поэтому вопрос:

Как я могу создать его без восстановления всего AOSP?

Ответ 1

Обычный make вызов не будет перестраивать больше, чем необходимо, но даже с библиотекой листьев или бинарными даже инкрементная сборка может занять несколько минут. Если вы хотите только создать свой конкретный модуль, вы можете посмотреть на функции, кратко описанные в верхней части build/envsetup.sh. В частности, функции оболочки m и mm должны быть полезны, поскольку они только строят один или несколько модулей, не заботясь об их зависимостях и даже не пытаясь прочитать все файлы Android.mk, найденные в дереве. Использование их должно значительно ускорить наращивание (но все зависимости должны были быть построены в какой-то момент, т.е. Они полезны только для инкрементных построений).

build/envsetup.sh также определяет ряд других функций оболочки, полезных для построения платформы Android и работы с исходным кодом.

Ответ 2

Вы можете получить список всех модулей в вашем Android-коде с помощью следующей команды:

make modules

Чтобы создать любой отдельный модуль:

make [modulename]

Ответ 3

Чтобы вкратце рассмотреть более общий случай, mm - полезная команда, но местоположение, из которого оно должно быть запущено, плохо документировано - или, более конкретно, не всегда ясно, что такое "модуль".

Скажем, вы внесли изменения в SystemUI, который является специализированным приложением, которое является ключом к общей функциональности Android. Это часть репозитория frameworks/base.

Если вы просто заходите в каталог frameworks/base и выполняете mm, он ничего не найдет, ваши изменения будут проигнорированы.

Чтобы на самом деле выбрать ваши изменения с помощью mm, вы должны находиться в каталоге, в котором они находятся - в этом примере вам нужно быть в рамках /base/packages/SystemUI. Соответствующее место для других кодовых баз будет другим - но, как можно предположить, вам, вероятно, должно быть место, в котором находятся Android.mk, охватывающие ваши изменения.

Затем вы можете использовать цель make snod с вершины дерева, чтобы перестроить system.img, и запустите его с помощью fastboot или используйте adb remount, adb, нажмите новый SystemUI.apk, а затем adb shell "start; stop" для перезагрузки платформы Android.