Как ускорить мм при создании модулей AOSP - PullRequest
4 голосов
/ 24 ноября 2011

Я работаю над приложением контактов из проекта с открытым исходным кодом Android. Моя версия для Android 2.3.5_r1. И используя mm для создания модуля, но скорость создания довольно медленная, поэтому я сомневаюсь, что есть способ ускорить создание.

PS: На самом деле, если я скомпилирую этот модуль в Eclipse, я ускорю мусор, потому что функция автоматического построения Eclipse. Но я не люблю работать с затмением, так что брось его.

Ответы [ 3 ]

6 голосов
/ 06 февраля 2012

Например, я использую следующую команду из корневой папки вашего проекта Android:

mmm frameworks/base snod -j4

И я думаю, что это лучший выбор.Попробуйте, но замените frameworks/base именем вашего проекта (относительный путь, где хранится Android.mk).

5 голосов
/ 08 февраля 2012

В порядке наименьших затрат для вас:

  • Не делайте так много чистоты.Позвольте make-файлу определить, что перестраивать.
  • Использовать CCACHE export USE_CCACHE=1.Вероятно, вы увидите влияние CCACHE только после многократного перестроения.Если ваш проект большой, установите больший размер CCACHE, например, 10 ГБ ${ANDROID_DIR}/prebuilt/linux-x86/ccache/ccache -M 10G
  • Получите лучший процессор и запустите с более высоким параметром -j
1 голос
/ 25 апреля 2016

1.Модуль сборки + зависимости

mmma медленнее, чем mmm, так как первый проверяет соответствие всех зависимостей для модуля и, если они не совпадают, компилирует их.Поэтому сначала вместо полной команды make создайте зависимости, касающиеся интересующего вас модуля, используя следующее:

mmma -j4 adir/yourmoduledir

2.Модуль сборки

Теперь, когда зависимости встретились, продолжайте перекомпиляцию только того модуля, который вам интересен. Пропуск проверки зависимостей экономит драгоценное время.Однако каталог, который вы используете, может содержать несколько целей компиляции.Чтобы скомпилировать одну цель, используйте что-то вроде:

mmm -j4 adir/yourmoduledir:moduletargetname

Пример

Сборка libart

Сборка библиотеки и всех ее зависимостей Once :
mmma -j4 art/runtime
ModifyКод libart и быстрое его построение:
mmm -j4 art/runtime:libart

Вы получите половину времени компиляции по сравнению с подходом Юрия, так как, например, отладочный вариант libart (libartd) будет полностью исключен.

Дальнейшее ускорение?

Вы, конечно, должны включить кэширование, как предложено в aultbot.

Также, в зависимости от интересующих вас модулей, могут быть цели компиляции, которые вы можете отключить копаниемв make-файлах.Например, libart компилируется как для хоста, так и для цели.Если вы измените переменную в make-файлах, это может привести к принудительной компиляции только для одного из 2, что сэкономит вам половину времени.

Дополнительная информация:

  • Извлечение устаревшихруководство по сборке в aosp: build / core / build-system.html .

  • N-Preview Google переключается на новую систему сборки это направлено на ускорение дополнительных сборок.Я надеюсь, что документация также будет обновлена.

...