Construyendo módulos Android separados con dexpreopt deshabilitado

Para mi tesis, estoy modificando el framework android y construyendo la fuente (4.1.1 Jelly Bean). Puedo hacer una compilación completa, pero porque esto es mucho tiempo (estoy desarrollando en una máquina virtual ubuntu 12.04 64bit) me gustaría construir módulos separados.

Por ejemplo: Al realizar cambios en los módulos de ubicación, debería ser posible construir el módulo modificado y crear una nueva imagen del sistema:

mmm frameworks/base make snod 

Pero esto no funciona. Cada vez que intento arrancar, la nueva imagen del sistema no se iniciará debido a:

 I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex' 

Después de algunas investigaciones, traté de desactivar dexpreopt con las variables de entorno

 export $WITH_DEXPREOPT=false 

y

 export $DISABLE_DEXPREOPT=true 

Y hacer una reconstrucción completa con 'make installclean'. La reconstrucción completa funciona y los cambios en el marco están presentes en la compilación. Pero después de hacer un nuevo cambio, aún 'mmm frameworks / base' y 'make snod' resultan en desajuste dexpreopt.

El build / core / makefile de 'make snod' también da la advertencia: 'Warning: con dexpreopt habilitado, es posible que necesite una reconstrucción completa.', Que viene de esta línea en el makefile:

 ifeq (true,$(WITH_DEXPREOPT)) $(warning Warning: with dexpreopt enabled, you may need a full rebuild.) endif 

Esto me lleva a creer que la variable $ WITH_DEXPREOPT no está correctamente configurada o leída? Hasta ahora no he podido conseguir una imagen de sistema bootable sin hacer una reconstrucción completa limpia. ¿Es el procedimiento que sigo el correcto para deshabilitar dexpreopt, o hay alguna otra manera de construir módulos separados después de hacer cambios en el marco y obtener una nueva imagen del sistema?

El objetivo de construcción es 'full-eng'.

Aparentemente la variable de entorno WITH_DEXPREOPT se sobrescribe por una variable WITH_DEXPREOPT interna en

 build/target/board/generic/BoardConfig.mk 

Cambiar esto a falso, o de acuerdo a las personas en los grupos de google, iniciar una marca con:

 make showcommands WITH_DEXPREOPT=false 

Hace el truco. La construcción de un módulo específico y la creación de una nueva imagen del sistema ahora da como resultado una construcción de arranque.

(Fuente: https://groups.google.com/d/topic/android-building/vJCkg8Yq9Ic/discussion )

  • ¿Cómo se crea un módulo de kernel cargable para Android?
  • Construir android - ¿cómo cargar la imagen del kernel en el comando mkbootimg?
  • Android x86 porting, incapaz de hacer que funcione
  • ¿Dónde está el código fuente de los componentes de arquitectura de Android?
  • Reemplazo del controlador de pantalla táctil en el núcleo de Android
  • La forma más rápida de probar el código fuente de Android modificado?
  • ¿Cuál es el propósito de los repositorios git desnudos en .repo / projects / creados por el script de repo de Android?
  • Compilación y prueba de kernel de Android con Android Emulator
  • La construcción de AOSP, vendor_module_check.mk falla
  • Deshabilitar los servicios de android en init.rc
  • Android: Kernel de depuración con KGDB
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.