vaya trabajo test posible perfiles perfil google eliminar dpc dispositivo desactivar crear configurar admite activar android

trabajo - Configuración de dispositivo Android para AOSP



uy el dispositivo no admite perfiles de trabajo test dpc (4)

Correcto ... Así que quieres construir tu propio árbol de dispositivos, sigue leyendo.

Descargo de responsabilidad: esto no es en absoluto completo, y habrá omisiones que explican todo esto en lo alto de mi cabeza y copian algunos bits que tengo aquí en mi propio árbol de dispositivos.

El árbol de dispositivos, por ejemplo, /device/lg/gt540 consistiría en los siguientes archivos make:

  • Android.mk : esto le indicará al sistema de compilación que incluya y genere fuentes específicamente para su dispositivo. Vea a continuación, para un ejemplo. Esto depende del dispositivo y del hardware, puede tener libsensors, liblights, subdirectorios de libcamera en el árbol de dispositivos de ejemplo, es decir, /device/lg/gt540/libsensors , /device/lg/gt540/liblights , /device/lg/gt540/libcamera etc.
  • AndroidBoard.mk : esto es para el kernel, el sistema de compilación lo utiliza para colocar la imagen del kernel en su lugar (más información sobre esto en unos minutos)
  • AndroidProducts.mk : especifica el archivo make del dispositivo apropiado, para usar en la construcción. es decir, /device/lg/gt540/device_gt540.mk , esto también es específico.
  • device_xxxxx.mk : especifica las propiedades y los extras que se copiarán en la salida final, en este caso, podría ser, por ejemplo, device_gt540.mk
  • BoardConfig.mk : esta es la esencia de todo esto, aquí es donde se establecen los indicadores condicionales del compilador, los diseños de partición, las direcciones de inicio, el tamaño del disco RAM , etc.

Echemos un vistazo a cada uno de ellos para echar un vistazo de dónde encaja todo.

Android.mk:

ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),xxxxx) include $(call all-named-subdir-makefiles, recovery libsensors liblights libcamera ....) endif

Así es como la compilación utilizará eso para construir la recuperación, los sensores, las luces y la cámara (por supuesto, habrá más), dice " Yo Builder, ingrese en cada uno de los directorios especificados y construya las fuentes respectivas plskthxbai "

AndroidBoard.mk:

LOCAL_PATH := device/lg/gt540/ # # Boot files # TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel file := $(INSTALLED_KERNEL_TARGET) ALL_PREBUILT += $(file) $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target)

Ahora, esto le está diciendo al sistema de compilación, que sea capaz de colocar este kernel en out/target/product/lg/gt540 (¿observa la correlación con el directorio del árbol de dispositivos?)

AndroidProducts.mk:

PRODUCT_MAKEFILES := / $(LOCAL_DIR)/device_gt540.mk

Se indica a la compilación como en '' Yo Builder, lea el archivo make del dispositivo, por favor, y proceselo al completar la compilación. ''

* device_xxxxx.mk: (para este ejemplo, device_gt540.mk) *

PRODUCT_NAME := lg_gt540 PRODUCT_DEVICE := gt540 PRODUCT_MODEL := LG GT 540 PRODUCT_COPY_FILES += / ... specific ... PRODUCT_PROPERTY_OVERRIDES := / ro.com.android.dateformat=dd-MM-yyyy / ... more stuff ...

Aquí es donde todos los detalles específicos del dispositivo, como los controladores, las bibliotecas propietarias, las secuencias de comandos compatibles con el dispositivo, se copian en out/target/product/lg/gt540/system/ en este caso. Observe cómo los reemplazos para las propiedades, estos terminan en el build.prop encuentra en la raíz del /system de la ROM de Android.

BoardConfig.mk:

LOCAL_PATH:= $(call my-dir) TARGET_NO_BOOTLOADER := true TARGET_PREBUILT_KERNEL := device/lg/gt540/kernel TARGET_PREBUILT_RECOVERY_KERNEL := device/lg/gt540/recovery_kernel # This will vary from device! TARGET_BOARD_PLATFORM := msm7k TARGET_ARCH_VARIANT := armv6-vfp TARGET_CPU_ABI := armeabi TARGET_CPU_ABI := armeabi-v6l TARGET_CPU_ABI2 := armeabi # OpenGL drivers config file path BOARD_EGL_CFG := device/lg/gt540/egl.cfg # Dependant, not to be taken literally! BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO # Dependant, not to be taken literally! BOARD_KERNEL_BASE := 0x02600000 # this will be device specific, and by doing cat /proc/mtd will give you the correct sizes BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00480000 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00480000 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0cf80000 BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0d020000 BOARD_FLASH_BLOCK_SIZE := 131072

