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:
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.
Los grandes mantienen una preocupación antes de irse, y continúan los maravillosos artículos de seguimiento.