Creando tu primera aplicación Android en Java
ventas de smartphones a nivel mundial en el cuarto trimestre de 2023.
Le système d'exploitation Android possède la plus grande base installée parmi les plateformes mobiles à travers le monde. BACKLINKO
-
Début 2024, Android détient une part de marché mondiale de 70,69 %.
-
Aux États-Unis, les iPhones ont une part de marché de 60,77 %.
-
Plus de 3 milliards d'appareils Android sont actuellement actifs.
-
Les smartphones Android ont représenté 56 % des ventes mondiales de smartphones au quatrième trimestre 2023.
Historia
-
Android fue creado por la Open Handset Alliance, que está liderada por Google.
-
El 18 de agosto de 2008, se lanzó la beta del SDK de Android 0.9
-
El 5 de diciembre de 2008, Google anunció el primer Android Dev Phone.
Historia
-
Android fue creado por la Open Handset Alliance, liderada por Google.
-
El 18 de agosto de 2008, se lanzó la versión beta del SDK de Android 0.9.
-
El 5 de diciembre de 2008, Google anunció el primer teléfono para desarrolladores de Android (Android Dev Phone).
Componentes del SO de Android:
Núcleo de Linux: El núcleo del sistema operativo Android se basa en el kernel de Linux, que está escrito en C y C++
Bibliotecas Nativas: Muchos componentes y servicios centrales del sistema Android están construidos utilizando código nativo escrito en C y C++. Estas bibliotecas nativas proporcionan funcionalidades esenciales y se exponen a los desarrolladores a través de APIs de Java.
Android Runtime (ART): El Android Runtime (ART) y su predecesor, Dalvik, son responsables de ejecutar aplicaciones de Android. Estos entornos de ejecución ejecutan bytecode compilado a partir de código fuente de Java o Kotlin.
Framework de API de Java: Las APIs de nivel superior y el framework de aplicaciones están escritos en Java. Esto permite a los desarrolladores escribir aplicaciones de Android usando Java, las cuales son luego compiladas a bytecode y ejecutadas en el Android Runtime.
.
Bibliotecas nativas: Muchos componentes y servicios esenciales de Android están construidos con código nativo en C y C++, accesibles a través de API de Java.Android Runtime (ART): ART, y su predecesor Dalvik, ejecutan las aplicaciones de Android en bytecode, compilado a partir de código Java o Kotlin.
Framework de API de Java: Las API y frameworks de nivel superior están escritos en Java, lo que permite a los desarrolladores escribir aplicaciones que se ejecutan en Android Runtime.
El sistema operativo Android es [de código abierto](https: //en.wikipedia.org/wiki/Open_source).
-
Disponible libremente para posible modificación y redistribución.
-
CyanogenMod es una de las redistribuciones populares de Android de código abierto.
-
Limitaciones: Aplicaciones de Google de código cerrado como Google Play y la navegación GPS de Google. Le système d'exploitation Android est open source.- Disponible librement pour modifications et redistribution.
-
CyanogenMod est l'une des redistributions open source populaires d'Android.
-
Limites : Applications propriétaires de Google comme Google Play et la navigation GPS de Google restent fermées.
El papel de Java en el desarrollo de Android. Java es uno de los lenguajes preferidos para el desarrollo de Android y eso es porque:
-
JAVA es un lenguaje de Programación Orientada a Objetos (POO): Los principios POO de Java facilitan la gestión y el mantenimiento de bases de código complejas. Este enfoque modular permite a los desarrolladores crear código reutilizable y escalable.
-
Independencia de Plataforma: La capacidad de Java de “Escribir una vez, ejecutar en cualquier lugar” asegura que el código escrito en Java pueda ejecutarse en cualquier dispositivo que soporte la Máquina Virtual de Java (JVM). Esta compatibilidad multiplataforma es una ventaja significativa para el desarrollo de Android.
-
Robusto y Seguro: Java es conocido por su robustez y características de seguridad. Incluye una sólida gestión de memoria, manejo de excepciones y un marco de seguridad integral, lo que lo hace ideal para desarrollar aplicaciones Android seguras.
-
Amplias bibliotecas y herramientas: Java ofrece un rico conjunto de bibliotecas y herramientas de desarrollo que simplifican el proceso de desarrollo. Estas bibliotecas proporcionan funcionalidades preconstruidas, reduciendo la necesidad de escribir código desde cero
-
Rendimiento: El rendimiento de Java está optimizado para el desarrollo de Android. El compilador Just-In-Time (JIT) y la eficiente recolección de basura contribuyen al rendimiento fluido de las aplicaciones de Android1.
-
Base de desarrolladores existente: Java ya era un lenguaje de programación ampliamente utilizado y conocido con una gran comunidad de desarrolladores. Esto significaba que había una reserva de talento lista y familiarizada con Java, lo que facilitaba a Google atraer desarrolladores a la plataforma Android2.
-
Soporte de Sun Microsystems: En ese momento, Sun Microsystems, el creador original de Java, fomentó activamente la adopción de Java y tenía un acuerdo con Google para usar Java para Android. Este soporte fue un factor significativo en la decisión de Google - JAVA est un langage de programmation orienté objet (OOP) : Les principes OOP de Java facilitent la gestion et la maintenance des bases de code complexes, permettant un code modulaire, réutilisable et évolutif.
-
Indépendance de la plateforme : La capacité "Write Once, Run Anywhere" de Java garantit que le code peut s'exécuter sur tout appareil prenant en charge la JVM, offrant une compatibilité multiplateforme avantageuse pour le développement Android. - Robuste et sécurisé : Java est réputé pour sa gestion mémoire, sa gestion des exceptions et son cadre de sécurité complet, idéal pour des applications Android s
estables.
-
Bibliotecas y herramientas extendidas: Java ofrece un conjunto rico de bibliotecas y herramientas que facilitan el desarrollo. - Rendimiento: Java está optimizado para Android gracias al compilador JIT y a una gestión eficiente de la memoria, asegurando un rendimiento fluido de las aplicaciones.
-
Base de desarrolladores existente: Java ya era un lenguaje popular, con una gran comunidad, facilitando así la adopción por parte de los desarrolladores para la plataforma Android. - Apoyo de Sun Microsystems: En ese momento, Sun Microsystems, creador de Java, fomentaba activamente su adopción y tenía un acuerdo con Google para su uso en Android.
Requisitos previos para el desarrollo de aplicaciones Android
Conocimientos básicos de programación:
-
Familiaridad con conceptos y lenguajes de programación como Java o Kotlin.
-
Comprensión de los principios de la programación orientada a objetos (POO).
-
Comprensión básica de XML (Lenguaje de Marcado Extensible) para diseñar interfaces de usuario en Android
graph TD
A [User] -->|User interacting with View| B [View]
B -->|Request Process| C [Controller]
C -->|Asking Model to provide Data| D [Model]
D -->|Asking Data from DB| E [(Database)]
E -->|Response from DB| D
D -->|Returning the Data| C
C -->|Rendering the content| B
B -.-> A
%% Color and style enhancements
style A fill:#f9c1c1,stroke:#333,stroke-width:2px
style B fill:#ffff99,stroke:#333,stroke-width:2px
style C fill:#d9f9a1,stroke:#333,stroke-width:2px
style D fill:#a1c1f9,stroke:#333,stroke-width:2px
style E fill:#ff9999,stroke:#333,stroke-width:2px
%% Separating User and Database
subgraph User Interaction
A
B
end
subgraph Backend
C
D
E
end
- [Conocimientos básicos de MVC](https://www.codecademy.com/article/mvc)(Modelo Vista Controlador)
## Entorno de desarrollo:
Este es un buen tutorial en video de YouTube para instalar Android Studio: [Configuraciones de Android Studio + SDK](https://www.youtube.com/watch?v=4pCBPbdHARE)
- **Android Studio:** Descarga e instala la última versión de Android Studio, el Entorno de Desarrollo Integrado (IDE) oficial para el desarrollo de Android.
- **Android SDK:** cuando se te solicite, instala el Kit de Desarrollo de Software (SDK) de Android. El SDK de Android es una colección de bibliotecas y herramientas de desarrollo de software que son esenciales para desarrollar aplicaciones de Android. Cada vez que Google lanza una nueva versión o actualización del software de Android, también se lanza un SDK correspondiente. También puedes instalar versiones más recientes siguiendo estos pasos:
- Abre Android Studio -> Haz clic en Herramientas -> Haz clic en SDK Manager e instala cualquier versión de tu elección.
- **Configuración de un Emulador:**
- Haz clic en Herramientas -> Administrador de dispositivos -> Añadir nuevo dispositivo -> crear dispositivo virtual
- Sigue las indicaciones.
- **Uso de un dispositivo físico:** Alternativamente, puedes usar un dispositivo Android físico para probar habilitando las Opciones de desarrollador y la Depuración USB.
- Haz clic en ajustes -> Acerca de ...
- Toca rápidamente el número de compilación siete veces seguidas (Aparecerá un mensaje emergente cuando estés cerca de habilitar el modo)
- Ve a las opciones de desarrollador y habilita la depuración USB.
Este es un excelente tutorial en vídeo de YouTube para instalar Android Studio: [Android Studio + Configuraciones SDK](https://www.youtube.com/watch?v=4pCBPbdHARE)
- **Android Studio:** Descarga e instala la última versión de Android Studio, el IDE oficial para el desarrollo de Android.
- **Android SDK:** Cuando se le solicite, instale el Kit de Desarrollo de Software (SDK) de Android. Puede instalar versiones más recientes siguiendo estos pasos:
- Abra Android Studio -> Haga clic en Herramientas -> SDK Manager e instale la versión deseada.
- **Configurar un emulador:**
- Haga clic en Herramientas -> Administrador de dispositivos -> Añadir nuevo dispositivo -> crear un dispositivo virtual.
- **Usar un dispositivo físico:** Active las opciones de desarrollador y la depuración USB.
## Primeros pasos
### Entendiendo la estructura del proyecto Android
- **Módulo de la aplicación:** El módulo principal que contiene el código fuente de su aplicación, los recursos y la configuración a nivel de aplicación, como los archivos AndroidManifest.xml y build.gradle. Cuando crea un nuevo proyecto, el módulo de aplicación predeterminado se llama “app”
- **Módulo de Biblioteca:** (Modo de Vista de Proyecto): Bibliotecas Externas Contiene código reutilizable que puede usarse como dependencia en otros módulos o proyectos de aplicación. Genera un archivo Android Archive (AAR)
- **Archivos del Proyecto:**
- build.gradle: El archivo de compilación raíz que contiene declaraciones de plugins y configuraciones comunes para todos los subproyectos.
- settings.gradle: Contiene información global de compilación, incluyendo nombres de proyectos y subproyectos a incluir.
- local.properties: Contiene propiedades relacionadas con la máquina local, como la ubicación del SDK de Android (excluido del control de código fuente), también puedes añadir tus claves API aquí.
- **Estructura de Directorios:**
- src/main/AndroidManifest.xml: Declara información esencial sobre tu aplicación, incluyendo componentes y permisos.
- src/main/java: Contiene el código fuente Java o Kotlin para tu aplicación.
- src/main/res: Contiene archivos de recursos como diseños, elementos dibujables y cadenas.
### Comprender la estructura del proyecto Android
- **Módulo de la aplicación:** El módulo principal que contiene el código fuente, los recursos y la configuración de la aplicación (AndroidManifest.xml, build.gradle).
- **Módulo de biblioteca:** (Modo de vista de proyecto) Contiene código reutilizable en forma de archivo AAR.
- **Archivos del proyecto:**
- build.gradle, settings.gradle, local.properties.
- **Estructura de carpetas:**
- src/main/AndroidManifest.xml
- src/main/java
- src/main/res
Para obtener información más detallada, consulte la documentación original.
### Comprender los componentes de Android
- **Actividades:** Las actividades representan una única pantalla con una interfaz de usuario. Son el punto de entrada para interactuar con el usuario. Los fragmentos tienen su propio ciclo de vida, que está estrechamente ligado al ciclo de vida de la actividad anfitriona. Esto permite un mejor control sobre los componentes de la interfaz de usuario y su gestión de estado.
### Comprendre les composants Android
- **Activités :** Les activités représentent une seule interface utilisateur et sont le point d'entrée pour interagir avec l'utilisateur. Les fragments ont leur propre cycle de vie, étroitement lié à celui de l'activité hôte, ce qui permet un meilleur control des composants UI et de leur gestion d'état.
Para más detalles, puedes consultar la documentación original o una guía sobre la arquitectura de Android.
public class MainActivity extends AppCompatActivity {
// Code for the activity
}
Fragmentos: Los fragmentos introducen modularidad en la interfaz de usuario de tu aplicación al permitirte dividir la interfaz en bloques discretos. Esto facilita la gestión y reutilización de componentes en diferentes partes de tu aplicación.
- **Fragmentos:** Los fragmentos introducen modularidad en la interfaz de usuario de tu aplicación al permitirte dividir la interfaz en bloques discretos. Esto facilita la gestión y reutilización de componentes en diferentes partes de tu aplicación.
- **Fragmentos:** Los fragmentos introducen modularidad en la interfaz de usuario de tu aplicación al permitirte dividir la interfaz en bloques distintos. Esto facilita la gestión y la reutilización de componentes en diferentes partes de la aplicación.
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new ExampleFragment());
transaction.addToBackStack(null);
transaction.commit();
- **Servicios:** Los servicios se ejecutan en segundo plano para realizar operaciones de larga duración o para realizar trabajo para procesos remotos. Ejemplo: Una aplicación de reproductor de música podría usar un servicio para reproducir música en segundo plano mientras el usuario está en una aplicación diferente
- **Servicios:** Los servicios se ejecutan en segundo plano para realizar operaciones de larga duración o para realizar trabajo para procesos remotos. Ejemplo: Una aplicación de reproductor de música puede usar un servicio para reproducir música en segundo plano mientras el usuario está en una aplicación diferente.
public class MusicService extends Service {
// Code for the service
}
- **Proveedores de contenido:** Los proveedores de contenido gestionan el acceso a un conjunto estructurado de datos. Encapsulan los datos y proporcionan mecanismos para definir la seguridad de los datos. En resumen, un Proveedor de Contenido es la forma en que Android permite que las aplicaciones compartan sus datos con otras aplicaciones. Ejemplo: Una aplicación que almacena contactos de usuario podría usar un proveedor de contenido para gestionar los datos de contacto.
public class ContactsProvider extends ContentProvider {
// Code for the provider
}
- **Receptores de difusión:** Los receptores de difusión responden a los anuncios de difusión de todo el sistema. Permiten que la aplicación escuche mensajes de difusión específicos del sistema o de otras aplicaciones. Ejemplo: Una aplicación podría usar un receptor de difusión para detectar cuando la batería del dispositivo está baja.
- **Broadcast Receivers :** Les broadcast receivers réagissent aux annonces système globales. Ils permettent à l'application d'écouter des messages spécifiques du système ou d'autres applications. Exemple : Une application peut utiliser un broadcast receiver pour détecter lorsque la batterie de l'appareil est faible.
batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));
- **Intents:** Los intents son objetos de mensajería utilizados para solicitar una acción de otro componente de la aplicación. Facilitan la comunicación entre diferentes componentes. Ejemplo: Un intent puede usarse para iniciar una nueva actividad o para enviar una difusión (broadcast).
Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);
- **Layouts:** Los layouts son contenedores que albergan y organizan vistas de una manera específica. Definen la estructura y el posicionamiento de los componentes de la interfaz de usuario. Layouts comunes:
- LinearLayout: Organiza las vistas en una sola fila o columna.
- RelativeLayout: Posiciona vistas una respecto a la otra o al contenedor padre.
- ConstraintLayout: Un diseño flexible que permite crear diseños complejos con una jerarquía de vistas plana.
- FrameLayout: Un diseño simple que apila vistas una encima de la otra.
- GridLayout: Organiza las vistas en formato de cuadrícula.
- Layout Editor: Utilice el Editor de Diseño en Android Studio para diseñar visualmente su interfaz de usuario. Arrastre y suelte componentes de la interfaz de usuario desde la paleta y configure sus propiedades utilizando el panel de atributos.
- **Vistas:** Las vistas son los bloques de construcción básicos de una interfaz de usuario de Android. Representan los componentes de la interfaz de usuario con los que los usuarios interactúan, como botones, campos de texto, imágenes y más1. Vistas comunes:
- TextView: Muestra texto al usuario.
- Button: Un botón en el que se puede hacer clic.
- ImageView: Muestra una imagen.
- EditText: Un campo de texto para la entrada del usuario.
- ListViews
- RecyclerView: Una vista flexible para mostrar grandes conjuntos de datos en una lista desplazable.
- ListViews y Adaptadores: ListViews son elementos de Android utilizados para mostrar elementos en una lista. Los adaptadores se utilizan para vincular una matriz de datos a un ListView. Es un adaptador simple que puede manejar una sola lista de elementos.
- **Layouts :** Les layouts sont des conteneurs qui organisent et disposent les vues dans une interface utilisateur.
- **LinearLayout**: Dispose les vues en une seule ligne ou colonne.
- **RelativeLayout**: Positionne les vues les unes par rapport aux autres ou au conteneur parent.
- **ConstraintLayout**: Permet des mises en page complexes.
- **FrameLayout**: Empile les vues les unes sur les autres.
- **GridLayout**: Organise les vues en grille.
- **Views :** Composants de base de l'interface utilisateur, comme
- **TextView :** Affiche du texte à l'utilisateur.
- **Button :** Un botón clicable.
- **ImageView :** Muestra una imagen.
- **EditText :** Un campo de texto para la entrada del usuario.
- **ListView :** Muestra una lista de elementos.
- **RecyclerView :** Vista flexible para mostrar grandes conjuntos de datos en una lista desplazable.
- **ListViews et Adapters :** Las ListViews se utilizan para mostrar listas, y los Adapters vinculan los datos a esa lista.
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataArray);
listView.setAdapter(adapter);
public class CustomAdapter extends BaseAdapter {
// Implementation of custom adapter
}
### Diseño básico de UI
- **XML Layouts: Designing with XML.**
#+begin_src xml
#+end_src
- **Introducción a los principios de Material Design:** [Material Design](https://m3.material.io/) es un sistema de diseño desarrollado por Google para crear experiencias digitales de alta calidad en diversas plataformas, incluyendo Android, iOS, Flutter y la web. Está inspirado en el mundo físico y sus texturas, incorporando principios del diseño de impresión para crear una experiencia de usuario cohesiva e inmersiva12. Usando Material Design
- Añadir componentes de Material a tu proyecto: Abre tu archivo build.gradle y añade la siguiente dependencia:
**Introduction aux principes du Material Design :** [Material Design](https://m3.material.io/) est un système de conception développé par Google pour créer des expériences numériques de haute qualité sur Android, iOS, Flutter et le web. Inspiré du monde physique et des textures, il incorpore des principes du design imprimé pour offrir une expérience utilisateur immersive.
- Ajouter des composants Material à votre projet : Ouvrez votre fichier`build.gradle`et ajoutez la dépendance suivante :
implementation 'com.google.android.material:material:1.4.0'
Actualiza el tema de tu aplicación:
