当我尝试将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'


#1 楼

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

评论


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

– Sopalajo de Arrierez
14年8月19日在16:06

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

–埃文·卡洛尔(Evan Carroll)
2015年4月3日在20:31

#2 楼

包含固件更新的zip软件包始终在META-INF/com/google/android中包含两个文件:updater-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-scriptset_metadata调用来修复set_metadata_recursive使用旧语法,即set_permset_perm_recursive。我还没有这样做,所以我不确定这会多么容易。

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

评论


替换我的Oppo Find 5上用于ROM和间隙的更新二进制文件。谢谢!

– Qwerty
14-10-29在1:04



确实:将TWRP从2.6.3升级到2.8对我来说是成功的窍门。之后,刷新新ROM时的set_metadata_recursive错误消失了。非常感谢您的小费!

– Dimitri C.
20年6月7日在16:34

#3 楼

除了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(, , , );|" updater-script


#4 楼

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

#5 楼

我写了这个搜索/替换模式,将新格式改成旧格式,并且对我有用:

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


最后,Google-play应用不会安装任何一个,所以我咬紧牙关,并刷新了更新的恢复(带有heimdal的recovery-clockwork-6.0.4.6-i9300.img),然后能够刷新未修改的CM11。顺便说一句,直到我禁用3G(强制通过WiFi进行IPv4)之前,Google Play都出现了错误,看来(通过临时)通过IPv6连接到Play服务器存在问题。

评论


多一点信息将很有用。您是从论坛获得的吗?还是你自己写的?在这两种情况下,没有一些注释(尤其是在正则表达式的情况下),随机代码都无济于事。

–斯蒂芬·施劳格(Stephen Schrauger)
2014年11月6日19:40

好的,对不起-这只是我写的搜索/替换模式,将新格式改成旧格式。最后,谷歌播放应用程序也不会安装,所以我咬紧牙关,并刷新了更新的恢复(recovery-clockwork-6.0.4.6-i9300.img,带有heimdal),然后能够刷新未修改的cm11。另外,在我禁用3G(强制通过wifi进行IPv4传输)之前,Google Play出现了错误,似乎有(临时的)问题通过IPv6连接到Play服务器

– jmullee
2014年11月14日13:11



#6 楼

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

评论


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

–Firelord♦
2015年6月26日5:32

#7 楼

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

评论


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

– Izzy♦
16年1月5日,12:51

它们是完全无关的。

–SarpSTA
16年1月7日在18:53

我相信此答案是指“ USB调试”设置,该设置在某些设备/版本上可以在nvram中设置一个标志,该标志的确可以从Recovery中读取。

–马修·雷德(Matthew Read)
16年1月7日在22:11