# 2021-02-17 | Android | Introduction ###### tags: `kotlin` `android` `gobelins` # Android * Système d'exploitation **open source**, public * Utilisé par plusieurs fabriquants (Samsung, Huawei, Google, Motorola...) * Plusieurs **gammes** possibles (50€ -> 2000€) # Playstore * Distribuer les applications android * Utilisé par **google** pour maintenir les app * Avoir un compte pour publier des applications (25$) -> Licence à vie pour publier des applications en nombre illimité * Mettre à jour les applications des utilisateurs * Possibilité de payer des couts supplémentaire pour le marketing # Android SDK * Kit de développement pour faciliter le dev * Librairie haut/bas niveau * Différents outils pour faciliter le dev (émulateurs, logcat...) * Exemples de code (Nouvelles fonctionnalités...) # Android Studio * Basé sur IntelIJ * IDE officiel de Android * Configuration prête (SDK, outils, émulateurs, compilation, debugage, publication...) # Architecture 1. Basé sur **Linux** (kernel, noyau linux) -> gérer le hardware/driver du téléphone (écran, caméra, BLE, mémoire) 2. **Librairies bas niveau** (C, C++) -> base de données 3. **Librairies hauts niveau** (Java, Kotlin) -> Faire les actions visibles sur le téléphone (classes et méthode déjà créées) > [color=#E35DDA]Les lib de bas niveau peuvent être utilisés pour le développement avec le hardware > [color=#E35DDA]Les lib de hauts niveau proposent des méthodes que l'on peut utiliser aisément (qui utilisent les lib bas niveau). Elle permettent de gérer les interfaces, d'accéder à la position de l'utilisateur (sans avoir à tout redévelopper) Permet de récupérer des données avec une simple méthode déjà développée # Applications * **Système** : fourni de base par le système d'exploitataion (appel, géolocalisation, contact, sms...) (via Google ou surcouche fabriquant) * **Utilisateurs** : proposer des services supplémentaires # Environnement d'exécution (ou Sandbox) * Les applications sont isolées dans leur propre environnement * Garantie la sécurité des utilisateurs et du système d'exploitation * Une app = des ressources dédiées (pas accessibles pas une autre application) * Gestion des données d'une application * Chaque application va ouvrir une nouvelle session linux # Contraintes du dév mobile * Plusieurs **résolutions d'écrans** * **Ressources limités** (mémoire vive/morte, batterie, processeur...) * **Sécurité** (données des utilisateurs) * Evolution (gérer la **rétro compatibilité** des versions, des configurations) -> 1 version par an # Développement - Prérequis * POO * Java et Kotlin * XML # Déploiement d'une application * Nom du package unique (pour créer et mettre à jour) * Certificat unique pour valider la mise à jour et certifier que l'on en est bien l'auteur -> Clé à protéger et à conserver * Version minimum du téléphone -> couvrir un maximum de téléphones (donc prendre une petite version)