Avec les Android Extensions, Google pourrait réduire la fragmentation de son système
Enfin ?
Le 11 novembre 2016 à 10h00
5 min
Société numérique
Société
Le Compatibility Definition Document (CDD), qui explique aux constructeurs comment s’assurer que leurs appareils sont compatibles avec Android, vient d’être mis à jour. On y trouve une curieuse mention des « Android Extensions », qui laissent présager l’arrivée de bibliothèques partagées.
Avant de plonger dans les Android Extensions, il est nécessaire de rappeler certains points, liés de près à la fragmentation du système. Celle-ci n’est en effet pas si simple.
Android propose tout un lot de technologies fournies sous la forme d’API (Application Programming Interface), qui permettent aux développeurs de faire appel à ses fonctionnalités. Ces API sont réparties en deux grands lots, les unes dans la base du système, les autres dans les Services Google Play.
Les deux grands lots d'API dans Android
La base d’Android, c’est AOSP (Android Open Source Project), le socle open source du projet. Les API qui s’y trouvent se réfèrent toutes à des fonctions centrales, comme la gestion des fichiers, le démarrage, le noyau Linux, les paramètres, tout ce qui touche à l’interface, le contrôle du volume, l’écran verrouillé et ainsi de suite.
De leur côté, les Services Google Play se concentrent tout ce qui concerne les applications et les technologies de type Auto, Pay, les jeux, la gestion des DRM, la synchronisation, etc.
La différence entre les deux ensembles est importante car elle intervient dans la compréhension de la fragmentation d’Android, un sujet récurrent. Elle est évidente quand on inspecte les parts de marché de chaque version du système, mais elle ne se manifeste pas forcément dans le support des applications.
Pourquoi ? Parce que les Services Google Play sont mis à jour indépendamment du système, et cela passe par une nouvelle version diffusée sur le Play Store. Pour qu’une API d’AOSP évolue, il faut une mise à jour du système.
Le blocage des mises à jour par les constructeurs
La firme est bien placée pour savoir que diffuser les mises à jour d’Android est complexe, ce qui provoque un ralentissement de l’utilisation des API liées à AOSP. L’écrasante majorité des appareils vendus provient de constructeurs tiers, dont Google ne contrôle pas le cycle de mise à jour.
Même s’ils bénéficient d’un support garanti de 18 mois pour les mises à jour, la période est vite écoulée. Sans parler de tous les vieux appareils restent sur d’anciennes moutures, avec les énormes risques de sécurité que cela suppose.
Pour Google, la situation est problématique. Non seulement les critiques sur la sécurité sont nombreuses et régulières, mais les développeurs ne peuvent jamais profiter complètement des nouveautés puisqu’une immense majorité des appareils ne fonctionne pas sur les dernières révisions d’Android.
Une situation très différente par exemple de ce que connait Apple, puisque la même version d’iOS est diffusée simultanément à l’ensemble des appareils compatibles. Mais alors, comment sortir de cette impasse ?
Vers des API système déportées ?
Dans la nouvelle version du CDD (pour Android 7.0 Nougat), Google parle des Android Extensions. Il est question d’éléments que les constructeurs auraient l’obligation de charger, quelle que soit l’ampleur des modifications qu’ils apporteront au système.
En théorie, notamment selon nos confrères d’Ars Technica, cela permettrait notamment de déporter vers les Extensions tout un ensemble de briques du système, qui pourraient alors être mise à jour sur le même modèle que les Services Google Play.
En somme, diminuer le nombre d’éléments dont les constructeurs doivent s’occuper. Le texte indique clairement que ces Extensions seraient obligatoires, signifiant probablement au passage qu’elles ne peuvent pas être modifiées. Ars Technica précise qu’actuellement, ces Extensions ne contiennent que deux fichiers, pratiquement vides : GoogleExtShared.apk et GoogleExtServices.apk.
Pourquoi alors les rendre obligatoires ? Nos confrères suggèrent qu’ils seraient alors installés et donc pris en charge par le Play Store… qui pourrait les mettre à jour automatiquement.
GoogleExtServices serait ainsi l’équivalent des Services Google Play d’AOSP : un ensemble grandissant de briques que les constructeurs ne peuvent pas bloquer. Les mises à jour seraient plus régulières, permettant aux développeurs de profiter beaucoup plus rapidement des nouvelles API. GoogleExtShared est présenté comme une bibliothèque partagée, ce qui reviendrait à déporter du système de base des morceaux de code auxquels les applications doivent souvent faire face.
Il faudra sans doute attendre encore avant d’en savoir davantage, et de confirmer une telle possibilité, car Google n’a donné pour l’instant aucune explication complémentaire sur le sujet.
D’autres points importants dans le CDD
Même si les Extensions ont largement attiré l’attention des médias, d’autres éléments importants figurent dans la nouvelle version du CDD. Par exemple, il est désormais « fortement recommandé » aux constructeurs de ne pas s’appuyer sur des technologies propriétaires pour les recharges rapides sur les appareils mobiles.
Autre point significatif, l’obligation pour les constructeurs qui souhaitent utiliser Nougat de proposer un mode multifenêtre si la taille de l’écran le permet. Pour tous les autres, le mode peut être refusé lors de la phase d’implémentation.
Enfin, tous les appareils doivent être munis de capacité de blocage des appels. Même si ce type de fonction se retrouve presque partout, Google préfère manifestement s’assurer de sa présence.
Avec les Android Extensions, Google pourrait réduire la fragmentation de son système
-
Les deux grands lots d'API dans Android
-
Le blocage des mises à jour par les constructeurs
-
Vers des API système déportées ?
-
D’autres points importants dans le CDD
Commentaires (44)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 11/11/2016 à 10h08
C’est très bon comme choix, et je suppose qu’étant donné que même les API Google sont déportés dans un .apk, ça permettra de s’en débarrasser encore plus facilement.
Le 11/11/2016 à 10h10
Très bon principe. Ca complète le nombre croissants d’applis du système qui se retrouvent sur le Play Store.
Cela étant dit avec les bibliothèques AppCompat, il y a quand même de moins en moins de difficultés à faire une appli pour toutes les versions qui conserve un aspect et des fonctionnalités similaires.
Le 11/11/2016 à 10h11
C’est une très bon choix pour l’adoption de versions récentes des APIs. Si pour toi ça signifie la possibilité de s’en débarrasser, tu vas te retrouver avec un système bien peu fonctionnel.
Le 11/11/2016 à 10h20
Le 11/11/2016 à 10h23
Mais les android extensions sont des APIs du système Android, pas des machins proprios de Google.
Autrement dit, autant on peut imaginer un système qui n’utilise pas les Google services (c’est tout à fait de développer une appli sans), autant on ne peut pas se passer du framework de base d’Android.
EDIT : si tu veux comprendre ce que je dis, supprime un des fichiers .apk dans /system/framework/ " />
Le 11/11/2016 à 11h25
Ca veut aussi dire adieu aux optimisations de perfs pour un apparel précis sur tout ce qui se retrouverait dans ce machin à moins de rompre l’accès à la mise à jours auto pour les composants en question ?
Autant pousser un dpkg/yum pour gérer les bins critiques à ce niveau non ? ça ne m’amuse pas spécialement d’avoir des paquets qui prennent deux fois du stockage.
Le 11/11/2016 à 11h39
C’est pas encore la solution. La solution tout le monde la connait depuis le départ il suffit de l’appliquer : plutôt que de fournir un firmware par téléphone fournir à la place un programme d’installation d’OS comme Windows ou Linux sur PC qui s’installe sur n’importe quel téléphone ou tablette.
Le 11/11/2016 à 11h40
De ce que j’ai compris il demandent juste d’obliger le fonctionnement des api incluent dans cet androidExtension.
S’il veux faire à coté son truc proprio et optimisé pour ces applications, pas de problèmes.
En revanche il faut aussi qu’il supporte cela pour, par exemple, les applications qui se veulent génériques. et dont l’api sera mis a jour en fonction de google (et non des constructeurs).
Si j’ai bien compris c’est une très bonne chose, les constructeurs font toujours ce qu’il veulent, mais ne pourrons plus bloquer les mise à jours de sécurité parce que le téléphone à plus d’un mois et que c’est plus rentable de les faire racheter le prochain.
J’ai bon ? j’ai bon ? " />
Le 11/11/2016 à 11h52
J’ai du mal a voir comment on pourrait utiliser Android sans Play Store si les libs systeme deviennent des apk a charger obligatoirement sur le Play Store…
Le 11/11/2016 à 12h37
Cette nouvelle est bien pour les développeurs car ça réduira
effectivement la fragmentation de l’API level sur tous les nouveaux
devices Android.
Cependant, je ne suis pas convaincu du tout que ça
réglera les problèmes de sécurité étant donné qu’il n’y a rien de
nouveau pour forcer les constructeurs à mettre à jour le noyau qu’il y a
dessous toutes ces bibliothèques !!!
Le 11/11/2016 à 12h40
Le 11/11/2016 à 12h55
En effet la grande question pour les utilisateurs.
Ça ve rendre la sécurité meilleure à long terme ?
Le 11/11/2016 à 13h01
Il faudrait déjà savoir ce qu’ils vont y mettre concretement avant de répondre " />
Mais pour moi si ils font comme avec la webview avec leur bibliothèque multimédia (Stagefright) par exemple, ça peut déjà réduire le nombre de failles graves.
Maintenant il y aura toujours des failles que les OEM “devront” patcher (genre les failles liés au SOC ou noyau), mais au moins ça va dans la bonne direction niveau sécurité.
Le 13/11/2016 à 17h02
Le 13/11/2016 à 17h39
Il ne faut pas oublier que la finalité n’est pas la meme: autant sur “compatible PC” le but c’est d’être compatible, autant sur mobile le but c’est d’être All in One: 1 seul chip pour faire le CPU, la mémoire, le SSD, l’alim de tous, les leds, les HPs, la caméra, la CG.
Bref: 1 chip = 1 BIOS
Le 13/11/2016 à 20h33
Je vois pas comment ils pourront mettre à jour le noyau Linux avec deux apk, faudra que le bootloader prévoit le démarrage de l’ancien noyau en cas de souci, et aussi les drivers seront incompatibles.
Le 13/11/2016 à 21h25
Ça ressemble fort à la béquille (feu) Google Gears tout ça.
Le 14/11/2016 à 07h56
Le 14/11/2016 à 09h34
Le 14/11/2016 à 10h21
sr17 a écrit :
La meilleure solution serait de créer un standard de compatibilité et un bios/uefi contenant des interfaces d’abstraction matérielles.
Avant cela Il faudrait aussi revoir la conception hardware et avoir un standard hardware.
Car sinon il impossible de savoir que tel ou tel périphérique est à telle ou telle adresse.
Il faudrait également changer les bus pour avoir des bus avec détection de périphérique (par exemple tout migrer de l’i2C vers de PCI express) ce qui risque d’augmenter les coups.
Le 14/11/2016 à 11h38
Le 14/11/2016 à 13h22
Dans ce cas, faut utiliser un CPU à archi x86 et pas ARM car cette dernière est absolument non standardisée.
Le 14/11/2016 à 14h26
Le 15/11/2016 à 08h48
Le 15/11/2016 à 09h43
Il n’y a pas de standard unique façon x86 ou x86-64 : un code pour puce Qualcomm ne tournera pas forcément sur une puce Mediatek ou Exynos. Alors qu’un code x86 ou x86-64 tournera indifféremment sur un AMD ou un Intel (voire du VIA).
Le 15/11/2016 à 09h57
Toujours aussi faux.
Si j’écris du code ARM propre, il tourne sur tous les CPU ARM que je veux
Si j’écris du code x86 sale, il ne tournera pas sur tous les CPU x86.
Ce n’est pas le jeu d’instruction qui est en cause mais l’accès aux périphériques.
Le 16/11/2016 à 09h28
Encore uen fois, non : une puce ARM intègre les instructions de base ARM certes (valable normalement sur tous les CPU de ce type, encore que …), mais le souci est que chaque CPU ARM dispose de son propre “à coté” qui est tout sauf standard. La est le problème.
Le 16/11/2016 à 12h41
C’est bien ce que je dis: Cet «à côté» concerne les périphériques.
Le genre de chose qu’une application n’accède pas directement, mais par le biais de l’OS.
Et qu’on OS bien fait accède par le biais de la couche HAL, soit dit en passant.
Donc une application pourra tourner sur une large gamme de CPUs ARM différents pourvu que l’OS qu’elle utilise y soit disponible (et c’est là que c’est pas gagné). Évidemment, si je décide de compiler en 64bits, ça ne marchera pas sur les CPUs 32b exclusivement.
C’est vrai aussi sur x86. Si je compile en 64b, faut pas se plaindre si ça ne marche pas en 32b (Intel en sort encore, pour l’embarqué). Si j’utilise directement les plus récentes instructions, ça ne marchera pas sur les CPUs un peu plus vieux, ou sur les CPUs d’un «autre» fabricant qui n’ont pas encore intégré ces dernières évolutions.
Le gros avantage du x86 pour l’auteur de l’application, c’est bien que la question de savoir si l’OS est disponible pour la plate-forme matérielle visée ne se pose normalement pas, grace au fait que tous les périphériques sont derrière un bus énumérable connu.
Le 11/11/2016 à 13h02
Et pourtant c’est bien problématique. Imaginons que Google sorte une nouvelle librairie d’accès a la ram dans ce joli petit apk. Parce que la nouvelle librairie ‘roxerait du poney’. Et ben adieu toute les appli qui implémente ça, a moins d’utiliser un truc genre Xposed et c’est loin d’être trivial !
A mon avis, c’est la mort a moyen terme des roms custom si l’envie en prend a Google.
Le 11/11/2016 à 14h59
Ah oui et tes applis dans le store officiel de Google qui tournent sur les rom officielles elles se débrouillent comment dans ta compréhension du problème ??
Le 11/11/2016 à 16h01
Malheureusement, si je comprends bien, cela ne concerne que certaines couches du système. Malheureusement, pour répondre aux problématiques de failles de sécurité, il faudrait que l’ensemble du système soit concerné, y compris (et surtout) les couches basses de l’Os comme le noyau Linux.
La meilleure solution serait de créer un standard de compatibilité et un bios/uefi contenant des interfaces d’abstraction matérielles.
Si google ne fait pas ce travail indispensable, les plateformes ARM/Android traîneront cette tare de naissance comme un boulet. Et un beau matin ils se réveilleront avec le standard PC/x86 qui reviendra en force sur les appareils mobiles…
Le 11/11/2016 à 16h29
C’est un peu mon avis aussi. Tout dépend de ce qui sera poussé dans ces extensions.
par contre, une petite question en passant. Si il y a moyen de mettre à jour des composants critiques de sécurité par un apk, ne risque-t-il pas de rendre possible en même temps les attaques contre ces mêmes composants, du fait que l’on puisse justement les mettre à jour ?
Le 11/11/2016 à 17h02
Comme quelqu’un l’a dit précédemment, c’est pas possible d’avoir une base comme windows et linux ?
Qu’on puisse installer sur n’importe quelle smartphone, avec dedans les driver pour qualcomm, mediatek etc ?
Le 11/11/2016 à 19h19
Peutêtre pas à ce point, mais intégrer un gestionnaire de paquets dans android, à la manière de Linux, permettrait clairement d’aider les choses. De mettre à jour telle ou telle partie du système (extension ou noyau) sereinement.
Et ça réduirait aussi la fragmentation du côté des roms Android/cyanogenmod customs.
Le 11/11/2016 à 19h22
+1 pour la sécurité.
Par contre j’ai PEUR pour quelque chose : ça permet à Google de déporter, tranquillement et de manière transparente, les APIs ouvertes et leur implémentation open source depuis AOSP vers des “blobs” que sont ces extensions, qui peuvent être… Propriétaires, à l’image des PlayServices.
J’ai donc peur, très peur pour l’avenir de AOSP.
Le 11/11/2016 à 19h39
Personnellement je n’attends que ça de voir le modèle foireux des smartphones imploser.
Mais c’est pas demain la veille. " />
Même si demain il était annoncé dans le monde entier qu’on pourrait récolter tout le contenu des smartphones de la planète en un claquement de doigt, ça continuerait à se vendre par paquebots entiers.
L’utilisateur final s’en fout.
Après tout, quand on balance toute sa vie sur des trucs sociaux, qu’est-ce qu’on peut en avoir à faire d’avoir des smartphones sans sécurité ?
Le 11/11/2016 à 19h51
Avec les Android Extensions, Google pourrait réduire la fragmentation de son système.
Réduire la fragmentation en “fragmentant” le système (core AOSP + extensions) ?
J’ai un doute. A moins d’imposer l’upgrade des extensions aux utilisateurs, on aura toujours une fragmentation entre ceux qui vont upgrader à-tout-va (au risque d’avoir des incompatibilité), et ceux qui conserveront ce qui marche (au risque d’être obsolète).
La décision de Google a davantage a voir avec la volonté de pousser rapidement les “nouveautés” sur les smartphones en circulation. Et par “nouveauté”, je veux dire des services stratégiquement important pour Google…
Le 11/11/2016 à 20h33
Le 11/11/2016 à 22h16
Le 12/11/2016 à 07h01
Le 12/11/2016 à 16h03
Le 12/11/2016 à 16h25
Le 12/11/2016 à 17h27
Le 12/11/2016 à 23h55