El sistema para compilar el modo de usuario en LineageOS (Android10)

1. Introducción a las opciones de compilación de Android

Al compilar Android, puede elegir las opciones de compilación eng, user y userdebug.

Opciones de compilación 1.eng

(1). Cuando el  sistema esté compilado, instale el módulo con la etiqueta LOCAL_MODULE_TAGS como usuario, depuración, eng

(2).  Establezca el atributo ro.secure = 0, desactive la función de control de seguridad

(3).  Establezca la propiedad ro.debuggable = 1 para habilitar la función de depuración de la aplicación.

(4). La  función adb está activada de forma predeterminada y adb tiene privilegios de root.

2.opciones de compilación de userdebug

(1).  Instale el módulo con la etiqueta LOCAL_MODULE_TAGS como usuario y depure cuando se compile el sistema

(2).  Establezca el atributo ro.secure = 1, active la función de verificación de seguridad

(3).  Establezca la propiedad ro.debuggable = 1 para habilitar la función de depuración de la aplicación.

(4). La  función adb está activada de forma predeterminada y adb tiene privilegios de root.

(5).  Userdebug es similar a "user", pero tiene privilegios de root y funciones de depuración; es el tipo de compilación preferido para depurar

3.opciones de compilación del usuario

(1).  Instale el módulo con la etiqueta LOCAL_MODULE_TAGS como usuario cuando se compile el sistema

(2).  Establezca el atributo ro.secure = 1, active la función de verificación de seguridad

(3).  Establezca la propiedad ro.debuggable = 0, desactive la función de depuración de la aplicación.

(4). La  función adb está desactivada de forma predeterminada y adb no tiene privilegios de root.

(5).  Permisos restringidos, adecuados para entornos de producción.

En resumen:

eng es el entorno de desarrollo y prueba utilizado por los ingenieros para facilitar el desarrollo y la depuración de la interacción, el rendimiento, etc. entre varios software y hardware.

Userdebug es la versión de desarrollo y depuración antes de que se lance la versión de usuario

Usuario es la versión utilizada en el entorno de producción, por lo general, los teléfonos móviles que compramos a través de los canales habituales son la versión del usuario.

En la actualidad, uno de los puntos de detección de muchas aplicaciones para detectar si el entorno operativo es normal es detectar a qué opción de compilación pertenece el sistema en ejecución. Tanto eng como userdebug se consideran equipos de riesgo.

Dos, compile el sistema de opciones de usuario en lineageOs

En el código fuente de lineageOs, los comandos oficiales del método de compilación son los siguientes (instrucciones de oneplus3):

source build/envsetup.sh
breakfast oneplus3
brunch oneplus3

El paquete de actualización de la opción userdebug es compilado por el comando anterior. Busque el código fuente con la palabra clave "desayuno / brunch" para encontrar el lugar de implementación. La ruta del archivo de implementación para los comandos de desayuno y brunch es la siguiente:

vendor/lineage/build/envsetup.sh

Se puede ver en la ruta anterior que este es un comando de compilación agregado por el propio linaje. Ver el código de implementación de desayuno y brunch:

# brunch命令实现,会调用breakfast
function brunch()
{
    breakfast $*
    if [ $? -eq 0 ]; then
        mka bacon
    else
        echo "No such item in brunch menu. Try 'breakfast'"
        return 1
    fi
    return $?
}
# breakfast实现,代码中可以看到可以传入编译的设备代码和编译选项
# 如果没有指定编译选项,默认使用"userdebug"
function breakfast()
{
    target=$1
    local variant=$2

    if [ $# -eq 0 ]; then
        # No arguments, so let's have the full menu
        lunch
    else
        echo "z$target" | grep -q "-"
        if [ $? -eq 0 ]; then
            # A buildtype was specified, assume a full device name
            lunch $target
        else
            # This is probably just the Lineage model name
            if [ -z "$variant" ]; then
                variant="userdebug"
            fi

            lunch lineage_$target-$variant
        fi
    fi
    return $?
}

A partir del análisis de la implementación del comando de compilación anterior, el sistema que necesita compilar la versión del usuario solo necesita cambiar el comando de compilación a lo siguiente:

source build/envsetup.sh
breakfast oneplus3 user
brunch oneplus3 user

3. Comando de opción de usuario de compilación recientemente agregado makeuser

Para facilitar la compilación de la versión de usuario, puede agregar sus propios comandos de compilación de acuerdo con sus propias ideas. Por ejemplo, agregue un comando makeuser y pase el código del dispositivo para compilar el paquete flash lineageOs correspondiente al teléfono móvil. La implementación es la siguiente: 

(1) Agregue el comando makeuser en el archivo vendor / lineage / build / envsetup.sh, la implementación específica es la siguiente

# ///ADD START
# 只需要传入设备代码号就可以进行user版本系统编译,参考breakfast命令实现
function makeuser()
{
    if [ $# != 1 ]; then
        # No arguments, so let's have the full menu
        printf  "Error:arguments must be one,please input device codename\n"
        return
    fi    
    breakfast $1 user
    if [ $? -eq 0 ]; then
        mka bacon
    else
        echo "No such item in brunch menu. Try 'breakfast'"
        return 1
    fi
    return $?
}
# ///ADD END

(2) Utilice el comando de origen para que el nuevo comando sea efectivo

source build/envsetup.sh

(3) Utilice el nuevo comando: makeuser compile

makeuser oneplus3

El siguiente es el diagrama del efecto de ejecución después de mi modificación:

imagen

En cuanto a cómo configurar el permiso de root de adb en la opción de compilación "usuario", lo compartiré en un artículo posterior.Puedes seguir mi cuenta oficial para actualizar de vez en cuando.

[Anterior] Divertido desarrollo y personalización del código fuente de Android10 (15) para lograr la configuración predeterminada de omitir el asistente de arranque, enchufar el cable de alimentación y no dormir

 

Los grandes mantienen una preocupación antes de irse, y continúan los maravillosos artículos de seguimiento.imagen

imagen

Supongo que te gusta

Origin blog.csdn.net/u011426115/article/details/112797983
Recomendado
Clasificación