Introducción al entorno de construcción de aprendizaje de Android
Primero, echemos un vistazo a las opciones de compilación y las herramientas relacionadas que utiliza el sistema de compilación de Android.
El directorio específico se encuentra en: mydroid/build/tools/
| - ACP Group
Este es un comando cp ligeramente mejorado, utilizado para procesar Windows. / Defectos del comando cp en MAC/Linux, ¡vale la pena leer el archivo Léame!
| -Banco Asiático de Desarrollo
Esta es una herramienta para ver problemas de fallas. Para obtener más información, consulte adbs de la herramienta de depuración de Android.
| - Android.mk
| - apicheck
Se utiliza para comprobar la API antes del lanzamiento (consulte mi droid/build/core/tasks/API check. MK) para ver si hay violaciones de compatibilidad de API o API ilegales en el sistema recién compilado.
El código aquí es un archivo xml escrito en Java (en mydroid/framework/base/api/) para verificar la información de la API generada durante la compilación. Puede consultar el código para analizar archivos xml.
| - A priori
Una herramienta para implementar la vinculación previa. Consulte (my droid/bionic/linker/readme. txt) para obtener una breve introducción.
| -Atree
Una herramienta del servicio SDK de Android, utilizada para realizar algunas operaciones de archivos en función del contenido del archivo xxx.atree especificado.
| - bin2asm
No entiendo muy bien el uso específico. Debería usarse para solucionar algunos problemas relacionados con la compilación de gcc de Android en Mac.
| - buildinfo.sh
Genera varios archivos xxx.prop en el destino, como system.prop, build.prop, etc.
| - check_builds.sh
Diff se ajusta para ver los cambios entre dos versiones.
| - Verificar requisitos previos
Una de las herramientas para la actualización ota en el dispositivo.
| - compare_fileslist.py
Utilice check_builds.sh para completar el script de comparación de versiones
| droiddoc
Android tiene algún trasplante de javadoc .
| -Dump-Package-Statistics
Simplemente verifique la información de tamaño de dex y otros archivos en el archivo jar/apk.
| - etiqueta de registro de eventos.py
Maneja el contenido de la etiqueta de registro de eventos. Con respecto al significado de los archivos de etiquetas de registro de eventos, consulte ¿Qué son las etiquetas de registro de eventos para el aprendizaje de Android?
| - fileslist.py
Script simplificado que enumera todos los archivos y tamaños en un directorio específico; puede colocarlo en su propia biblioteca de herramientas :)
| - findleaves.py
Scripts (múltiples) que encuentran el archivo especificado en el directorio especificado; puede colocarlo en su propia biblioteca de herramientas para usarlo :)
| sh
Cambie los saltos de línea en Windows a Linux; puede usarlos en su propia biblioteca de herramientas :)
| -Configuración del sistema de archivos
Listar permisos para carpetas y archivos especificados.
| -El sistema de archivos obtiene el estado
Obtiene estadísticas simples de los archivos en la carpeta especificada.
| -Myself
Determina si el archivo está en formato ELF.
| - isprelinked
Determina si el archivo está previnculado.
| - java-event-log-tags.py
Maneja el contenido de las etiquetas del registro de eventos. Con respecto al significado de los archivos de etiquetas de registro de eventos, consulte ¿Qué son las etiquetas de registro de eventos para el aprendizaje de Android?
| - kcm
Herramientas para mapear caracteres clave, consulte:
| - LSD
! ! ! ! ! !
| -merge-event-log-tag.py
Procesa el contenido de las etiquetas del registro de eventos. Con respecto al significado de los archivos de etiquetas de registro de eventos, consulte ¿Qué son las etiquetas de registro de eventos para el aprendizaje de Android?
| - mktarball.sh
Herramienta de empaquetado ejecutada con fs_get_stats.
|-print_module_license.sh
Muestra toda la información del módulo en el directorio actual.
| -Herramienta de publicación
-Verificar firma del archivo de destino
| - common.py
| >
| -img de target_file
| -OTA_from_target_file
` -signed_target_file_apks
| - rgb2565
Herramienta de conversión RGB
| - signapk
herramienta de firma de paquetes jar bajo la línea de comando
| - Soslin
Una de las herramientas de compilación personalizadas de Android. Consulte (my droid/bionic/linker/readme. txt) para obtener una breve introducción.
| - warn.py
Una herramienta para analizar los registros de compilación del sistema Android
`- zipalign
Herramienta de alineación de archivos zip, consulte LÉAME. TXT se coloca en esta carpeta.
#p#subtitle#e#
Echemos un vistazo a algunos archivos XXX.mk comunes definidos en el sistema compilador de Android.
mydroid/build/core/
| - armelflib.x
| - armelf.x
| /p>
| - base_rules.mk
| - binario.mk
| - build_id.mk
|-build-system.html
| - comprobar árbol
| - cleanbuild.mk
| - cleanspec.mk
|
| - combinaciones
| - config.mk
| - copy_headers.mk
| - dispositivo.mk
| - dex_preopt.mk
| - distdir.mk
| - droiddoc.mk
| .mk
| -dynamic_binary.mk
| - envsetup.mk
| - ejecutable.mk
| sh
| - buscar-jdk-tools-jar.sh
| - ayuda.mk
| | - host_java_library.mk
| - host_native_test.mk
| - host_pre build
| >| - biblioteca estática del host.mk
| - java_library.mk
| - java.mk
| >
| - main.mk
| - Makefile
| - multi_precompilación
|
| - node_fns.mk
| - aviso_files.mk
| - paquete.mk
| /p>
| - precompilación . MK
| - contenedor de proceso gdb.cmds
| - Process_wrapper_gdb.sh p>
| sh
| - configuración del producto.
| - producto.mk
| - proguard.flags
|
| - raw_executable.mk
| - raw_static_library.mk
| - root.mk
| p>
| - static_java_library.mk
| - static_library.mk
| -Tarea
| >`- version_defaults.mk
#p#subtitle#e#
Aquí, el directorio está en mydroid/build/co
Hay algunas tareas especiales en re/tasks/
| - apicheck.mk, que determinan si la API cumple con las especificaciones AOSP.
| - cts.mk prueba cts, puede ejecutar el comando cts en el directorio raíz del código para habilitar cts. Después de la compilación, ingrese /host/linux-x86/bin/.
|-ide.mkide entorno de desarrollo
| -product map.mk
`- sdk-addon.mk
NDK El El entorno de compilación no está contenido en el directorio /build/ etiquetado como AOSP raro.
Pero bajo mydroid/ndk/build.
$ cd ndk/build/tools
$ export ANDROID _ NDK _ ROOT = aosp-ROOT/ndk
$ ./make-release -help
Algunos consejos
¿Cómo mostrar todos los archivos xxx.mk incluidos en cada compilación?
Busca build/core/main.mk.
Reemplazar include $(subdir_makefiles) con
[plain] Ver copia simple $(foreach subdir _ makefile, $(subdir_makefiles),
$(include $ (subdir_makefile) información)
$(eval include $(subdir_makefile)))
subdir_makefile :=
Si encuentra API de empaquetado/comprobación relacionada con API- marca de tiempo actual] Error 38.
Necesita ejecutar: actualizar API
Cómo compilar fuera del directorio de códigos AOSP
[plain]Ver la #ruta y la configuración de copia simple
Producto de destino=genérico
ANDROID_ROOT =/home/Karim/ANDROID/aosp-2.3.x
BIONIC_LIBC = $(ANDROID_ROOT)/BIONIC/libc
product_output=$(ANDROID_ROOT)/output/target/product/$(target_product)
cross-compile=
$(ANDROID_ROOT) /prebuild/Linux-x86/cadena de herramientas /arm-eabi-4 4 . 3/bin/arm-eabi-
#Nombre de herramienta
AS = $(CROSS_COMPILE) como
AR = $(CROSS_COMPILE)ar
CC = $(compilación cruzada)gcc
CPP = $(CC) -E
LD = $(compilación cruzada )LD
NM = $(compilación cruzada)NM
OBJCOPY = $(CROSS _ COMPILE)OBJCOPY
OBJDUMP = $(CROSS _ COMPILE)OBJDUMP
RANLIB = $(CROSS_COMPILE)ranlib
READELF = $(CROSS _ COMPILE)READELF
SIZE = $(CROSS_COMPILE) Tamaño
STRINGS = $(CROSS_COMPILE) cadena
STRIP = $(CROSS_COMPILE)strip
Exportar como AR CC CPP LD NM copia obj volcado de obj RANLIB READELF
Tamaño tiras de cuerda
#Configuración de construcción
CFLAGS =-O2-Wall-fno-short-enum
HEADER_OPS = - I$(Bionic_ LIBC)/brazo de arco /contiene
-I$(Bionic_ LIBC)/core/general
-I$(Bionic_ LIBC)/core/arch ARM
LDFLAGS = -nostdlib -Wl, -dynamic-linker, /system/bin/linker
$(PRODUCT_OUT)/obj/lib/CRT start_dynamic .o
$(PRODUCT_OUT)/obj/ lib/Cr tend_Android .o
-L $(PRODUCT_OUT)/obj/lib-LC-LDL
#Variables de instalación
EXEC_NAME =. Aplicación de ejemplo
INSTALL=INSTALL
INSTALL _ DIR = $(PRODUCT _ OUT)/system/ bin
Número de archivos necesarios para compilar
OBJS =example-app.o
#Crear reglas
Todos:ejemplo-app.o
c.o:
$(CC)$(CFLAGS)$(HEADER _ OPS)-c { 1 } lt
Ejemplo-Aplicación: ${OBJS}
$(CC)-o; $(EXEC _ NAME)$ { OBJS } $(LD flags)
Instalación: Ejemplo-Aplicación
test -d
$(directorio de instalación)|| $(instalación)-d -m 755 $(directorio de instalación)
$(instalación)-m 755 $(nombre de ejecución)$(directorio de instalación)
Limpiar:
rm -f *. o $(nombre de ejecución)core
distclean:
rm -f *~
rm -f *. o $(nombre de ejecución) core
Cómo agregar un nuevo dispositivo
[plain]Ver copia simple $ CD ~/Android/aosp-2.3 .x
$ .build/envsetup.sh
$ mkdir -p devices/acme/coyotepad
$ cd devices/acme/coyotepad
Ir a AndroidProducts.mk p>
PRODUCT_MAKEFILES :=
$(LOCAL_DIR)/full_coyotepad.mk
Para full_coyotepad.mk
$(llame a heredar-producto, $( SRC _ TARGET _ DIR)/producto/idiomas _ full MK)
$(llamar a heredar-producto, $(SRC _ TARGET _ DIR)/product/full . MK) p>
DEVICE_PACKAGE_OVERLAYS :=
Paquete de producto+=
Archivo de copia de producto+=
NOMBRE_PRODUCTO := full_coyotepad
Dispositivo_producto:= coyotepad
PRODUCT_MODEL:= Android completo en coyote pad, meep-meep
En BoardConfig.mk
target_none_kernel:=true
TARGET_NO_BOOTLOADER := verdadero
Target_CPU_ABI := armeabi
BOARD_USES_GENERIC_AUDIO := verdadero
USE_CAMERA_Stub:= verdadero
Abrir proveedorsetup.sh
add _ lunch _ combo full _ coyote pad-eng
#p#subtitle#e#