Android embarqué

Déployer Android sur une plateforme matérielle spécifique
L'utilisation de l'OS Android s'étend progressivement à tous les secteurs d'activité directement concernés par les systèmes multimédia, comme l'automobile ou l'aéronautique. A l'instar de GNU/Linux embarqué, l'utilisation d'Android sur une plate forme industrielle nécessite une adaptation et la compréhension du fonctionnement des couches système d'Android (noyau Linux, HAL, NDK).

Objectif

Le but de cette formation est de permettre aux ingénieurs de développement embarqué ou aux chefs de projets techniques d'acquérir les compétences nécessaires pour adapter ou étendre Android dans le but : 

  • D'utiliser des périphériques industriels non supportés par défaut (développement d'un pilote et d'une bibliothèque HAL).
    La formation évoquera l'utilisation de ces composants depuis une application Java Android via JNI (Java Native Interface),
  • D'adapter Android à une plate-forme matérielle.

La formation abordera les points suivants :

  • Décrire le fonctionnement interne du système Android (AOSP)
  • Expliciter les méthodes de développement pour les couches basses du systèmes
  • Décrire l'ajout de périphériques matériels au niveau HAL (Hardware Abstraction Layer) et noyau Linux
  • Expliciter la personnalisation d'un système et l'adaptation à une nouvelle plate-forme
  • Décrire l'ajout de « service » Android simple
  • Expliciter l'extension du framework et l'ajout de « manager » (cas d'un nouveau support matériel non prévu par Android)

Les stagiaires utiliseront :

  • Leurs PC (Windows ou Linux) ou MacBook (Mac OS X 10.5 ou plus) puisque l'environnement de développement est intégré à une image VirtualBox ;
  • La carte Beaglebone Black (BBB) fournie par Open Wide ;
  • L'émulateur Android avec cible « goldfish » (ARM).

L'environnement de développement est la distribution Ubuntu 12.04.3 LTS en natif ou VM. 

Public visé

Cette formation s'adresse aux ingénieurs de développement embarqué et aux chefs de projets techniques.

Pré-requis

Les connaissances nécessaires pour la participation au stage sont les suivantes:

  • Connaissance utilisateur Linux ou à défaut UNIX
  • Notions de langage C
  • Notions de manipulation de la ligne de commande (shell)

Le stagiaire utilisera son PC portable (ou un MacBook) pour la formation. La machine devra satisfaire aux pré-requis suivants :

  • Système d'exploitation Windows (XP ou supérieur), Linux ou bien MacBook sous Mac OS X 10.5 ou supérieur
  • Droits administrateur sur le système Windows ou MacOS X afin d'ajouter l'image VirtualBox et le pilote du câble USB/Série
  • La machine devra disposer AU MINIMUM d'un CPU i5, de 4 Go de mémoire vive et de 70 Go d'espace libre sur le disque

Remarque :  Ces pré requis sont INDISPENSABLES pour la participation à la formation, AUCUNE autre configuration matérielle n'est utilisable.

Programme

La formation s'effectue sur 3 journées de 7 h, soit 21 h de cours. Les thèmes abordés sont les suivants.

Introduction à Android

  • Fonctionnalités
  • Historique
  • Parts de marché
  • Principes des applications
  • Projets « équivalents » (sur base Linux)
  • Android et l'industrie

AOSP

  • Accès aux sources
  • Licences
  • Compilation AOSP pour la cible « générique » (émulateur)
  • Utilisation de repo et git
  • Description des répertoires
  • Bootloader et Fastboot
  • Compilation AOSP pour BeagleBone Black

Architecture Android

  • Schéma d'architecture générale
  • Le « framework » Android
  • Bibliothèques
  • HAL
  • Le « runtime » Android
  • Organisation du système de fichiers
  • Les « propriétés » Android (properties)
  • Procédure de démarrage
  • Présentation de quelques « services »

Noyau Linux sous Android

  • Introduction, espaces noyau et utilisateur
  • Histoire, liens avec le projet GNU
  • Principaux concepts
  • Nommage des versions
  • Compilation d'un noyau Linux/Android
  • Description des « Androidism »

Développement système Android

  • SDK (Android Studio)
  • Structure d'une application (activité, fichier « manifest »)
  • Package Explorer
  • NDK
  • ADB
  • Compilation de code POSIX
  • Mise au point avec GDB
  • Pilotes de périphériques
  • JNI

Adaptation et customisation

  • Ajout de Busybox
  • Modification de l'image de fond (splash)
  • Modification de l'animation de démarrage
  • Ajout/adaptation d'une plate-forme
  • Ajout d'application
  • Ajout de service simple

Extension de l'API

  • Support matériel GNU/Linux vs Android
  • Exemple concret sur BBB, capteur de température
  • Module noyau
  • Bibliothèque HAL
  • Interface JNI
  • Service Java et Manager
  • Test du nouveau service "Temper"
  • Modification du SDK
  • Exemple d'application