Прошивая CM 11, я получаю `set_metadata_recursive: некоторые изменения не удалось`:

19

ClockworkMod Recovery v6.0.2.3 выдает ошибку при попытке обновить 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.

В отчаянии я попробовал то же самое с Team Win Recovery Project (TWRP) v2.6.3.0 - также последней для моей платформы.

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'
Эван Кэрролл
источник

Ответы:

16

Короче говоря, если вы хотите прошить KitKat Android 4.4, вам придется обновить версию CWM выше, чем v6.0.4.5. Или используйте альтернативный загрузчик. Для Galaxy Tab 2 GT-P5113 или GT-p5110 вы можете найти инструкции здесь .

Эван Кэрролл
источник
Любые ссылки или ссылки о том, почему это происходит, пожалуйста?
Сопалахо де Арриерес
@SopalajodeArrierez Я предоставил объяснение по ссылке на дальнейшие инструкции. Это сообщение об ошибке (если вы попробуете сначала, не зная), другой вопрос - ответ учебника с более подробной информацией.
Эван Кэрролл
6

Пакет zip, содержащий обновление прошивки, всегда включает два файла в META-INF/com/google/android: updater-scriptи update-binary. updater-scriptтекстовый файл, содержащий команды, необходимые для установки обновления. update-binaryпереводит команды в двоичный код

В Android 4.4 KitKat Google изменил интерфейс, который updater-scriptиспользуется для настройки разрешений. Ранее использованный set_permметод устарел и заменен на set_metadata. Это приводит к сбою старых версий пользовательских программ восстановления с пакетами Android 4.4 (например, CyanogenMod 11) и отображает сообщение об ошибке «set_metadata_recursive: некоторые изменения не выполнены».

Лучшее решение - обновить пользовательское программное обеспечение для восстановления. Я не нашел достаточно новой версии ClockworkMod, скомпилированной для моего устройства, но нашел новую версию TWRP для работы.

Второй вариант заключается в исправлении updater-script, заменяя любые set_metadataи set_metadata_recursiveвызовы старым синтаксисом, то есть set_permи set_perm_recursive. Я не сделал этого, поэтому я не уверен, насколько легко это будет.

Третий вариант - заменить update-binaryисправленный созданный членом XDA daniel_hk: http://forum.xda-developers.com/showthread.php?t=2532300 . Я сделал это, и он работал нормально, но двоичный файл скомпилирован для ARMv7 и не будет работать в любой другой архитектуре.

Сеппо Энарви
источник
Замена update-binaryработавшего на моем Oppo Find 5 как для ROM, так и для gapps. Благодарность!
Qwerty
1

В дополнение к ответу jmullee , сделанному путем сравнения cm-10.1.3 и cm-11 updater-script. После этой замены я успешно прошился cm-11-20141110-NIGHTLY-n7000.zipс recovery 5 (встроенным в ядро ​​speedS 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
источник
0

Я решил, что изменив файл \ META-INF \ com \ google \ android \ updater-script в текстовом редакторе, и заменив все set_metadata_recursive его старой версией set_param_recursive (сигнатура функций относительно эквивалентна), после этого вы нужно заново запаковать пакет и подписать файл. Для замены и выяснения, как это сделать: выполните поиск в google "заменить set_metadata_recursive на set_param_recursive phyton". Кто-то создал скрипт phyton, но если вы понимаете сигнатуры функций, вы можете сделать это вручную. - затем перепакуйте и подпишите почтовый индекс.

JoeTheKid
источник
-1

Я написал этот шаблон поиска / замены, который превращает новый формат в старый, и он работал для меня:

$ 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

В конце концов приложение google-play тоже не установилось, поэтому я укусил пулю и recovery-clockwork-6.0.4.6-i9300.imgпрошил обновленное рекавери ( с heimdal), а затем смог прошить немодифицированную CM11. Кроме того, в Google Play были ошибки до тех пор, пока я не отключил 3G (форсирование IPv4 через WiFi), кажется, что (временные?) Проблемы с подключением к серверам Play через IPv6.

jmullee
источник
3
Немного больше информации было бы полезно. Вы получили это с форума? Или ты сам написал? В любом случае, random piece of codeне все так полезно без некоторых комментариев (особенно в случае регулярных выражений).
Стивен Шраугер
хорошо, извините - это просто шаблон поиска / замены, который я написал, который превращает новый формат в старый. В конце концов приложение google-play тоже не установилось, поэтому я прикусил пулю и прошил обновленное recovery (recovery-clockwork-6.0.4.6-i9300.img, с heimdal), а затем смог прошить неизмененный cm11. Кроме того, в Google Play были ошибки до тех пор, пока я не отключил 3G (принудительное использование IPv4 через Wi-Fi), кажется, что (временные?) Проблемы с подключением к игровым серверам через IPv6
jmullee
-1

ОШИБКА СОСТОЯНИЯ 7 из-за того, что вам придется обновить версию CWM до версии CWM v 6.0.4.4 или выше, чтобы установить kitkat и lollipop на samsung Galaxy Tab 2 GT-P5113 или GT-p5110

Эмиль Джордж Джеймс
источник
1
Это может быть правдой, но можете ли вы подтвердить свою претензию источниками?
Повелитель огня
-2

Убедитесь, что вы включили «Отладку USB» в разделе «Параметры разработчика» на своем рутированном телефоне. Это сработало для меня.

стан
источник
Какое отношение имеют параметры разработчика к восстановлению? При загрузке в CWM / TWRP они вообще не играют никакой роли. Особенно не для прошивки ПЗУ.
Иззи
Они совершенно не связаны.
SarpSTA
Я полагаю, что этот ответ относится к параметру «Отладка USB», который на некоторых устройствах / версиях может устанавливать флаг в nvram, который действительно читается из Recovery.
Мэтью Прочитал