Для своей диссертации я модифицирую инфраструктуру Android и создаю исходный код (4.1.1 Jelly Bean). Я могу сделать полную сборку, но поскольку это занимает очень много времени (я разрабатываю на 64-битной виртуальной машине Ubuntu 12.04), я хотел бы собрать отдельные модули.
Например: при внесении изменений в модули местоположения должна быть возможность просто собрать измененный модуль и создать новый образ системы:
mmm frameworks/base
make snod
Но это не работает. Каждый раз, когда я пытаюсь загрузиться, новый образ системы не загружается из-за:
I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
После некоторых исследований я попытался отключить dexpreopt с переменными среды.
export $WITH_DEXPREOPT=false
а также
export $DISABLE_DEXPREOPT=true
и выполнить полную перестройку с помощью «make installclean». Полная пересборка работает, а изменения фреймворка присутствуют в сборке. Но после внесения нового изменения все еще «mmm frameworks/base» и «make snod» приводят к несоответствию dexpreopt.
Сборка/ядро/makefile из «make snod» также содержит предупреждение: «Внимание: при включенном dexpreopt вам может потребоваться полная пересборка», которое следует из этой строки в make-файле:
ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
Это наводит меня на мысль, что переменная $WITH_DEXPREOPT неправильно установлена или прочитана? До сих пор мне не удавалось получить загрузочный образ системы без полной полной перестройки. Правильна ли процедура, которой я следую, чтобы отключить dexpreopt, или есть другие способы сборки отдельных модулей после внесения изменений в структуру и получения нового образа системы?
Целью сборки является «полный английский».