Colección de citas famosas - Slogan de motivación - Estructura del sistema Android

Estructura del sistema Android

Android se ejecuta en el kernel de Linux, pero no en GNU/Linux. Debido a que la mayoría de las funciones admitidas por GNU/Linux no son compatibles con Android, incluidas Cairo, X11, Alsa, FFmpeg, GTK, Pango y Glibc, etc., se han eliminado. Android usa Bionic en lugar de Glibc, Cairo usa Skia y FFmpeg usa opencore. Para poder lograr aplicaciones comerciales, Android debe eliminar las restricciones de la licencia GNU GPL. Por ejemplo, Android mueve el controlador al espacio del usuario y separa completamente el controlador de Linux del kernel de Linux. Bionic/Libc/Kernel/ no es un archivo de encabezado del kernel estándar. El encabezado del kernel de Android es generado por la herramienta de encabezado del kernel de Linux, que se realiza para guardar constantes, estructuras de datos y macros.

El control del kernel de Linux de Android incluye seguridad, gestión de memoria, gestión de procesos, pila de red, modelo de controlador, etc. Antes de descargar el código fuente de Android, debe instalar su herramienta de compilación Repo para inicializar el código fuente. Repo es una herramienta utilizada por Android para ayudar a Git. APK es el sufijo de aplicación de Android y la abreviatura de AndroidPackage, es decir, paquete de instalación de Android (apk). APK es un formato de archivo similar a Symbian Sis o Sisx. Se puede instalar transfiriendo directamente el archivo APK a un emulador de Android o ejecutándolo en un teléfono Android. El archivo apk es el mismo que sis. El proyecto compilado por Android SDK está empaquetado en un archivo de instalación en formato apk. El archivo APK en realidad está en formato zip, pero el sufijo se cambia a apk. Después de descomprimirlo, podrá ver el archivo Dex. Dex es el nombre completo de Dalvik VM ejecuta, es decir, Android Dalvik Executors, no código de bytes de Java ME, sino código de bytes de Dalvik.

Estructura del archivo APK

La estructura del archivo APK es:

1.META-INF\ (nota: se ve a menudo en archivos Jar);

p>

2.res\(Nota: directorio donde se almacenan los archivos de recursos);

3.AndroidManifest.xml (Nota: archivo de configuración global del programa);

4.classes .dex (Nota: código de bytes de Dalvik);

5.resources.arsc (Nota: archivo de recursos binarios compilados).

En resumen, descubrimos que cuando se ejecuta un programa en Android, primero es necesario descomprimirlo y luego instalarlo directamente como Symbian, que es diferente del archivo PE en Windows Mobile. Esto no requiere alta confidencialidad y confiabilidad del programa. Se puede descompilar mediante el comando dexdump, pero cumple con las reglas de desarrollo. Los Windows Gadgets de Microsoft o WPF también utilizan esta arquitectura.

En la plataforma Android, el archivo ejecutable de dalvik vm está empaquetado en formato apk. El cargador de tiempo de ejecución final descomprimirá y obtendrá el acceso de seguridad relacionado con la rama de permisos en el archivo androidmanifest.xml compilado, pero todavía existen muchas restricciones de seguridad. Si transfiere el archivo apk a la carpeta /system/app, encontrará que la ejecución no tiene restricciones.

Por último, es posible que los archivos que instalamos habitualmente no estén en esta carpeta, pero el archivo apk del sistema se colocará en esta carpeta de forma predeterminada en la rom de Android y tiene permisos de root. La HAL (capa de abstracción de hardware) de Android puede proporcionar módulos de controladores de hardware en forma de código fuente cerrado.

El propósito de HAL es separar el marco de Android del kernel de Linux para que Android no dependa demasiado del kernel de Linux, logrando así el concepto de independencia del kernel. El desarrollo del marco de Android se puede desarrollar sin considerar la implementación del mismo. conductor.

