Objectifs
Cette formation Android embarqué vous permettra de :
- Faire comprendre l'architecture bas niveau d'Android
- Compiler et « booter » un système Android
- Savoir porter Android vers un nouveau matériel
- Savoir Développer un vrai système Android (accès au hardware spécifique via les applications Android, personnalisation du système de fichier, débogage)
A qui s'adresse cette formation
Public :
Cette Formation Android Embarqué est destiné aux développeurs système et aux chefs de projet.
Prérequis :
Avoir une bonne connaissance des commandes Unix ou Linux.
Avoir une bonne connaissance du C et des bases en Java
Contenu du cours
Compilation et démarrage d'Android
Introduction à AndroidHistorique: les différentes versions
Les différents acteurs et leur implicationDétails sur l'architecture d'AndroidMise en place de l’environnement
Installation des outils nécessaires à la compilation
Récupération du code source (si la bande passante est insuffisante, un répertoire .repo prêt à l'emploi sera fourni)
Prise en main des outils spécifiques d'Android
Première compilation – Code source et compilation
Compilation du premier système de fichiers racine pour l'émulateur
L'utilisation des outils repo, git et gerrit pour accéder aux sources
Comment s'y retrouver dans le code de base
Comment compiler Android (outils, cible, etc …)
Le noyau LinuxRôle et architecture générale du noyau Linux
Propriétés du noyau Linux avec focus sur les caractéristiques utiles aux systèmes embarqués
L'interface utilisateur du noyau (Kernel user interface)
Récupération des sources
Comprendre les différentes versions de noyaux de Linux
Application de la commande patch
Compilation et démarrage d'un noyau Android
Utilisation de l'émulateur d'Android
Extraire les patches du noyau Android
Compilation et boot d'un noyau Android
Portage d'Android vers de nouvelle cartes
Modification du noyau Linux pour Android
Les changements majeurs ajoutés par Google
Les fonctionnalités qui ont été ajouté au noyau
Les changements sur les drivers
Le support d'une nouvelle carte
Les étapes nécessaires pour porter Android sur une carte personnalisée
Démarrage d'Android sur une nouvelle carte
Résolution des différents problèmes courants lors de cette opération
Les différents ajustements nécessaires pour obtenir un système opérationnel (affichage correct, écran tactile, boutons, molettes, etc)
Android Bootloaders (chargeur de démarrage)
Définition d'un bootloader
Exemples de bootloader
Les spécifications fastboot d'Android
Le développement de drivers pour Android
Développement et débogage avec ADB (Android Debug Bridge)
Utiliser ADB pour déboguer
Présentation et installationLes options les plus intéressantes
Utilisation d’ADB
Les commandes disponibles: transferts de fichiers, installation de paquetage, exécution de commandes distantes, accès aux logs , …
Ajustements d'ADB pour une carte personnalisée
Apprendre à lire les journaux système
L'accès au Shell de la carte
Envoyer/recevoir des fichiers
Organisation du système de fichiers d'Android
Déterminer où les différents composantes d'un logiciel sont installées et montées et pourquoi.
La structure du fichier .initrcLa construction d'un système Android
Les concepts introduits dans la construction d'un système
L'architecture des MakefilesVariables et fonctions disponibles
Les différentes étapes de la compilation
Ajouter un nouveau périphérique à la construction du système
Personnalisation du système
Ajouter un nouveau device à la construction du système
Personnalisation de l'information "A Propos", Build ID,
Les écrans d'accueil et de boot du système , …
Ajout d'une bibliothèque native au système
Les spécifiés du système de compilation et de la bibliothèque C (Bionic)
Création d’une bibliothèque externe pour contrôler un lanceur de missile USB
Ajout de cette bibliothèque au système par défaut d'Android
La couche native d'Android
Les daemons de contrôle de la radio , le stockage externe, le lancement d'applications
Les différents composants impliqués dans le runtime Android, de la machine virtuelle au framework des medias : StageFright, Flingers, Dalvik, …
Comment l'abstraction matérielle est implémentée sous Android
Les applications et le Framework Android
Présentation des services, fournisseurs de contenu et applications disponibles en standard
Structure d'un service, d'un fournisseur de contenu
Comment accéder à une bibliothèque native à partir d'une application via l'API JNI (Java Native Interface)
Développement de l'interface Java d'une bibliothèque nativeImplémentation de l'interface Java pour utiliser la librairie intégrée précédemment
Développement d'applications Android
Le cycle de vie d'une application
Les différents composants d'une application
Comment accéder aux services
Comment utiliser, accéder et administrer les ressources
Comment les paquetages apk sont construits et ce qu'ils contiennent
Ecriture d'une application avec le SDK
Apprendre à écrire et distribuer une application utilisant le SDK d'Android et son API
Ecriture d'une application Android contrôlant le lanceur de requêtes USB
Apprendre à accéder aux fournisseurs de contenus d'Android
Conseils et ressources
L'accès à la communauté, les ressources de documentation utiles, les blogs utiles, etc