Après avoir découvert à la dure que enracinement modification de en regardant /system
/system
la mauvaise façon casse les mises à jour, j'ai décidé de laisser tomber tous les trucs d'utilisateur et de suivre la voie officielle - pas de système de récupération personnalisé ou de rooting ou de tout ce qui est juste du pur Android. A cette fin, j'ai entrepris exécution d'une réin remise à l'usine [unrooting]
pour ainsi dire.
Voici les étapes que j'ai suivies :
-
Acquérir le
platform-tools
pour le système d'exploitation de votre ordinateur. Extrayez-les et ajoutez le répertoire résultant à votre$PATH
. - Télécharger une image stock-Android en s'assurant que l'identifiant du modèle correspond à celui de votre appareil, mais que la version est pas le plus récent (ceci est nécessaire pour l'étape 8). Vérifiez l'image en utilisant le hachage inclus dans la table, puis extrayez-la. Lancez un shell si vous ne l'avez pas déjà fait, et allez dans le répertoire extrait.
- Déverrouiller le bootloader (
fastboot oem unlock
). - Réinstaller Android (
./flash-all.sh
). Assurez-vous d'attraper le périphérique avant le dernier redémarrage en maintenant la combinaison de touches boot-to-recovery enfoncée dès que le script imprimerebooting...
après avoir écrit l'image cache (cela vous évite de devoir redémarrer pour l'étape suivante). - Verrouiller le chargeur de démarrage (
fastboot oem lock
). - Redémarrage. Attendez qu'Android fasse ce qu'il fait quand vous démarrez une nouvelle version pour la première fois.
- Passez par la configuration initiale de l'appareil. (Personnellement, je me connecte à un réseau Wi-Fi, puis je saute tout le reste pour gagner un peu plus de temps).
- Recherchez, téléchargez et installez une mise à jour du système d'exploitation Android. Attendez encore un peu pendant que ça se passe.
- Observez ce qui suit sur l'écran de l'appareil, avec le texte suivant
Error!
en blanc en dessous :
- Faites apparaître le menu de récupération et choisissez
View recovery logs
alors/cache/recovery/last_log
. Faites défiler jusqu'en bas et cherchez une indication de la raison pour laquelle la mise à jour a échoué. Transcrivez les lignes les plus pertinentes, ainsi que la version et l'ID de construction de l'image de l'étape 2.
Mon appareil est un Nexus 5, acheté en novembre 2013 sur le Play Store. Jusqu'à présent, j'ai essayé ceci en utilisant Android 6.0.0/MRA58K et Android 5.1.1/LMY48M, ce qui a donné les résultats suivants dans les journaux de récupération :
6.0.0/MRA58K :
failed to stat "/cache/saved.file": No such file or directory
script aborted: "/system/priv-app/SetupWizard/oat/arm/SetupWizard.odex" has unexpected contents.
5.1.1/LMY48M :
Remounting and verifying system partition files...
script aborted: assert failed: sha1_check(read_file("/system/fonts/NotoSansTC-Regular.otf"), some_hash)
Dans les deux cas, le problème semble être un fichier situé sous /system
avec des contenus qui ne correspondent pas à ceux attendus par le programme de mise à jour. C'est exceptionnellement frustrant, étant donné que ma procédure spécifiquement fait appel à des images officielles de stock-Android, récupérées sur le site de Google et vérifiées à l'aide des hachages qu'ils publient (et oui, je m'assure d'utiliser TLS).
Ai-je manqué une étape ? Qu'est-ce qui ne va pas ici ? Et comment puis-je revenir sur le chemin béni et être à nouveau jugé digne de recevoir les mises à jour over-the-air tant recherchées ?