HAL Stub es un concepto de agente y Stub existe en forma de archivo *. Así que archívalo. El Stub "proporciona" operaciones al HAL, y el tiempo de ejecución de Android obtiene las operaciones del Stub del HAL y luego vuelve a llamar a estas operaciones. El HAL contiene muchos stubs (agentes). Siempre que se especifique el "tipo" en tiempo de ejecución, es decir, el ID del módulo, se puede obtener la función de operación. El puente entre el sistema operativo y la aplicación, la aplicación se divide en dos capas: la capa funcional (biblioteca) y la máquina virtual (máquina virtual). Bionic es una versión mejorada de libc para Android. Android también incluye Webkit, el motor detrás del navegador Safari de Apple. Surface Flinger muestra contenido 2D o 3D en la pantalla. Android utiliza la cadena de herramientas Bionic Libc casera de Google.

Android está basado en OpenCORE, núcleo abierto. El núcleo abierto se puede dividir en siete partes: PVPlayer, PVAuthor, Codec, marco multimedia de video por paquetes (pvmf), biblioteca de compatibilidad del sistema operativo (oscl), Common y OpenMAX.

Android utiliza skia como motor gráfico central, trabajando con OpenGL/ES. Skia tiene la misma funcionalidad que Linux Cairo, pero su funcionalidad está en su infancia en comparación con Linux Cairo. Skia fue adquirida por Google en 2005 y el código fuente de Skia GL se hizo público a principios de 2007. Skia es también el motor gráfico de Google Chrome.

La base de datos multimedia de Android utiliza el sistema de base de datos SQLite. Las bases de datos se dividen en * * * bases de datos y bases de datos privadas. Los usuarios pueden obtener la base de datos a través de la clase ContentResolver (columna).

La mayor parte de la capa intermedia de Android está implementada en Java, utilizando una máquina virtual especial Dalvik. La máquina virtual Dalvik es una máquina virtual Java "basada en registros". Las variables se almacenan en registros y las instrucciones de la máquina virtual son relativamente reducidas.

La máquina virtual Dalvik puede tener múltiples instancias. Cada aplicación de Android es ejecutada por una máquina virtual Dalvik, de modo que el sistema se puede optimizar al ejecutar el programa. La máquina virtual Dalvik no ejecuta el código de bytes de Java, sino que ejecuta un programa llamado . formato dex. El propio Android es un sistema operativo con permisos independientes. En este sistema operativo, cada aplicación se ejecuta con una identidad de identificación del sistema única (ID de usuario de Linux e ID de grupo). Cada parte del sistema también utiliza su propio método de identificación independiente. Así es como Linux separa las aplicaciones de las aplicaciones y las aplicaciones del sistema.

Proporciona más funciones de seguridad del sistema a través del mecanismo de permisos. Los permisos pueden restringir operaciones específicas a procesos específicos o restringir el acceso a segmentos de datos específicos por permiso URI.

La idea central de diseño de la arquitectura de seguridad de Android es que, de forma predeterminada, todas las aplicaciones no tienen derechos para operar otras aplicaciones, sistemas o usuarios. Esto incluye leer y escribir los datos privados del usuario (contactos o correos electrónicos), leer y escribir otros archivos de aplicaciones, acceder a la red o bloquear el dispositivo desde el modo de espera.

Mientras se instala la aplicación, el instalador del paquete otorgará los permisos a la aplicación después de verificar los permisos mencionados en la firma del programa y confirmados por el usuario.

Desde la perspectiva del usuario, las aplicaciones de Android generalmente requieren los siguientes permisos:

Realizar llamadas, enviar SMS o MMS, modificar/eliminar contenido en la tarjeta SD, leer información de contacto, leer información de cartas del calendario, escribir datos de programación, leer el estado del teléfono o el código de identificación, geolocalización precisa (basada en GPS), geolocalización difusa (basada en red), crear conexión Bluetooth, acceso completo a Internet, verificar el estado de la red, verificar el estado de WiFi, evitar el modo de espera del teléfono, modificar la configuración global del sistema, y leer la configuración de sincronización.

Según la funcionalidad proporcionada por la aplicación, esta debería solicitar permisos razonables. Los usuarios también pueden analizar los permisos que requiere una aplicación para determinar simplemente si es segura. Si una aplicación es una versión independiente, sin anuncios y sin contenido adicional para descargar, entonces es sospechoso que requiera acceso a Internet.