闪烁CM 11,我得到“ set_metadata_recursive:某些更改失败”:


19

当我尝试将Samsung Galaxy Tab 2(GT-P5113)更新为Cyanogenmod 11时,ClockworkMod Recovery v6.0.2.3出现了以下错误:

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'

Answers:


16

简而言之,如果要刷新KitKat Android 4.4,则必须升级到大于v6.0.4.5的CWM版本。或者,使用备用引导程序。对于Galaxy Tab 2 GT-P5113或GT-p5110,您可以在此处找到说明


请问有关为什么会发生这种情况的任何参考或链接?
Sopalajo de Arrierez 2014年

@SopalajodeArrierez我在进一步说明的链接上提供了解释。这是一条错误消息(如果您不知如何先尝试),另一个问题是具有更多详细信息的教程答案。
埃文·卡罗尔

6

包含固件更新ZIP包总是会包含两个文件META-INF/com/google/androidupdater-scriptupdate-binaryupdater-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通过用旧语法(即and)替换any set_metadataset_metadata_recursive调用来修复。我还没有这样做,所以我不确定这有多容易。set_permset_perm_recursive

第三种选择是将其替换update-binary为由XDA成员daniel_hk创建的补丁程序:http : //forum.xda-developers.com/showthread.php ? t=2532300 。我已经做到了,并且工作正常,但是二进制文件是为ARMv7编译的,无法在任何其他体系结构中使用。


替换update-binary我的Oppo Find 5上的ROM和间隙。谢谢!
Qwerty 2014年

1

除了jmullee的答案外,还通过比较cm-10.1.3和cm-11 updater-script 得出。替换之后,我成功地cm-11-20141110-NIGHTLY-n7000.zip恢复了恢复5(ICS speedmod内核中内置的恢复)。

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

0

我解决了在文本编辑器中修改\ META-INF \ com \ google \ android \ updater-script文件,并用其旧版本set_param_recursive替换所有set_metadata_recursive(功能的签名相对等效)的问题,然后您必须重新压缩文件包并签名文件。为了替换并弄清楚如何做:在Google中搜索“用set_param_recursive phyton替换set_metadata_recursive”,有人创建了phyton脚本,但是如果您了解功能签名,则可以手动进行。-然后重新包装并签名。


-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

最后,谷歌播放应用程序也不会安装,所以我咬紧牙关,刷新了更新的恢复(recovery-clockwork-6.0.4.6-i9300.img带有heimdal),然后能够刷新未修改的CM11。另外,在我禁用3G(强制通过WiFi进行IPv4)之前,Google Play出现了错误,似乎有(临时的)问题通过IPv6连接到Play服务器。


3
多一点信息将很有用。您是从论坛上获得的吗?还是你自己写的?无论哪种情况,random piece of code没有一些注释(特别是在正则表达式的情况下)都无济于事。
Stephen Schrauger 2014年

好的,对不起-这只是我写的搜索/替换模式,将新格式改成旧格式。最后,谷歌播放应用程序也不会安装,所以我咬了牙关,并刷新了更新的恢复(recovery-clockwork-6.0.4.6-i9300.img,带有heimdal),然后能够刷新未修改的cm11。
顺便说一句

-1

错误状态7是因为您必须将CWM版本升级到大于或等于CWM v 6.0.4.4的版本,才能在三星Galaxy Tab 2 GT-P5113或GT-p5110上安装kitkat和棒棒糖


1
可能是正确的,但是您可以用来源支持您的主张吗?
Firelord

-2

确保在已安装手机的“开发人员选项”下启用“ USB调试”。那对我有用。


开发人员选择与恢复有什么关系?当启动到CWM / TWRP时,它们根本不起作用。尤其不适用于ROM。
伊齐

它们是完全无关的。
SarpSTA,2016年

我相信此答案是指“ USB调试”设置,该设置在某些设备/版本上可以在nvram中设置一个标志,该标志的确可以从Recovery中读取。
马修(Matthew)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.