¿Cómo funciona la aplicación de Android?

El desarrollo de una aplicación para Android involucra varios procesos que suceden de manera secuencial. Después de escribir los archivos de código fuente, cuando los desarrolladores hacen clic en el botón Ejecutar en el estudio de Android , se inician muchas operaciones y procesos en el backend. Cada operación que ocurre en segundo plano es un paso crucial y son interdependientes. El IDE crea todos los archivos de la aplicación, los hace compatibles con el dispositivo para implementarlos y garantiza que la aplicación se ejecute correctamente en el dispositivo. Este artículo explica ampliamente todos y cada uno de los pasos críticos involucrados en el viaje de una aplicación de Android, desde los archivos IDE hasta una aplicación de dispositivo en funcionamiento.   

Paso 1: Crear el archivo APK

1. Compilación de código

Los archivos fuente de la aplicación Android están escritos en lenguajes de programación Java (archivos *.java) o Kotlin (archivos *.kt) . La sintaxis de escribir el código en estos 2 lenguajes es diferente pero su proceso de compilación es casi el mismo. Ambos lenguajes de programación generan código que se puede compilar en código de bytes de Java que es ejecutable en JVM (Java Virtual Machine) . En un entorno de Android, el proceso comienza con la compilación del código fuente de Java/Kotlin en el archivo de clase de Java . Los archivos de clase tienen la extensión *.class y contienen el código de bytes de Java (representa el ensamblado de Java). Esta tarea de compilación la lleva a cabo el javacy compiladores kotlinc para el código de lenguaje Java y Kotlin respectivamente. 

How Does Android App Work

2. Conversión a bytecodes de Dalvik

El archivo de clase Java (*.class) generado en el paso anterior es ejecutable en Java Virtual Machine (JVM), ya que contiene los códigos de bytes estándar de Oracle JVM Java . Sin embargo, este formato de código no es adecuado para dispositivos Android y, por lo tanto, Android tiene su propio formato de código de bytes único conocido como código de bytes de Dalvik . El compilador Dex traduce el código de bytes de Java al código de bytes de Dalvik, que son instrucciones de código de máquina para un procesador teórico. Durante el proceso de compilación, el comando dx vincula todos los archivos .class , así como los archivos .jar, y crea un único archivo classes.dex.que está escrito en formato de código de bytes Dalvik. Este archivo ahora es ejecutable en la máquina virtual en el sistema operativo Android conocido como Android Runtime (o Dalvik Virtual Machine (DVM) para la versión de Android anterior a Kitkat (4.4)).

How Does Android App Work

Código normal de Java:

public int sumarDosNúmeros(int a, int b) {

   devuelve a+b;

}

Código de bytes de Java equivalente: 

public int sumarDosNúmeros(int, int);

   Código:

      0: carga_1

      1: carga_2

      2: yo agrego

      3: regreso

 Código de bytes de Dalvik equivalente:

.método público sumarDosNúmeros(II)I

   .registros 4

   .parámetro p1, “a” #I

   .parámetro p2, “b” # I

   .línea 6

   complemento v0, p1, p2

   volver v0

método .end

3. Generando archivo .apk

Los archivos de recursos de la aplicación de Android, como imágenes, fuentes, diseños XML, etc., se transforman en una única unidad de recursos compilada por la herramienta de empaquetado de activos de Android (aapt) . La herramienta aapt también es responsable de crear el archivo R.java de una aplicación de Android. Además, la unidad de recursos compilada junto con el archivo classes.dex se comprime con la herramienta apkbuilder y se crea un archivo tipo zip que se denomina Paquete de Android (archivo .apk) . El archivo .apk generado contiene todos los datos necesarios para ejecutar la aplicación de Android. 

How Does Android App Work

4. Distribución de aplicaciones

El archivo .apk generado en el paso anterior es un paquete de aplicación listo para usar y los desarrolladores pueden usar este archivo para distribuir la aplicación. Sin embargo, para distribuir y publicar la aplicación a través de Google Play Store , los desarrolladores deben firmarla. Las aplicaciones de Android deben estar firmadas digitalmente con un certificado para que los usuarios puedan instalarlas. El certificado está autofirmado y Android lo usa para identificar al autor de la aplicación. El desarrollador/autor de la aplicación posee la clave privada del certificado y todos estos detalles se almacenan como un archivo adicional en el paquete de Android (archivo .apk). 

