Android OS
Qui a besoin de développement personnalisé d’Android OS ?
“Android est le système d’exploitation de mon smartphone.” (Ou de ma montre, voire du tableau de bord de ma voiture.)
Oui, à moins que vous n’ayez un iPhone. Pourtant, de nombreux autres produits embarquant un logiciel tournent sous Android. Souvent, il s’agit de dispositifs non destinés au grand public, et l’utilisation d’Android y est peu visible : bornes interactives, objets connectés de santé, etc. Plutôt que d’afficher un écran d’accueil proposant la sélection habituelle d’applications, ces appareils sont configurés pour démarrer Android et lancer directement une application dédiée. Cette application coexiste généralement avec des services système Android spécialement développés pour l’appareil, afin d’exécuter des actions bas niveau nécessitant des autorisations système.
Pour utiliser Android de cette façon, les développeurs doivent le personnaliser pour qu’il fonctionne sur du matériel sur-mesure. Ce n’est pas le type de développement d’application auquel on pense habituellement quand on évoque Android. Porter et maintenir Android sur de nouveaux matériels requiert des compétences en développement du système d’exploitation Android, une expertise beaucoup plus rare.
Oui, à moins que vous n’ayez un iPhone. Pourtant, de nombreux autres produits embarquant un logiciel tournent sous Android. Souvent, il s’agit de dispositifs non destinés au grand public, et l’utilisation d’Android y est peu visible : bornes interactives, objets connectés de santé, etc. Plutôt que d’afficher un écran d’accueil proposant la sélection habituelle d’applications, ces appareils sont configurés pour démarrer Android et lancer directement une application dédiée. Cette application coexiste généralement avec des services système Android spécialement développés pour l’appareil, afin d’exécuter des actions bas niveau nécessitant des autorisations système.
Pour utiliser Android de cette façon, les développeurs doivent le personnaliser pour qu’il fonctionne sur du matériel sur-mesure. Ce n’est pas le type de développement d’application auquel on pense habituellement quand on évoque Android. Porter et maintenir Android sur de nouveaux matériels requiert des compétences en développement du système d’exploitation Android, une expertise beaucoup plus rare.
Les principaux défis du développement personnalisé d’Android OS

Restrictions liées à la sécurité
L’utilisation d’Android sur un appareil à vocation spécifique implique un équilibre délicat entre sécurité et fonctionnalités. Certaines fonctionnalités nécessaires à l’application principale doivent souvent être isolées dans un service Android distinct, capable de s’exécuter avec des privilèges système. Des politiques SELinux personnalisées sont ensuite généralement requises pour autoriser ce service à accéder aux fichiers ou aux nœuds de périphérique nécessaires au contrôle de matériels inhabituels.

Personnalisation plus complexe
Pour un appareil dédié, la collection de sources AOSP (Android Open Source Project) comprend de nombreuses applications et services superflus. Il est préférable de supprimer une grande partie de ces composants du build de l’OS pour ce type de configuration matérielle. L’AOSP est une base de code très vaste, composée de centaines de dépôts Git : les modifications nécessaires aux HAL et aux frameworks Java peuvent s’étendre sur l’ensemble du code, et chaque changement doit ensuite être hébergé localement dans des forks des dépôts affectés.