Ese es un extracto, observe cómo especificamos la dirección base del kernel, así es como se genera boot.img después de que se realiza la compilación y, una vez más, se out/target/product/lg/gt540/boot.img en out/target/product/lg/gt540/boot.img . Además, lo que es más importante, le estamos diciendo al sistema de compilación que use la plataforma de destino para compilar de forma cruzada los orígenes (* TARGET_BOARD_PLATFORM * / * TARGET_CPU_ABI *) Habrá más información allí, como indicadores condicionales para pasar al compilador, para un ejemplo. especificamos la directiva HAVE_FM_RADIO para decirle, cuando se trata de manejar la fuente del sistema de radio FM, compilar condicionalmente partes de la fuente. Nuevamente, esto es específico del hardware y el millaje variará, también esto se aplica a la dirección de inicio. En pocas palabras, esto dice '' Yo Builder, lee las malditas variables y recuérdalos y aplícalos cuando compiles de forma cruzada esos archivos de origen. ''

Ahora que se muestran las partes internas de cada uno de esos archivos de compilación de Android.

Ahora, en el vendor/ parte del mismo, en AOSP, simplemente, una vez más, la correlación y se corresponde con el device/ árbol, como al continuar con este ejemplo, el vendor/lg/gt540/ que es recogido por el lunch . Hay más archivos de creación allí, pero el consenso general es que hay un directorio llamado proprietary que contiene las librerías propietarias (debido al código cerrado, etc.) que se copian. La copia sobre las bibliotecas se especifica en el archivo device-vendor-blobs.mk , en este caso, gt540-vendor-blobs.mk .

Cuando la magia sucede haciendo lo siguiente:

. build/envsetup.sh

Esta es la lectura de las entradas completas que se encuentran en cada uno de los subdirectorios de device/ y "los recuerda", por lo que el sistema de compilación sabe qué tipo de objetivo se usa, etc.

Cuando el se invoca el . lunch , aparece un menú que le pide que elija el dispositivo que se requiere para construir. Ahora el último y último paso para hacer la compilación ...

make -j5 > buildlog.log 2>&1

multitail en otra terminal y buildlog.log archivo buildlog.log para verificar y asegurar que se está construyendo.

Este último paso dependerá de la cantidad de núcleos que tenga (n cores + 1 como regla) y demora un tiempo en construirse, la compilación en GB toma 40mins en mi computadora portátil con Arch Linux 64bit, la compilación ICS toma aproximadamente 2hrs 30 mins. Por lo tanto, el kilometraje variará según el tipo de potencia que tenga su máquina.

Cuando la compilación está terminada, una pequeña campana suena y en la parte inferior de dicho archivo de registro, veo esto:

Combining NOTICE files: out/target/product/xxxxx/obj/NOTICE.html Target system fs image: out/target/product/xxxxx/obj/PACKAGING/systemimage_intermediates/system.img Install system fs image: out/target/product/xxxxx/system.img out/target/product/xxxx/system.img+ total size is 108776448

Como cuestión de interés, JBQ (Jean Baptiste Queru, el ''jefe'' para administrar / distribuir la fuente de Google), su paso de compilación es este ...

make -j32

¡Sip! 32 núcleos! Eso ..... es bastante poderoso.

He descargado el código fuente de Android. Ahora quiero hacerlo para mi propio dispositivo (LG GT540). He oído que necesitas crear alguna ''Configuración de dispositivo'' para eso. Aunque varios desarrolladores ya han creado configuraciones de dispositivo para mi dispositivo, pero quiero crear la mía, solo para aprender.
Vi muchos archivos como BoardConfig.mk, AndroidProducts.mk, etc. Pero no sé lo que hacen. Además contienen muchas configuraciones. Sobre eso, no hay una buena documentación para eso.
¿Puede alguien con experiencia con las configuraciones de dispositivos y dispositivos Android ayudarme?



Si está buscando entrar en el lado del hardware, probablemente el recurso más informativo que he encontrado ha sido:

http://source.android.com/compatibility/overview.html

Lea la documentación que escribieron para los fabricantes que buscan construir dispositivos Android, es la referencia más completa que encontrará.


Un excelente recurso para cualquier persona que cree Android para un dispositivo está aquí: http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?bid=98

(Un enfoque práctico del mundo real para el desarrollo de plataformas Android en ODROID)

Aunque algunas de las cosas que hay en el tablero de ODROID son particulares, aún ofrece una gran perspectiva del funcionamiento interno de Android y la personalización necesaria para un nuevo tablero.