Varios pozos en el proceso de compilación AOSP y flasheo en Mac

No grabaré los hoyos comunes aquí. Puedes buscar en Google o ver el enlace al final del artículo. Aquí hay algunos menos comunes. El AOSP que uso aquí es Android4.4.

1. El primero es un pozo en el que me he involucrado durante mucho tiempo. Se trata de JDK. Al principio, utilicé jdk1.8 para compilar, y ocurrió el siguiente error:

host Java: doclava (out/host/common/obj/JAVA_LIBRARIES/doclava_intermediates/classes)
external/doclava/src/com/google/doclava/ClassInfo.java:20: 错误: 程序包com.sun.javadoc不存在
import com.sun.javadoc.ClassDoc;
                      ^
external/doclava/src/com/google/doclava/ClassInfo.java:61: 错误: 找不到符号
。。。

Luego cambié JAVA_HOME al directorio jdk1.6, pero ocurrió el siguiente error durante la compilación:

javac: 无效的目标发行版: 1.8
......

Es muy extraño que haya cambiado la versión jdk a 1.6. ¿Por qué digo que la versión de lanzamiento de destino es 1.8, así que fui a los archivos Android.mk, pom.xml, build.xml de cada módulo para modificar la versión de Java Aún así está mal. Muchos métodos encontrados en línea son inútiles.

Solución:

Justo cuando estaba a punto de rendirme, encontré un archivo: build / core / combo / javac.mk, que definía dos variables de compilación global HOST_JAVAC y TARGET_JAVAC, -target seguido de 1.8, el culpable está aquí, modificar Está bien para 1.6.
Hay otro archivo, build / core / main.mk, que también especifica las versiones de java y javac. La versión aquí también debe tenerse en cuenta, pero si hay un conflicto aquí, se informará un error al comienzo de make.

2. El segundo es los dos errores que ocurrieron cuando compilé el emulador.
El primero es el problema de conflicto de la biblioteca SDL, generará el siguiente error:
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h:94: error: expected specifier-qualifier-list before ‘CGDirectPaletteRef’

........
La solución es abrir SDL_QuartzVideo.h, encontrar la línea de la paleta CGDirectPaletteRef y cambiar a lo siguiente:
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)
     CGDirectPaletteRef palette;            /* palette of an 8-bit display */
 #endif

El segundo es el siguiente error:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:156: error: expected a property attribute before ‘atomic’
Esto se debe a que la nueva versión de xcode compila por defecto, la propiedad de objc es completamente atómica, por lo que el atributo de propiedad no puede definirse como atómico, todos dicen que xcode5.x debe instalarse para compilar. Sin ese tiempo libre , comente directamente  las palabras clave atómicas en las dos líneas de QTMovieModernizer.h: 156, 163. Después del cambio, xcdoe 6.4 se puede compilar normalmente.  



Otro punto a tener en cuenta es que no importa si compila AOSP y lo usa solo en el emulador, pero si desea flashear el dispositivo en una máquina real, debe descargar el controlador correspondiente a la máquina y la versión AOSP, de lo contrario flashear Cuando se inicia el teléfono, el teléfono permanecerá en la interfaz que solo muestra el logotipo de Google, porque no hay controlador en system.img. Para descargar el controlador, vaya a https://developers.google.com/android/drivers, busque el modelo de teléfono móvil correspondiente y la versión de AOSP, descargue los tres paquetes de controladores, extraiga los tres scripts de shell y colóquelos en el directorio raíz de AOSP uno por uno La ejecución generará el directorio de proveedores y luego seguirá los pasos en https://source.android.com/source/building.html para compilar.

Hay otras dos publicaciones sobre la compilación de AOSP, también grabadas aquí:
1. http://www.cnblogs.com/palance/p/5187103.html
2. http://www.cnblogs.com/chiefhsing/p/5175624.html
3. http://www.liball.me/mac-10-10-build-android-4-4-4-for-nexus/
发布了60 篇原创文章 · 获赞 44 · 访问量 34万+

Supongo que te gusta

Origin blog.csdn.net/beyond702/article/details/53159284
Recomendado
Clasificación