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:
- Crea Android AOSP system.img de framework.jar cambiado
- Encontrar código fuente para Nexus S Camera HAL?
- Etiquetado de una versión de Android
- ¿Cuál es el uso de LOCAL_MODULE_TAGS?
- ¿Cómo construyo el SDK de Android con APIs ocultas e internas disponibles?
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'.
- Trabajar con GPS vía libhardware en Android
- ¿Cómo puedo corregir el error JDK no encontrado al crear una fuente de Android?
- ¿Descubre la versión de Android en AOSP en tiempo de compilación de código nativo?
- Uso de CTS en código fuente android
- Cómo navegar / ver / editar las fuentes de la plataforma android (AOSP) utilizando Intellij IDE (Android Studio preferiblemente)?
- Reiniciar la máquina con Android
- Cambiar de maestro AOSP a froyo
- ¿Cómo agregar el repositorio privado de Git de bitbucket a AOSP?
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 )
- ¿La desinstalación de una aplicación android borra la base de datos almacenada en sdcard?
- Error de la API de AndroidPublisher error projectNotLinked