Oracle Java Development Kit (JDK) proporciona la herramienta jarsigner para firmar los archivos .jar y .apk. Además, las partes comprimidas del archivo .apk firmado deben alinearse en los límites de bytes de tal manera que el sistema operativo Android pueda leerlas sin descomprimir el archivo. La alineación de bytes de los archivos se asegura al ejecutar el archivo .apk firmado a través de la herramienta zipalign .

How Does Android App Work

Paso 2: implementar la aplicación

1. Establecer el servidor ADB

Android Debug Bridge (ADB) implementa una aplicación en dispositivos Android. Es una herramienta de línea de comandos que actúa como una interfaz y facilita a los desarrolladores comunicarse con un dispositivo Android. Para comenzar la implementación, el cliente ADB primero verificará si el proceso del servidor ADB ya se está ejecutando en el dispositivo. Si no lo hay, el proceso del servidor comienza con el comando ADB . El servidor ADB se inicia y se vincula con el puerto TCP local 5037 . Toda la comunicación y los comandos se transfieren del servidor ADB a los clientes ADB mediante el puerto 5037. Además, el servidor establece una conexión con todos los dispositivos en ejecución. Escanea todos los puertos y cuando el servidor detecta un demonio ADB(adbd: un proceso en segundo plano en el emulador o en la instancia del dispositivo), configuró una conexión a ese puerto. El proceso adbd que coincide con el dispositivo Android puede comunicarse con las aplicaciones, depurarlas y recopilar su salida de registro.

How Does Android App Work

2. Transferir el archivo .apk al dispositivo

El comando ADB transfiere el archivo .apk al sistema de archivos local del dispositivo Android de destino. La ubicación de la aplicación en el sistema de archivos del dispositivo se define por su nombre de paquete. Por ejemplo, si el paquete de la aplicación es com.example.sampleapp , su archivo .apk se ubicará en la ruta /data/app/com.example.sampleapp

Paso 3: Ejecute la aplicación

1. Solicitud de lanzamiento de la aplicación

El proceso Zygote es el padre de todas las aplicaciones de Android y lanza una aplicación cuando un usuario lo solicita. El cigoto es un tipo especial de proceso del sistema operativo Android que permite compartir código entre diferentes instancias que se ejecutan en dispositivos virtuales Android (Dalvik/Android Runtime). Esos recursos, clases y bibliotecas de código que posiblemente requiera cualquier aplicación en tiempo de ejecución están precargados en el espacio de memoria del proceso zygote. Cada vez que el proceso recibe una solicitud para iniciar una nueva aplicación, se bifurca (crea una copia) mediante la llamada al sistema de bifurcación (Android es un sistema Linux) e inicia la nueva aplicación. Las bibliotecas y los recursos precargados son la razón del lanzamiento eficiente y rápido de la aplicación en Android.   

2. Conversión del código .dex a formato OAT nativo

Cuando se instala una nueva aplicación, Android optimiza los datos de la aplicación y genera un archivo OAT correspondiente. Este archivo es creado por el sistema operativo Android para acelerar el tiempo de carga de la aplicación. El proceso para generar el archivo OAT comienza con la extracción del archivo classes.dex presente dentro del archivo .apk de la aplicación. El archivo classes.dex se coloca en un directorio separado y Android compila el código de bytes de Dalvik con compilación anticipada (AOT, también abreviado como OAT) en código de máquina nativo. El sistema Android utiliza este archivo OAT nativo para mejorar la experiencia del usuario al cargar la aplicación de forma rápida y sin problemas. 

Antes de que AOT entrara en escena, la herramienta dexopt se usaba para convertir los archivos .dex en un archivo .odex (DEX optimizado) que contiene el código de bytes optimizado. Con la introducción de AOT en Android, la herramienta dex2oat convierte y optimiza el archivo .dex en un formato de archivo OAT que contiene código de máquina escrito en formato ELF (formato ejecutable y vinculable). Esta biblioteca nativa luego se asigna a la memoria del proceso de la aplicación. Los archivos OAT generalmente se guardan en el dispositivo Android en el directorio: /data/dalvik-cache/

How Does Android App Work

Después de seguir todos estos pasos y procedimientos, la aplicación finalmente se iniciará y la actividad inicial de la aplicación aparecerá en la pantalla del dispositivo.

Publicación traducida automáticamente

Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *