Depuis quelques semaines maintenant FrAndroid souhaite proposer un nouveau contenu dédié aux professionnels mais également à toute personne s’intéressant de près ou de loin au développement Android.

Nous proposons déjà chaque samedi, sauf cas exceptionnel, quelques liens de tutoriaux, articles ou outils intéressants liés au développement d’application Android.

Nous entamons avec cet article une nouvelle série : les tutoriaux de développement Android. Aujourd’hui, Internet regorge de tutoriaux plus ou moins bien fait, mais essentiellement en anglais. Les quelques tentatives francophones (comme nous l’avions fait sur notre wiki) sont parfois restées trop en surface. Afin de ne pas renouveler une expérience malheureuse, nous avons décider de partir d’un contenu existant de qualité. Nous avons eu l’autorisation de Lars Vogel de traduire ses tutoriaux dédiés à Android et reconnus pour leur qualité. Lars est l’auteur de nombreux tutoriaux et livres techniques (Java, Eclipse et Android) mais également formateur.

Nous espérons pouvoir respecter notre planning d’un tutorial toutes les deux semaines environ. C’est parti et bon courage :)

Ce premier chapitre qui sera découpé en quatre articles distincts, à paraître sur plusieurs semaines, est une présentation de l’écosystème Android, l’architecture, la mise en place de l’environnement, les grands concepts généraux du développement des applications Android.

REMARQUE : le travail de traduction n’est pas toujours aussi facile qu’on le pense. Malgré les soins que nous avons pu apporté à l’élaboration de cet article, soyez indulgents : contactez nous via notre formulaire afin de nous notifier d’éventuels soucis.

Cette suite d’article est sous licence CC et l’exploitation du contenu nous a été accordée malgré la présence de publicité sur notre site.

Traducteurs et correcteurs : Arnaud F. et Loic K.

1. Qu’est-ce qu’Android?

1.1 Système d’exploitation Android

Android est un système d’exploitation basé sur Linux pour lequel l’interface de programmation java est utilisé.  Le kit de développement logiciel Android (Android SDK) fournit tous les outils nécessaire pour développer des applications Android. Il inclut un compilateur, un deboggueur et un émulateur matériel qui disposera de sa propre machine virtuelle pour exécuter les programmes Android
Android est actuellement principalement développé par Google.
Android permet le traitement de tâche en arrière plan, fournit un librairie d’interface utilisateur très complète, supporte les graphiques 2-D et 3-D utilisant les libraries OpenGL,  accède au système de fichier et fournit une base de données embarquées SQLite.
Les applications Android contiennent différents composants et peuvent réutiliser ceux fournis par d’autres applications. Ceci  régit le concept de tache dans Android; une application peut réutiliser d’autres composants pour réaliser une tâche. Par exemple, vous pouvez écrire une application qui utilise l’application Android Galerie pour sélectionner une photo.

1.2. Google Play (Android Market)

Google propose le service « Google Play » dans lequel les développeurs peuvent offrir leurs applications Android aux utilisateurs Android. Les téléphones Google inclut l’application « Google Play » qui permet d’installer des applications.
Google Play offre également un service de mise à jour, c’est à dire que si un développeur met à jour une nouvelle version de son application sur Google Play; ce service notifiera les utilisateurs qu’une mise à jour est disponible pour cette application qu’ils pourront installer.
Google Play fut appeler « Android Market ».

 

1.3. Sécurité et permissions

Lors du déploiement sur un matériel Android, les système Android créera un unique utilisateur et un identifiant de groupe (Group ID) pour chaque application Android. Chaque fichier d’application est privé pour cet utilisateur généré, c’est à dire que les autres application ne pourront accéder à ces fichiers.

En plus, chaque application Android démarrera dans son propre processus.
Par conséquent, puisque le système repose sur le système d’exploitation Linux, chaque application Android est isolée des autres applications en fonctionnement.
Si les données doivent être partagées, l’application doit le faire explicitement, par la mise en place d’un Service ou d’un ContentProvider.
Android contient également un système de permission. Android prédéfini des permissions pour un certain nombre de tâche mais chaque application peut définir des permissions supplémentaires.
Une application Android déclare les permissions dont elle a besoin dans son fichier de configuration AndroidManifest.xml. Par exemple, une application doit déclarer qu’elle requiert un accès à Internet.
Les permissions sont de différents niveaux. Certaines permissions sont automatiquement accordées par le système Android, d’autres sont automatiquement rejetées.
Dans la plupart des cas, les demandes de permissions seront présentées à l’utilisateur avant l’installation de l’application. L’utilisateur a besoin de décider si ces permissions seront données à l’application.
Si l’utilisateur refuse une permission requises par l’application, cette application ne pourra être installée. La vérification des permission est selon réalisée durant l’installation, elles ne pourront être acceptées ou refusées après l’installation.
Bien que tous les utilisateurs fassent plus ou moins attention à ces demandes de permissions lors de l’installation des applications, certains d’entre eux, qui ne font pas réellement attention, écrivent alors de mauvais commentaires sur le Google Play.

2. Les composants Android

Ce chapitre fourni un courte description des composants les plus importants d’Android.

2.1. Activity

Une Activity représente la couche de présentation d’une application Android. Une description simplifiée est qu’une Activity représente un écran d’une application Android. Ceci est un peu incorrect puis les Activities peuvent être affichées comme des boites de dialogue ou en transparence.
Une application Android peut disposer de plusieurs Activities.

2.2. Views et ViewGroups

Les Views sont des composants (widgets) de l’interface utilisateur, par exemple des boutons ou des zones de saisie. La classe de base de toutes les Views est android.view.View. Les Views ont souvent des attributs qui peuvent être utiliser pour changer leur apparence ou leur comportement.
Un ViewGroup est en charge de positionner d’autres Views. Un ViewGroup est aussi appeler gestionnaire de composants. La classe de base du gestionnaire de composants est android.view.ViewGroups qui étend View.
Les ViewGroups peuvent être imbriqués pour créer des affichages complexes. Vous ne devrez pas imbriquer les ViewGroups trop profondémment au risque de d’avoir un impact sur les performances.

2.3. Intents

Les Intents sont des messages asynchrones qui permettent à une application de requêter une fonctionnalité d’un autre composant du système Android, par exemple des Services ou des Activities. Une application peut appeler directement un composant (Intents explicites) ou demander au système Android d’évaluer les composants enregistrés pour un type donné d’Intent (Intents implicites). Par exemple, l’application peut proposer le partage de données via un Intent et tous les composants qui fournissent la fonction de partage seront proposés à l’utilisateur pour que ce dernier puisse sélectionner celui qu’il désire. Les applications s’enregistrent d’elles même pour un Intent via un IntentFilter.
Les Intents permettront de combiner des composants faiblement couplés pour réaliser certaines tâches.

2.4. Services

Les Services exécute des tâches en arrière plan sans fournir d’interface utilisateur. Ils peuvent notifier l’utilisateur via le framework de notification d’Android.

2.5. ContentProvider

Le ContentProvider fournit une interface aux données d’application. Via un ContentProvider votre application peut partager des données avec d’autres applications. Android contient un système de base de données SQLite fréquemment utilisé conjoinement à un ContentProvider. SQLite enregistre les données, qui pourront être accédées par n ContentProvider.