21 votes

En flashant CM 11, j'obtiens `set_metadata_recursive : some changes failed` :

ClockworkMod Recovery v6.0.2.3 me donne l'erreur suivante lorsque j'essaie de mettre à jour mon Samsung Galaxy Tab 2 (GT-P5113) à Cyanogenmod 11 :

Restarting adbd...
Finding update package...
Opening update package...
Installing update...
set_metadata_recursive: some changes failed
E:Error in /tmp/update.zip
(status 7)
Installation aborted.

Étant désespéré, j'ai essayé la même chose avec Projet de récupération Team Win (TWRP) v2.6.3.0 -- également la plus récente pour ma plateforme,

Checking for MD5 file...
Skipping MD5 check: no MD5 file file found.
set_metadata_recursive: some changes filed
E:Error: executing updater binary in zip '/data/media/0/sideload.zip'

16voto

fgysin Points 9965

En bref, si vous voulez flasher KitKat Android 4.4, vous devez passer à une version de CWM supérieure à v6.0.4.5. Ou bien, utiliser un bootloader alternatif. Pour la Galaxy Tab 2 GT-P5113 ou GT-p5110 vous pouvez trouver les instructions ici .

0 votes

Des références ou des liens sur les raisons de ce phénomène, s'il vous plaît ?

0 votes

@SopalajodeArrierez J'ai fourni une explication sur le lien vers des instructions supplémentaires. Ceci est un message d'erreur (si vous essayez d'abord sans savoir), l'autre question est un tutoriel-réponse avec plus de détails.

7voto

Seppo Enarvi Points 253

Un paquet zip qui contient une mise à jour du micrologiciel comprend toujours deux fichiers dans le format META-INF/com/google/android : updater-script y update-binary . updater-script est un fichier texte contenant les commandes nécessaires à l'installation de la mise à jour. update-binary traduit les commandes en code binaire.

Dans Android 4.4 KitKat, Google a changé l'interface qui updater-script utilise pour la mise en place des permissions. La méthode utilisée précédemment set_perm a été supprimée et remplacée par la méthode set_metadata . Cela fait échouer les anciennes versions du logiciel de récupération personnalisé avec les paquets Android 4.4 (par exemple CyanogenMod 11) et affiche le message d'erreur "set_metadata_recursive : some changes failed".

La meilleure solution consiste à mettre à jour le logiciel de récupération personnalisé. Je n'ai pas trouvé de version suffisamment récente de ClockworkMod compilée pour mon appareil, mais j'ai trouvé la plus récente version de TWRP pour fonctionner.

La deuxième option consiste à réparer le updater-script en remplaçant tout set_metadata y set_metadata_recursive avec l'ancienne syntaxe, c'est-à-dire set_perm y set_perm_recursive . Je ne l'ai pas fait, donc je ne suis pas sûr que ce soit si facile.

La troisième option consiste à remplacer le update-binary avec un patch créé par le membre XDA daniel_hk : http://forum.xda-developers.com/showthread.php?t=2532300 . J'ai fait cela et cela a bien fonctionné, mais le binaire est compilé pour ARMv7 et ne fonctionnera pas sur une autre architecture.

0 votes

Remplacer le update-binary travaillé sur mon Oppo Find 5 pour la ROM et les gapps. Merci !

0 votes

En effet, la mise à jour de TWRP de 2.6.3 à 2.8 a fait l'affaire pour moi. Après cela, l'erreur set_metadata_recursive lors du flashage de nouvelles ROMs a disparu. Merci beaucoup pour cette astuce !

1voto

yasondinalt Points 11

En plus de La réponse de jmullee Ce remplacement a été effectué en comparant les scripts de mise à jour de cm-10.1.3 et cm-11. Après ce remplacement, j'ai réussi à flasher cm-11-20141110-NIGHTLY-n7000.zip avec recovery 5 (intégré dans le noyau speedmod de ICS).

set_metadata => set_perm
set_metadata_recursive => set_perm_recursive

sed -i "s|set_metadata(\(\"[^\"]*\"\), \"uid\", \([0-9]*\), \"gid\", \([0-9]*\), \"mode\", \([0-9]*\).*);|set_perm(\2, \3, \4, \1);|" updater-script

0voto

JoeTheKid Points 1

J'ai résolu ce problème en modifiant le \META -INF \com\google\android\updater -dans un éditeur de texte, et remplacer tous les set_metadata_recursive par son ancienne version set_param_recursive (la signature des fonctions sont relativement équivalentes), après cela vous devez re-zip le pack et signer le fichier. Pour remplacer et comprendre comment le faire : cherchez dans google "replace set_metadata_recursive by set_param_recursive phyton" quelqu'un a créé un script phyton mais si vous comprenez les signatures des fonctions vous pouvez le faire manuellement. - puis repacker et signer le zip.

-1voto

jmullee Points 101

J'ai écrit ce modèle de recherche/remplacement qui fusionne le nouveau format avec l'ancien, et ça a marché pour moi :

$ sed -i "s|set_metadata_recursive(\\(\"[^\"]\*\"\\), \"uid\", \\([0-9]\*\\), \"gid\", \\([0-9]\*\\), \"dmode\", \\([0-9]\*\\), \"fmode\", \\([0-9]\*\\),.*);|set_perm_recursive(\2, \3, \4, \5, \1);|" META-INF/com/google/android/updater-script

A la fin, l'application google-play n'a pas voulu s'installer non plus, alors j'ai pris le taureau par les cornes et j'ai flashé une récupération mise à jour ( recovery-clockwork-6.0.4.6-i9300.img avec heimdal) et a ensuite pu flasher un CM11 non modifié. De plus, Google Play avait des erreurs jusqu'à ce que je désactive la 3G (forçant l'IPv4 sur le WiFi), il semble qu'il y avait des problèmes (temporaires ?) de connexion aux serveurs Play via IPv6.

3 votes

Un peu plus d'information serait utile. Avez-vous obtenu ce texte sur un forum ? Ou l'avez-vous écrit vous-même ? Dans les deux cas, random piece of code n'est pas très utile sans quelques commentaires (surtout dans le cas des expressions régulières).

0 votes

Ok désolé - c'est juste un modèle de recherche/remplacement que j'ai écrit et qui fusionne le nouveau format avec l'ancien. A la fin, l'application google-play ne s'installait pas non plus, alors j'ai pris le taureau par les cornes et j'ai flashé un recovery mis à jour (recovery-clockwork-6.0.4.6-i9300.img, avec heimdal ) et j'ai pu ensuite flasher un cm11 non modifié. A part ça, google play avait des erreurs jusqu'à ce que je désactive la 3G (forçant l'IPv4 sur le wifi), il semble qu'il y ait eu des problèmes (temporaires ?) de connexion aux serveurs play via IPv6.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X