Performance
En raison de l’étendue des fonctionnalités prêtes à l’emploi d’Android, de nombreuses couches et services tournent en arrière-plan, ce qui peut ralentir l’appareil. Il est possible d’optimiser chaque composant pour obtenir de hautes performances ; toutefois, cela demande une solide expérience pour savoir précisément quoi modifier et où, compte tenu de l’ampleur de la base de code.
3 éléments clés pour votre développement personnalisé d’Android OS
Un BSP Android
La solution la plus simple consiste à disposer du code source d’Android déjà configuré pour fonctionner sur votre matériel personnalisé, ou sur une plateforme aussi proche que possible. C’est là qu’un Board Support Package (BSP) Android prend tout son sens. Witekio, par exemple, possède une grande expérience dans la fourniture de BSP Android pour des fabricants de silicium et de cartes, ainsi que dans la personnalisation de BSP pour les concepteurs d’appareils.
Une liste de prérequis pour le portage Android
Il est essentiel d’identifier à l’avance toutes les fonctionnalités fournies par Android que votre appareil doit supporter, et de planifier ce travail en conséquence. C’est une bonne pratique dans tout projet de développement, mais, en raison de l’ampleur et de la complexité d’Android, il est d’autant plus important de définir précisément l’étendue du projet pour éviter tout retard en fin de développement.
Expérience
Comme mentionné précédemment, personnaliser efficacement le système d’exploitation Android est une compétence bien plus rare que le simple développement d’applications. Il faut maîtriser les nombreuses couches intermédiaires du framework Java, les bibliothèques HAL de bas niveau et les mécanismes IPC propres à Android pour les appels inter-processus, la création de politiques SELinux et la modification des paramètres par défaut dans les fichiers de configuration XML de l’appareil.
SUCCESS STORY
Code Aware Translator said: Datalogic, conçoit une nouvelle solution Android de capture de données
Le développement du DL-Axist™ de Datalogic, un PDA robuste doté d’une technologie avancée de collecte de données par code-barres et d’imagerie, a présenté plusieurs défis : portage transparent d’Android KitKat, intégration matériel sous Linux, et amélioration de la fiabilité produit ainsi que de la gestion de l’alimentation. Pour y répondre, Datalogic a recherché un partenaire disposant d’une expertise approfondie en développement Android et Linux, ainsi que d’une expérience des architectures Texas Instruments OMAP™. Witekio a fourni une solution complète : un BSP Android KitKat personnalisé et fiable, l’intégration du matériel requis sous Linux, le support des contrôleurs PMIC et gas gauge, l’amélioration de la couche d’abstraction matérielle Android (HAL) et l’optimisation de la gestion de l’alimentation. Cette collaboration a permis au DL-Axist de satisfaire ses exigences techniques tout en renforçant ses performances et sa fiabilité.
Meilleures pratiques du développement personnalisé d’Android OS sur plateformes embarquées
Restez à jour
Pour tirer pleinement parti des bénéfices de sécurité d’Android, il est crucial de migrer vers la dernière version majeure dès que possible. Ceci est facilité en planifiant soigneusement les modifications nécessaires pour votre matériel et en les concentrant, autant que faire se peut, dans le dépôt de configuration de l’appareil. Moins vous aurez à modifier de dépôts dans l’AOSP, moins vous devrez forker et héberger vous-mêmes. De plus, un nombre réduit de dépôts modifiés minimise les risques de problèmes de compatibilité lors de la migration vers la prochaine version d’Android.
Activez SELinux dès le début
Lors du portage de l’OS et de l’ajout de nouvelles fonctionnalités, il peut être tentant de désactiver SELinux pour éviter les blocages dus à des violations de politique. En revanche, laisser SELinux désactivé entraîne un chantier considérable en fin de projet pour corriger toutes les règles et pouvoir le réactiver tout en conservant les fonctionnalités ajoutées. Cela peut provoquer d’importants retards, voire la décision de publier un système non sécurisé. Veillez donc à inclure cette exigence dans vos spécifications et à la planifier dès le démarrage du projet pour éviter tout glissement.
Utilisez les API existantes et l’infrastructure HAL dans la mesure du possible
Lors de la création d’une application pour un appareil sur mesure, il peut être tentant de « contourner » les API fournies par Android pour contrôler directement un aspect spécifique — par exemple, ouvrir un fichier ou un nœud de périphérique. Il est toutefois conseillé d’éviter cette approche et, autant que possible, d’ajouter le support requis via les interfaces HAL existantes et les API officielles. D’une part, il devient de plus en plus difficile de recourir à de tels raccourcis, les restrictions de sécurité se renforçant sur les versions récentes d’Android. D’autre part, votre ou vos applications seront plus portables, offrant une plateforme plus propre et un chemin de mise à niveau plus simple vers les prochaines versions d’Android (à condition de suivre la première recommandation mentionnée ci-dessus).
Pourquoi exécuter Android sur des appareils embarqués ?
Facilité de développement d’applications
Une fois Android opérationnel sur votre appareil, les applications peuvent y être développées de la manière habituelle, en s’appuyant sur des API et des couches d’abstraction claires et bien documentées, ce qui permet de les exécuter sur tout appareil Android avec un minimum de modifications. En pratique, l’application de l’appareil est souvent prise en charge par une « équipe App » distincte, qui peut la développer et la tester en parallèle sur un appareil Android grand public existant, en attendant que le portage d’Android sur le matériel personnalisé soit prêt. Par ailleurs, les développeurs spécialisés dans le développement d’applications Android sont beaucoup plus faciles à recruter. Also, developers with experience in Android app development are much easier to find and hire.
Support prêt à l’emploi pour les fonctionnalités courantes des appareils embarqués
Les appareils modernes requièrent souvent un ensemble de fonctionnalités de base similaires, telles que :
Sécurité – Les anciennes versions d’Android (comme beaucoup de systèmes d’exploitation) contiennent des vulnérabilités identifiées au fil du temps. Mais dans l’ensemble, Android offre par défaut un bon niveau de sécurité :
Mises à jour over-the-air (OTA) – un logiciel intégré permet de récupérer et d’authentifier de façon sécurisée les paquets de mise à jour, puis de les installer. De plus, une organisation de partitions A:B est configurée par défaut : chaque partition en lecture seule dispose de deux copies, et l’installateur standard ne met à jour que la copie inactive, offrant une protection par retour arrière (rollback) en cas de mise à jour défaillante.
Gestion réseau – permet à l’utilisateur ou au code applicatif de définir la configuration des adresses pour les interfaces Wi-Fi, cellulaires et Ethernet de l’appareil. Comprend également un interrupteur RF pour le « mode avion ».
Gestion de la charge et de la batterie – souvent négligée lors du développement produit, mais pouvant causer des problèmes si elle n’est pas correctement traitée. Android intègre nativement de nombreuses fonctionnalités de gestion de l’alimentation et de la batterie.
Il reste certes des personnalisations à réaliser pour chaque système, mais la présence de toutes ces fonctionnalités constitue un gain de temps majeur. Les développeurs qui utilisent d’autres systèmes d’exploitation passent souvent du temps à rechercher des solutions à ces problématiques ou, pire encore, réinventent la roue en écrivant du code de zéro pour des fonctionnalités que tout appareil IoT doit avoir, sans réelle valeur ajoutée, si ce n’est de rester sécurisé, connecté et alimenté.
Sécurité – Les anciennes versions d’Android (comme beaucoup de systèmes d’exploitation) contiennent des vulnérabilités identifiées au fil du temps. Mais dans l’ensemble, Android offre par défaut un bon niveau de sécurité :
- SELinux pour des contrôles d’accès obligatoires sur tous les fichiers et ressources
- Applications isolées dans des sandbox distincts, avec des UID et GID séparés pour appliquer les politiques d’accès
- Support d’un Trusted Execution Environment (TEE) basé sur Trusty OS, avec des API cohérentes pour plusieurs cas d’usage courants
- Démarrage sécurisé – prévention de l’exécution de code non officiel ou malveillant grâce à Android Verified Boot (AVB), un cadre générique qui utilise les mécanismes de secure boot des SoC pris en charge par Android.
Mises à jour over-the-air (OTA) – un logiciel intégré permet de récupérer et d’authentifier de façon sécurisée les paquets de mise à jour, puis de les installer. De plus, une organisation de partitions A:B est configurée par défaut : chaque partition en lecture seule dispose de deux copies, et l’installateur standard ne met à jour que la copie inactive, offrant une protection par retour arrière (rollback) en cas de mise à jour défaillante.
Gestion réseau – permet à l’utilisateur ou au code applicatif de définir la configuration des adresses pour les interfaces Wi-Fi, cellulaires et Ethernet de l’appareil. Comprend également un interrupteur RF pour le « mode avion ».
Gestion de la charge et de la batterie – souvent négligée lors du développement produit, mais pouvant causer des problèmes si elle n’est pas correctement traitée. Android intègre nativement de nombreuses fonctionnalités de gestion de l’alimentation et de la batterie.
Il reste certes des personnalisations à réaliser pour chaque système, mais la présence de toutes ces fonctionnalités constitue un gain de temps majeur. Les développeurs qui utilisent d’autres systèmes d’exploitation passent souvent du temps à rechercher des solutions à ces problématiques ou, pire encore, réinventent la roue en écrivant du code de zéro pour des fonctionnalités que tout appareil IoT doit avoir, sans réelle valeur ajoutée, si ce n’est de rester sécurisé, connecté et alimenté.
Witekio peut accompagner votre développement Android OS personnalisé
Witekio peut accompagner votre développement personnalisé d’Android OS
Witekio peut prendre en charge l’ensemble des enjeux décrits ci-dessus, en vous fournissant un build Android opérationnel intégrant toutes les fonctionnalités requises par votre matériel. Vous évitez ainsi de devoir acquérir en interne ce savoir-faire spécialisé, et votre équipe peut se concentrer sur la valeur cœur de votre produit.
Au fil du temps, nous avons noué des partenariats solides avec les principaux fournisseurs de microprocesseurs, microcontrôleurs et cartes de référence sur lesquels nos clients déploient leur Android OS. Des leaders du marché comme Texas Instruments ont fait appel à Witekio pour le développement des BSP Android KitKat et Android Marshmallow destinés à leurs plateformes Sitara. De nombreuses entreprises ont également lancé des produits innovants en s’appuyant sur nos BSP pour les processeurs TI AM335x, TI AL437x et TI AM57x, disponibles en téléchargement libre sur le site de Witekio.
Witekio peut prendre en charge l’ensemble des enjeux décrits ci-dessus, en vous fournissant un build Android opérationnel intégrant toutes les fonctionnalités requises par votre matériel. Vous évitez ainsi de devoir acquérir en interne ce savoir-faire spécialisé, et votre équipe peut se concentrer sur la valeur cœur de votre produit.
Au fil du temps, nous avons noué des partenariats solides avec les principaux fournisseurs de microprocesseurs, microcontrôleurs et cartes de référence sur lesquels nos clients déploient leur Android OS. Des leaders du marché comme Texas Instruments ont fait appel à Witekio pour le développement des BSP Android KitKat et Android Marshmallow destinés à leurs plateformes Sitara. De nombreuses entreprises ont également lancé des produits innovants en s’appuyant sur nos BSP pour les processeurs TI AM335x, TI AL437x et TI AM57x, disponibles en téléchargement libre sur le site de Witekio.
Notre expertise en logiciel embarqué

Votre partenaire de confiance en logiciel embarqué, application et connectivité
4 Pays
4 Pays
Certifies ISO 27001
Certifies ISO 27001
