Article clarifié : Merci aux commentaires

Il semble que pas mal de choses bougent du côté de Google et plus particulièrement de l’Android Market.

L’un des derniers changements est que, dorénavant, une application sur l’Android Market pourra se décliner sous la forme de différents APK selon le téléphone de l’utilisateur.

Un APK, pour rappel, c’est une archive contenant l’ensemble des ressources applicatives et media nécessaires à l’exécution d’une application. Techniquement, en fait, c’est tout simplement votre application.

Auparavant, je cite Eric Chu, toutes les applications contenues sur l’Android Market se composaient d’un APK unique, un medium universel disponible pour tout les terminaux éligibles quelque soit la version de l’OS, la taille d’écran ou le processeur du terminal.

C’est là d’ailleurs tout l’esprit de Java, le langage de programmation utilisé pour développer une application Android. Personnellement, j’ai toujours pensé que Google serait fidèle à ce principe et limiterait autant que possible ce qu’on appelle la fragmentation.

La fragmentation, c’est lorsqu’une application ne fonctionne pas d’un terminal à l’autre non pas en raison d’impossibilité technique (différence de version, périphérique optionnel manquant, etc.) mais parce que certaines fonctionnalités essentielles du système sont différentes ou manquantes par rapport à d’autres terminaux. C’est ce qui petit à petit a tué J2ME, la plate-forme Java pour mobile qui se devait d’être universelle mais qui, à l’époque des Symbian, Windows Mobiles et autres OS aujourd’hui sur le déclin, était complétement différente d’un téléphone à l’autre (y compris lorsqu’ils étaient de la même marque).

Le nombre d'exécutable pour une seule et même application au temps de J2ME

Le nombre d'exécutables pour une seule et même application au temps de J2ME

Lorsqu’un système est destiné à être librement implémenté par qui le veut, on s’expose forcément à la fragmentation. Un constructeur peut parfaitement oublier des éléments essentiels de l’OS, soit à dessein, soit par mégarde. Pour éviter cela, l’Open Handset Alliance documente précisément ce qui est le miminum légal pour Android. Ne subsistent donc normalement que les écarts de conduite involontaires des constructeurs (ou opérateurs).

Ces erreurs d’implémentation d’Android rendent parfois la tâche difficile aux développeurs d’application. Soit.

Ainsi, Google, qui gère l’Android Market, permet aux développeurs de faire différents APK pour une seule et même application, en fonction du terminal ciblé. Ceci, cela dit, ne touche que quelques aspects de la dite-application : textures, ressources media, etc.

Ce n’est donc pas ce qui va permettre à un développeur de prendre réellement en compte les petites différences entre deux terminaux Android qui sont dûes à un problème d’implémentation.

Mais en terme d’image, là, j’ai un problème. Il y a déjà une floppée d’agences de « développement » qui pensent que développer pour Android est trop coûteux à cause des bugs des différents terminaux. Ces dernières ne jurent que par des frameworks de développement croisés iPhone-Android qui génèrent, le plus souvent une application Android au design iPhone. Ces entreprises là ne cessent de critiquer Android sur des points tout à fait faux.

Est-ce là la réponse de Google ? Admettre que certains terminaux sont trop à part pour qu’une application Android ne soit pas compatible avec certains terminaux Android ? D’un point de vue communication, ça risque de vraiment mal passer et de se rajouter à la longue liste des arguments erronés contre Android.

Au final, le message que Google envoie, c’est : oui, ma plate-forme est fragmenté, il faut faire plusieurs développements pour une seule application. Peu importe que cela soit vrai ou non.

Ce message arrive à un moment où énormément d’acteurs mobiles (souvent à la culture iPhone) s’imaginent que le développement Android est un chemin jonché d’embûches avec des bugs inexplicables seulement sur certains terminaux.

La réponse de Google devrait plutôt être de mieux contrôler les terminaux ayant accès à l’Android Market. Apple exige de valider chaque application une par une sur iTunes, pourquoi Google n’exige pas de réellement valider l’implémentation d’Android sur un terminal avant de lui donner accès à l’Android Market ? Je suis quasiment certain que le nombre de bugs serait moindre !