Как ускорить работу модуля в AOSP

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

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

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

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

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

 mmm frameworks/base snod -j4 

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

1. Создать модуль + зависимости

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

 mmma -j4 adir/yourmoduledir 

2. Сборка модуля

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

 mmm -j4 adir/yourmoduledir:moduletargetname 

пример

Построить libart

Создайте библиотеку и все ее зависимости один раз :

 mmma -j4 art/runtime 

Измените код libart и быстро его создайте:

 mmm -j4 art/runtime:libart 

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

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

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

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

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

  • Ознакомьтесь с устаревшим руководством по построению в aosp: build / core / build-system.html .

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

Intereting Posts
Почему ActionbarSharelock показывает только значок переполнения, даже есть место Appcompat-v7: Пользовательский вид не правильно выровнен в ActionBar Исходный код приложения Google Chrome для Android? Android – Удаление кнопки дома и навигации Быстрее восстанавливать контакты из адресной книги в android Как воспроизвести мелодию звонка, которая предназначена только для Push Notification Прибытие моего заявления? Как реализовать левый и правый жест жестов в Android. Не удалось открыть хранилище ключей в AndroidStudio – «Найдены избыточные байты длины» Состояние возврата Retrofit Android 500 внутренняя ошибка сервера Есть ли преимущества использования FusedLocationProviderApi над LocationManager? Android: Пользовательский адаптер с настраиваемым раскручивателем раскладки xml с указанием ошибки «ОК» добавить последнее ключевое слово к унаследованному / переопределенному методу? Открытие программных настроек Android Android LinearLayout Gradient Background Как открыть файлы на Android с помощью программы просмотра по умолчанию с помощью jCIFS