Registros relacionados con la compilación de Android R (plataforma Qualcomm)

Prefacio

Este artículo es un registro de depuración, basado en dos direcciones principales para resumir el contenido de este artículo:

1. El comando de compilación ninja mejora la eficiencia de depuración

2. El código fuente de Qualcomm introdujo QSSI (Qualcomm Single System Image) en R. Literalmente, significa desacoplar el sistema de forma independiente y allanar el camino para que los fabricantes actualicen a la última versión de Android.

 

Descripción detallada

Para compilación

No se ha realizado ningún análisis de la compilación ninja, por lo que los amigos involucrados en el módulo pueden tener una forma de mejorar la eficiencia de depuración.Los que depuran la versión de Android R conocen el dolor de la compilación y la depuración.

./prebuilts/build-tools/linux-x86/bin/ninja -f out / mixed-bengal.ninja -j32 aboot

Por ejemplo, el módulo aboot se depuró anteriormente. Después de la compilación completa, puede usar el comando anterior para compilar más tarde, por supuesto, también puede ser bootimage vendorimage y así sucesivamente.

Otra cosa a tener en cuenta es que después de Android Q, Google ha habilitado la partición dinámica. El tamaño de las particiones, como el sistema, el proveedor y el producto, es dinámicamente variable y la partición en la tabla de particiones es excelente.

No nos centramos en el particionamiento dinámico aquí, pero la versión con particionamiento dinámico está habilitada. Si necesita depurar y verificar el problema, como hacer cambios en el proveedor, debe volver a empaquetar la superimagen después de compilar.

Después de leer el comando para reempaquetar super, agregue (Todo).

Suplemento: Echando un vistazo al uso en el script build.sh, Qualcomm ha realizado varias iteraciones

proveedor \ qcom \ opensource \ core-utils \ build \ build.sh

# Version 0:
#     Supports just the basic make commands (passes on all args like -j32 to the make command).
# Version 1:
#     Supports dist command as well - needed for target-files/ota generation.
#     Usage: ./build.sh dist -j32
#     This triggers make dist for qssi and target lunch, generates target-files, merges them
#     and triggers ota generation.
# Version 2:
#     Supports custom copy paths for dynamic patition images when compiled with dist.
#     option : --dp_images_path=<custom-copy-path>
# Version 3:
#     Supports segmenting the build into qssi only, target only and merge only steps and
#     enabling users to call specific steps or full build by giving no separate steps.
#     options: --qssi_only, --target_only, --merge_only
#     Usage: ./build.sh dist -j32 --qssi_only (for only qssi build) or ./build.sh dist -j32 (for full build)
#     Note: qssi_only and target_only options can be given together but merge_only should not be combined with
#           any other options.
# Version 4:
#     Supports lunch qssi variant to build qssi only images.
#     enables users to build standalone qssi images independent of any targets
#     option(s): --qssi_only
#     Usage: ./build.sh dist -j32 --qssi_only or ./build.sh dist -j32. Either way the outcome will be the same
#     Note: --target_only and --merge_only options will throw an error with lunch qssi variant

version0, version1 ------ Básicamente es compatible con la compilación completa

version2 ------ Personalización de copia de imagen de partición dinámica

version3 ------ Admite compilación modular, como:

./build.sh --qssi_only solo compila qssi

./build.sh --target_only solo compila el producto de destino oem

./build.sh --merge_only fusiona las dos partes anteriores del contenido del espejo, la situación de fusionar la superimagen mencionada anteriormente, así como la fusión final ota y fusionar el archivo de destino, incluido el paquete, se puede completar con este comando.

version4 ------ Solo lunch qssi puede compilar de forma independiente solo la imagen qssi

Los comandos no se han verificado uno por uno en este momento, y la fase de depuración es crítica en el tiempo, principalmente por lo que intenté y el resumen de rumores.

编译system
build.sh dist qssi_only -j8
build.sh dist merge_only -j8
编译vendor.img
build.sh vendorimage dist target_only -j8
build.sh dist merge_only -j8
build.sh dist merge_only -j8会生成super.img

 

El enfoque de QSSI

Según mi conocimiento aproximado actual, la compilación de systemimage es independiente de otros módulos.

Entonces, la ejecución del script compilado es la misma: el TARGET_PRODUCT en la primera etapa es qssi.

source build/envsetup.sh
lunch qssi-userdebug

Espere a que se complete la compilación, ejecute la segunda etapa de la compilación de otras imágenes, TARGET_PRODUCT es el proyecto oem.

El tiempo total de compilación es de al menos 4 horas, por lo que cualquier depuración que requiera una compilación completa tendrá que pasar por alto, pero quién nos dijo que comiéramos este plato de arroz, enfréntalo con optimismo, después de todo, esta es la esencia de la vida.

Supongo que te gusta

Origin blog.csdn.net/jeephao/article/details/111823543
Recomendado
Clasificación