David Madore's WebLog: La (nouvelle) banane Android du jour

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #2268 [older|newer] / Entrée #2268 [précédente|suivante]:

(mardi)

La (nouvelle) banane Android du jour

[Gorille tenant une banane]Peu de temps avant de partir pour New York[#], j'ai mis à jour mon téléphone Android en passant de la version 4.3.quelquechose à la version 4.4.4 (en fait, je n'utilise pas l'Android brut fourni par Google mais la version dérivée CyanogenMod, et j'ai mis à jour celui-ci de la version 10.2.1 à la version 11.20141115, mais il ne semble pas que cette subtilité soit pertinente pour ce que je vais dire). J'ai été étonné du peu de problèmes rencontré lors de cette mise à jour (le GPS n'a pas été cassé, le Wifi fonctionnait toujours, l'appareil photo marchait, etc.) : il a seulement effacé tous mes contacts, ce qui, en matière de transition d'une version d'Android à une autre, est globalement en-dessous de la ration usuelle d'emmerdes. Mais juste l'avant-veille de mon départ, je me suis rendu compte qu'il y avait un autre problème que je n'avais pas remarqué : le téléphone ne marchait plus. Plus exactement, lors d'un appel téléphonique, je n'entendais rien, et mon interlocuteur n'entendait rien non plus : tout se passait exactement comme si le micro et le haut-parleur étaient cassés (mais uniquement pour ce qui est de passer un appel).

Alors certes, j'utilise assez peu mon téléphone mobile pour téléphoner : je m'en sers surtout pour consulter le Web (principalement Wikipédia, d'ailleurs) et les cartes (Google Maps et/ou OSMand), et un peu comme appareil photo, et pour communiquer essentiellement par Google Talk (rebaptisé Hangouts, mais en fait j'utilise un client différent — et par ailleurs merdique — appelé Xabber) et par SMS. Néanmoins, un téléphone qui ne permet pas de téléphoner, fût-ce occasionnellement, c'est un peu navrant.

Il s'avère que le problème (touchant le Nexus 4 et peut-être aussi le Nexus 6, sous Android 4.4.4 et apparemment certaines versions ultérieures) est connu : voir ici, ici, ici et ici (d'après les commentaires, il semble bien que les gens soient affectés aussi sur la version d'Android officielle de Google et pas seulement sous CyanogenMod). La faute en est à Google, non pas Google architecte d'Android mais Google auteur d'un machin énorme, monolithique et propriétaire qui vient s'ajouter par-dessus Android, qui s'appelle le Google Services Framework et qui contient essentiellement tout ce que Google n'a pas voulu rendre libre dans Android, donc, beaucoup de choses (en principe on peut fonctionner sans, mais ça implique de se passer d'énormément de choses, dont toutes les applications Google et en fait la majorité des applications non-libres d'Android, donc en fait la majorité des applications tout court d'Android). Apparemment, une mise à jour du Google Services Framework a eu pour effet de casser le son pendant les appels téléphoniques sur le Nexus 4 et le Nexus 6. Ce dernier étant le téléphone phare de Google, c'est amusant de constater à quel point ils s'en foutent complètement (ou alors ils ne sont pas au courant : il est bien connu que l'outil public pour rapporter des bugs dans Android est un pur placébo, personne de chez Google ne va jamais y mettre les pieds, et ils ne veulent pas de feedback de la part de l'extérieur).

Il y a deux solutions partielles au problème (qu'on découvre en suivant les liens ci-dessus et en ignorant 99.99% des commentaires venus d'utilisateurs totalement neuneus qui racontent n'importe quoi). L'une consiste à désactiver un tout petit bout du Google Services Framework (par exemple au moyen de la commande suivante tapée en tant que root dans une ligne de commande sur le téléphone : pm disable com.google.android.gms/com.google.android.gms.checkin.CheckinService). L'autre consiste à désactiver un bout un peu plus gros (au moyen de la commande pm disable com.google.android.gms). Aucune n'est vraiment satisfaisante : la première, celle qui désactive uniquement com.google.android.gms.checkin.CheckinService, a certes très peu d'effets sur le fonctionnement logiciel normal du téléphone, mais elle a pour conséquence que la batterie se vide trois ou quatre fois plus vite, manifestement parce que quelque chose d'autre dans le Google Services Framework essaie de rentrer en communication avec le Checkin Service, n'y arrive pas, et pose un « wake lock », qui empêche le téléphone d'entrer en hibernation, tant qu'il n'y arrive pas. La seconde solution, celle qui désactive tout com.google.android.gms, n'a pas ce problème, mais elle fait que la plupart des applications Google dysfonctionnent, dont le Play Store (heureusement, pas Google Maps, ou en tout cas pas complètement).

Pour résumer, j'ai le choix entre un téléphone qui ne peut plus passer d'appels, un téléphone dont la batterie ne tient que quelques heures, ou un téléphone dont la plupart des applications ne marchent plus. La merdicité de ces trois options a été soigneusement calculée par Murphy pour que je ne sache pas exactement quel mal est le pire, même si j'ai provisoirement choisi le dernier (en désactivant com.google.android.gms). Mais je me demande bien combien de temps cette petite blague va durer.

[#] Pour ceux qui s'étonneraient que j'aie l'idée de mettre à jour mon téléphone juste avant de partir en vacances, ce qui est une façon insolente de provoquer la loi de Murphy, il y a quand même une justification : je partais avec deux téléphones (l'un devant servir à loger ma carte SIM française pour rester joignable à mon numéro français, l'autre à héberger la carte SIM américaine nécessaire pour avoir un accès Internet nomade) ; or l'un de ces téléphones est une merde aux specs mal documentées (un Geeksphone Revolution), et du coup je n'ai essentiellement pas de choix de ce que je mets dessus — or je voulais que les deux soient sur des versions aussi semblables que possible d'Android, pour ne pas avoir à m'arracher les cheveux en passant de l'un à l'autre.

↑Entry #2268 [older|newer] / ↑Entrée #2268 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées