Flashując CM 11, otrzymuję `set_metadata_recursive: niektóre zmiany się nie udały`:

19

ClockworkMod Recovery v6.0.2.3 wyświetla komunikat o błędzie podczas próby aktualizacji telefonu Samsung Galaxy Tab 2 (GT-P5113) do 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.

Będąc zdesperowanym próbowałem tego samego z Team Win Recovery Project Project (TWRP) v2.6.3.0 - także najnowszym dla mojego platofrm,

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'
Evan Carroll
źródło

Odpowiedzi:

16

Krótko mówiąc, jeśli chcesz sflashować KitKat Android 4.4, musisz uaktualnić do wersji CWM wyższej niż v6.0.4.5. Lub użyj alternatywnego programu ładującego. Instrukcje dotyczące Galaxy Tab 2 GT-P5113 lub GT-p5110 znajdują się tutaj .

Evan Carroll
źródło
Wszelkie referencje lub linki dotyczące tego, dlaczego tak się dzieje?
Sopalajo de Arrierez
@SopalajodeArrierez Podałem wyjaśnienie na link do dalszych instrukcji. To jest komunikat o błędzie (jeśli spróbujesz najpierw bez wiedzy), drugie pytanie to samouczek-odpowiedź z dodatkowymi szczegółami.
Evan Carroll,
6

Pakiet zip, który zawiera aktualizację oprogramowania układowego, zawsze zawiera dwa pliki w META-INF/com/google/android: updater-scripti update-binary. updater-scriptto plik tekstowy zawierający polecenia wymagane do zainstalowania aktualizacji. update-binarytłumaczy polecenia na kod binarny.

W Androidzie 4.4 KitKat Google zmienił interfejs updater-scriptużywany do konfigurowania uprawnień. Poprzednio stosowana set_permmetoda została uznana za przestarzałą i zastąpiona przez set_metadata. Powoduje to awarię starych wersji niestandardowego oprogramowania do odzyskiwania z pakietami systemu Android 4.4 (np. CyanogenMod 11) i wyświetla komunikat o błędzie „set_metadata_recursive: niektóre zmiany nie powiodły się”.

Najlepszym rozwiązaniem jest aktualizacja niestandardowego oprogramowania do odzyskiwania. Nie znalazłem wystarczająco nowej wersji ClockworkMod skompilowanej dla mojego urządzenia, ale znalazłem najnowszą wersję TWRP do pracy.

Druga opcja to naprawić updater-scriptpoprzez zastąpienie któregokolwiek set_metadatai set_metadata_recursivepołączenia ze starą składnią, czyli set_permi set_perm_recursive. Nie zrobiłem tego, więc nie jestem pewien, jak łatwe byłoby to.

Trzecią opcją jest zastąpienie update-binaryłatki utworzonej przez członka XDA daniel_hk: http://forum.xda-developers.com/showthread.php?t=2532300 . Zrobiłem to i działało dobrze, ale plik binarny jest skompilowany dla ARMv7 i nie będzie działał w żadnej innej architekturze.

Seppo Enarvi
źródło
Zastąpienie update-binarydziałającego mojego Oppo Find 5 zarówno dla ROM-u, jak i gappów. Dzięki!
Qwerty
1

Oprócz odpowiedzi jmullee , wykonanej przez porównanie skryptu aktualizującego cm-10.1.3 i cm-11. Po tej wymianie z powodzeniem flashowałem cm-11-20141110-NIGHTLY-n7000.zipz odzyskiem 5 (wbudowanym w jądro speedmod 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
yasondinalt
źródło
0

Rozwiązałem tę modyfikację pliku \ META-INF \ com \ google \ android \ updater-script w edytorze tekstu i zastąpienie wszystkich set_metadata_recursive starą wersją set_param_recursive (podpis funkcji jest względnie równoważny), po czym muszę ponownie skompresować paczkę i podpisać plik. Aby zamienić i dowiedzieć się, jak to zrobić: wyszukaj w Google „zamień set_metadata_recursive przez set_param_recursive phyton” ktoś stworzył skrypt phyton, ale jeśli rozumiesz podpisy funkcji, możesz to zrobić ręcznie. - następnie ponownie zapakuj i podpisz zip.

JoeTheKid
źródło
-1

Napisałem ten wzorzec wyszukiwania / zamiany, który przenosi nowy format na stary i zadziałało to dla mnie:

$ 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

Ostatecznie aplikacja google-play również się nie zainstalowała, więc recovery-clockwork-6.0.4.6-i9300.imgugryzłem kulę i sflashowałem zaktualizowane odzyskiwanie ( z heimdalem), a następnie mogłem sflashować niezmodyfikowaną CM11. Poza tym w Google Play pojawiały się błędy, dopóki nie wyłączyłem 3G (wymuszanie IPv4 przez Wi-Fi), wydaje się, że wystąpiły (tymczasowe?) Problemy z łączeniem się z serwerami Play za pośrednictwem IPv6.

jmullee
źródło
3
Przydałoby się nieco więcej informacji. Czy dostałeś to z forum? A może sam to napisałeś? W obu przypadkach random piece of codenie jest to pomocne bez komentarzy (szczególnie w przypadku wyrażeń regularnych).
Stephen Schrauger
ok przepraszam - to tylko napisany przeze mnie wzór wyszukiwania / zamiany, który przenosi nowy format na stary. Ostatecznie aplikacja google-play również się nie zainstalowała, więc ugryzłem pocisk i sflashowałem zaktualizowane odzyskiwanie (recovery-clockwork-6.0.4.6-i9300.img, z heimdal), a następnie mogłem sflashować niezmodyfikowany cm11. Poza tym w Google Play występowały błędy, dopóki nie wyłączyłem 3G (wymuszanie IPv4 przez Wi-Fi), wydaje się, że wystąpiły (tymczasowe?) Problemy z połączeniem się z serwerami Play przez IPv6
jmullee
-1

STATUS BŁĘDU 7 jest spowodowany tym, że będziesz musiał zaktualizować wersję CWM do wersji CWM w wersji 6.0.4.4 lub wyższej, aby zainstalować KitKat i Lollipop na Samsung Galaxy Tab 2 GT-P5113 lub GT-P5110

Emil George James
źródło
1
To może być prawda, ale czy możesz poprzeć swoje roszczenie za pomocą źródła (źródeł)?
Firelord
-2

Pamiętaj, aby włączyć „Debugowanie USB” w „Opcjach programisty” na zrootowanym telefonie. To działało dla mnie.

stan
źródło
Co opcje programisty mają wspólnego z odzyskiwaniem? Po uruchomieniu w CWM / TWRP nie odgrywają one żadnej roli. Zwłaszcza nie do flashowania ROM-ów.
Izzy
Są całkowicie niezwiązani.
SarpSTA
Wierzę, że ta odpowiedź odnosi się do ustawienia „Debugowanie USB”, które na niektórych urządzeniach / wersjach może ustawić flagę w nvram, która jest rzeczywiście możliwa do odczytania z Recovery.
Mateusz