Ao piscar no CM 11, recebo `set_metadata_recursive: algumas alterações falharam`:

19

ClockworkMod Recovery v6.0.2.3 me dá o seguinte erro quando tento atualizar meu Samsung Galaxy Tab 2 (GT-P5113) para 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.

Desesperado, tentei a mesma coisa com o Team Win Recovery Project (TWRP) v2.6.3.0 - também o mais recente para o meu 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
fonte

Respostas:

16

Em resumo, se você deseja fazer o flash do KitKat Android 4.4, precisará atualizar para uma versão do CWM maior que a v6.0.4.5. Ou use um carregador de inicialização alternativo. Para o Galaxy Tab 2 GT-P5113 ou GT-p5110, você pode encontrar as instruções aqui .

Evan Carroll
fonte
Quaisquer referências ou links sobre por que isso acontece, por favor?
Sopalajo de Arrierez
@SopalajodeArrierez Forneci uma explicação no link para obter mais instruções. Esta é uma mensagem de erro (se você tentar primeiro sem saber), a outra pergunta é uma resposta de tutorial com mais detalhes.
Evan Carroll
6

Um pacote zip que contém uma atualização de firmware sempre inclui dois arquivos em META-INF/com/google/android: updater-scripte update-binary. updater-scripté um arquivo de texto que contém os comandos necessários para instalar a atualização. update-binaryconverte os comandos em código binário.

No Android 4.4 KitKat, o Google alterou a interface updater-scriptusada para configurar permissões. O set_permmétodo usado anteriormente foi preterido e substituído por set_metadata. Isso faz com que versões antigas do software de recuperação personalizado falhem nos pacotes do Android 4.4 (por exemplo, CyanogenMod 11) e exibem a mensagem de erro "set_metadata_recursive: algumas alterações falharam".

A melhor solução é atualizar o software de recuperação personalizado. Não encontrei uma versão suficientemente nova do ClockworkMod compilada para o meu dispositivo, mas achei a versão mais recente do TWRP funcionando.

A segunda opção é corrigir a updater-scriptsubstituição de qualquerset_metadata e set_metadata_recursivecalls pela sintaxe antiga, ie set_perme set_perm_recursive. Eu não fiz isso, então não tenho certeza de como isso seria fácil.

A terceira opção é substituí-la update-binarypor uma remendada criada pelo membro do XDA daniel_hk: http://forum.xda-developers.com/showthread.php?t=2532300 . Eu fiz isso e funcionou bem, mas o binário é compilado para o ARMv7 e não funcionará em nenhuma outra arquitetura.

Seppo Enarvi
fonte
Substituindo o update-binarytrabalhado no meu Oppo Find 5 para a ROM e gapps. Obrigado!
quer
1

Além da resposta de jmullee , feita pela comparação do cm-10.1.3 e do cm-11 updater-script. Após essa substituição, eu atualizei cm-11-20141110-NIGHTLY-n7000.zipcom êxito a recuperação 5 (núcleo incorporado do 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
yasondinalt
fonte
0

Eu resolvi que modificar o arquivo \ META-INF \ com \ google \ android \ updater-script em um editor de texto e substituir todo o set_metadata_recursive por sua versão antiga set_param_recursive (a assinatura das funções é relativamente equivalente), depois você precisa re-zipar o pacote e assinar o arquivo. Para substituir e descobrir como fazê-lo: pesquise no google "substituir set_metadata_recursive por set_param_recursive phyton" alguém criou um script phyton, mas se você entender as assinaturas das funções, poderá fazê-lo manualmente. - depois reembale e assine o zip.

JoeTheKid
fonte
-1

Eu escrevi esse padrão de pesquisa / substituição que combina o novo formato com o antigo e funcionou para mim:

$ 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

No final, o aplicativo google-play também não foi instalado, então mordi a bala e recovery-clockwork-6.0.4.6-i9300.imgexibi uma recuperação atualizada ( com heimdal) e pude exibir uma CM11 não modificada. Além disso, o Google Play teve erros até eu desativar o 3G (forçando o IPv4 por WiFi), parece que houve problemas (temporários?) Na conexão com os Play Servers via IPv6.

jmullee
fonte
3
Um pouco mais de informação seria útil. Você conseguiu isso em um fórum? Ou você mesmo escreveu? Em ambos os casos, random piece of codenão é tão útil sem alguns comentários (especialmente no caso de expressões regulares).
Stephen Schrauger
ok desculpe - é apenas um padrão de pesquisa / substituição que escrevi que mescla o novo formato ao antigo. No final, o aplicativo google-play também não foi instalado, então mordi a bala e exibi uma recuperação atualizada (recovery-clockwork-6.0.4.6-i9300.img, com heimdal) e pude exibir um cm11 não modificado. Além, o Google Play tinha erros até que eu desativado 3G (forçando IPv4 sobre wi-fi), parece houve problemas de conexão para jogar servidores via IPv6 (temporária?)
jmullee
-1

O ESTADO DO ERRO 7 é por causa de você ter que atualizar a versão do CWM para maior ou igual à versão CWM v 6.0.4.4 para instalar o kitkat e o pirulito no samsung Galaxy Tab 2 GT-P5113 ou GT-p5110

Emil George James
fonte
1
Isso pode ser verdade, mas você pode apoiar sua reivindicação com a (s) fonte (s)?
Firelord
-2

Certifique-se de ativar a "Depuração USB" em "Opções do desenvolvedor" no seu telefone raiz. Isso funcionou para mim.

stan
fonte
O que as opções de desenvolvedor têm a ver com recuperação? Quando inicializados no CWM / TWRP, eles não desempenham nenhum papel. Especialmente para ROMs que piscam.
Izzy
Eles são completamente independentes.
SarpSTA
Acredito que esta resposta esteja se referindo à configuração "USB Debugging", que em alguns dispositivos / versões pode definir um sinalizador no nvram que seja realmente legível a partir do Recovery.
Mateus Leia