Como corrigir falha do Apktool ao extrair erro de bibliotecas nativas
Se você é um desenvolvedor ou entusiasta do Android, pode ter encontrado o erro "Falha ao extrair bibliotecas nativas, res=-2" ao tentar instalar um arquivo APK modificado em seu dispositivo. Esse erro pode ser frustrante e impedir que você teste ou use seu aplicativo modificado. Neste artigo, explicaremos o que causa esse erro e como corrigi-lo usando três métodos diferentes.
apktool failed to extract native libraries res -2
O que é Apktool e por que você precisa dele?
Apktool é uma ferramenta para fazer engenharia reversa de arquivos APK do Android
Apktool é um poderoso software desenvolvido pelo membro sênior do XDA ibotpeaches. A ferramenta permite que você faça engenharia reversa de arquivos APK, permitindo decodificar arquivos de recursos para que você possa modificá-los e reconstruí-los depois de fazer algumas alterações. Você pode usar o Apktool para compilar o APK de uma fonte modificada, descompilar o APK, editar e recompilar arquivos APK e criar um pacote de aplicativo Android.
Você pode usar Apktool para modificar, depurar e recompilar arquivos APK
Algumas das razões pelas quais você pode querer usar o Apktool são:
Para alterar o ícone, nome, tema ou layout do aplicativo
Para adicionar ou remover recursos ou permissões
Para injetar código ou anúncios em um aplicativo
Para analisar ou depurar o comportamento ou desempenho de um aplicativo
Para saber como um aplicativo funciona ou como foi feito
O Apktool é compatível com os sistemas Windows, Linux e Mac OS. Você pode baixá-lo de seu site oficial ou de seu repositório GitHub. Você também precisará do Java Runtime Environment (JRE) instalado em seu sistema para executar o Apktool.
O que causa o erro "Falha ao extrair bibliotecas nativas, res=-2"?
O erro ocorre quando você tenta instalar um arquivo APK modificado
O erro "Falha ao extrair bibliotecas nativas, res=-2" O erro "Falha ao extrair bibliotecas nativas, res=-2" é um problema comum que muitos usuários do Apktool enfrentam quando tentam instalar um arquivo APK modificado em seu dispositivo.O erro significa que o sistema Android falhou ao extrair as bibliotecas nativas (como arquivos .so) do arquivo APK, resultando em falha na instalação.
O erro está relacionado ao sinalizador extractNativeLibs no arquivo AndroidManifest.xml
Uma das possíveis causas desse erro é o sinalizador extractNativeLibs no arquivo AndroidManifest.xml. Este sinalizador determina se as bibliotecas nativas devem ser extraídas do arquivo APK ou não. Se o sinalizador for definido como falso, as bibliotecas nativas não serão extraídas e serão carregadas diretamente do arquivo APK. Isso pode economizar algum espaço em disco e melhorar o desempenho, mas também requer que algumas condições sejam atendidas, como:
O arquivo APK deve estar alinhado à página com a ferramenta zipalign
As bibliotecas nativas devem ser descompactadas e armazenadas no arquivo APK sem preenchimento ou alinhamento
O dispositivo deve suportar o carregamento de bibliotecas nativas de arquivos APK
Se alguma dessas condições não for atendida, a instalação falhará com o erro "Falha ao extrair bibliotecas nativas, res=-2". Isso pode acontecer se você modificar o arquivo APK com o Apktool e alterar algumas das bibliotecas nativas ou suas configurações de compactação.
O erro também pode ser causado por uma ferramenta aapt ausente ou desatualizada
Outra possível causa desse erro é uma ferramenta aapt ausente ou desatualizada. Aapt significa Android Asset Packaging Tool e é uma ferramenta que compila e empacota recursos para aplicativos Android. O Apktool usa o aapt para recompilar o arquivo APK depois de fazer algumas alterações. No entanto, se você não tiver o aapt instalado em seu sistema ou se tiver uma versão mais antiga dele, o Apktool pode não conseguir recompilar o arquivo APK corretamente e causar alguns problemas com as bibliotecas nativas.
Como corrigir o erro "Falha ao extrair bibliotecas nativas, res=-2"?
Existem vários métodos que você pode tentar corrigir esse erro e instalar seu arquivo APK modificado com sucesso. Aqui estão três deles:
Método 1: definir o sinalizador extractNativeLibs como verdadeiro no arquivo AndroidManifest.xml
Esse método envolve definir o sinalizador extractNativeLibs como true no arquivo AndroidManifest.xml. Isso instruirá o sistema Android a extrair as bibliotecas nativas do arquivo APK e armazená-las no dispositivo. Isso pode resolver o problema se o seu dispositivo não suportar o carregamento de bibliotecas nativas de arquivos APK ou se o arquivo APK não estiver alinhado à página ou tiver bibliotecas nativas compactadas ou preenchidas.
Etapa 1: descompilar o arquivo APK com o Apktool
Para descompilar o arquivo APK com Apktool, você precisa abrir um prompt de comando ou janela de terminal e navegar até a pasta onde você tem Apktool e seu arquivo APK. Em seguida, digite o seguinte comando:
apktool d -f -o output_folder apk_file.apk
Este comando descompilará seu arquivo APK e criará uma pasta de saída com todos os arquivos e pastas de seu aplicativo. Você pode alterar o nome da pasta de saída e apk_file.apk conforme desejar.
Etapa 2: edite o arquivo AndroidManifest.xml e altere o atributo extractNativeLibs para true
Em seguida, você precisa abrir a pasta de saída e encontrar o arquivo AndroidManifest.xml. Este é um arquivo XML que contém informações sobre seu aplicativo, como nome do pacote, versão, permissões, atividades etc. Você precisa abrir este arquivo com um editor de texto e procurar a seguinte linha:
<application android:extractNativeLibs="false" ... >
Essa linha define o sinalizador extractNativeLibs como falso para seu aplicativo. Você precisa alterá-lo para true assim:
<application android:extractNativeLibs="true" ... >
Isso instruirá o sistema Android a extrair as bibliotecas nativas do seu aplicativo ao instalá-lo. Salve e feche o arquivo após fazer essa alteração.
Passo 3: Recompile o arquivo APK com Apktool
Agora que você editou o arquivo AndroidManifest.xml, você precisa recompilar seu aplicativo com o Apktool. Para fazer isso, volte ao prompt de comando ou janela do terminal e digite o seguinte comando:
apktool b -f -o new_apk_file.apk output_folder
Este comando recompilará seu aplicativo e criará um novo arquivo APK com suas alterações. Você pode alterar o nome de new_apk_file.apk conforme desejar.
Passo 4: Assine e alinhe o arquivo APK com as ferramentas apksigner e zipalign
Antes de instalar seu novo arquivo APK em seu dispositivo, você precisa assiná-lo e alinhá-lo com as ferramentas apksigner e zipalign. São ferramentas que verificam e otimizam seu arquivo APK para distribuição. Você pode encontrar essas ferramentas na pasta ferramentas de construção do SDK do Android ou baixá-las da Internet.
Para assinar seu arquivo APK com apksigner, você precisa ter um arquivo keystore que contenha sua chave privada e certificado. Você pode criar um arquivo keystore com o comando keytool ou usar um existente. Em seguida, digite o seguinte comando:
apksigner sign --ks keystore_file --out assinado_apk_file.apk new_apk_file.apk
Este comando assinará seu arquivo APK com seu arquivo keystore e criará um arquivo APK assinado. Você pode alterar o nome de keystore_file, assinado_apk_file.apk e new_apk_file.apk conforme desejar.
Para alinhar seu arquivo APK com zipalign, digite o seguinte comando:
zipalign -f -v 4 assinado_apk_arquivo.apk alinhado_apk_arquivo.apk
Este comando alinhará seu arquivo APK em limites de 4 bytes e criará um arquivo APK alinhado. Você pode alterar o nome de assinado_apk_file.apk e align_apk_file.apk como desejar.
Etapa 5: instale o arquivo APK no seu dispositivo
Por fim, você pode instalar seu arquivo APK alinhado em seu dispositivo. Para fazer isso, você precisa habilitar a instalação de aplicativos de fontes desconhecidas nas configurações do seu dispositivo. Em seguida, você pode usar um aplicativo gerenciador de arquivos ou um comando adb para transferir e instalar o arquivo APK em seu dispositivo. Você deve ser capaz de instalá-lo sem erros.
Método 2: página alinhe o arquivo APK com a ferramenta zipalign e adicione o parâmetro -p
Este método envolve alinhar a página do arquivo APK com a ferramenta zipalign e adicionar o parâmetro -p ao recompilá-lo com Apktool. Isso pode resolver o problema se o seu dispositivo suportar o carregamento de bibliotecas nativas de arquivos APK, mas seu arquivo APK não estiver alinhado à página ou tiver bibliotecas nativas compactadas ou preenchidas.
Etapa 1: descompilar o arquivo APK com o Apktool
A primeira etapa é a mesma do método 1. Você precisa descompilar o arquivo APK com o Apktool usando o seguinte comando:
apktool d -f -o output_folder apk_file.apk
Passo 2: Recompile o arquivo APK com Apktool
A segunda etapa é um pouco diferente do método 1. Você precisa recompilar o arquivo APK com o Apktool usando o seguinte comando:
apktool b -f -o new_apk_file.apk -p output_folder output_folder
O parâmetro -p informa ao Apktool para usar a pasta de saída como uma pasta de estrutura. Isso garantirá que o Apktool não comprima ou preencha nenhuma biblioteca nativa no arquivo APK.
Etapa 3: alinhe a página do arquivo APK com a ferramenta zipalign e adicione o parâmetro -p
A terceira etapa também é diferente do método 1. Você precisa alinhar a página do arquivo APK com a ferramenta zipalign usando o seguinte comando:
zipalign -f -v -p 4096 new_apk_file.apk align_apk_file.apk
O parâmetro -p informa ao zipalign para alinhar a página de todo o arquivo APK, não apenas de arquivos individuais dentro dele. Isso garantirá que as bibliotecas nativas sejam armazenadas no arquivo APK sem preenchimento ou alinhamento.
Passo 4: Assine o arquivo APK com a ferramenta apksigner
A quarta etapa é a mesma do método 1. Você precisa assinar o arquivo APK com a ferramenta apksigner usando o seguinte comando:
apksigner sign --ks keystore_file --out assinado_apk_file.apk align_apk_file.apk
Etapa 5: instale o arquivo APK no seu dispositivo
A quinta etapa também é a mesma do método 1. Você precisa instalar o arquivo APK assinado em seu dispositivo após habilitar fontes desconhecidas nas configurações do dispositivo.
Método 3: Instale o pacote ia32-libs e atualize a versão do Apktool
Este método envolve a instalação do pacote ia32-libs e a atualização da versão Apktool em seu sistema Linux. Isso pode resolver o problema se você estiver usando um sistema Linux de 64 bits e tiver uma ferramenta aapt ausente ou desatualizada.
Etapa 1: instalar o pacote ia32-libs Passo 1: Instale o pacote ia32-libs em seu sistema Linux com o comando apt-get
Se você estiver usando um sistema Linux de 64 bits, pode ser necessário instalar o pacote ia32-libs para executar a versão de 32 bits da ferramenta aapt. Este pacote fornece algumas bibliotecas necessárias para executar aplicativos de 32 bits em um sistema de 64 bits. Para instalar o pacote ia32-libs, você precisa abrir uma janela de terminal e digitar o seguinte comando:
sudo apt-get install ia32-libs
Este comando instalará o pacote ia32-libs e suas dependências em seu sistema. Pode ser necessário digitar sua senha e confirmar a instalação.
Etapa 2: Baixe e instale a versão mais recente do Apktool em seu site oficial
Em seguida, você precisa baixar e instalar a versão mais recente do Apktool em seu site oficial. A versão mais recente do Apktool vem com a versão mais recente da ferramenta aapt, que pode corrigir alguns problemas com as bibliotecas nativas. Para baixar e instalar a versão mais recente do Apktool, você precisa seguir estas etapas:
Vá para o site oficial do Apktool e clique no botão Download
Selecione a versão mais recente do Apktool (por exemplo, apktool_2.6.0.jar) e salve-o no local de sua preferência
Renomeie o arquivo baixado para apktool.jar por conveniência
Mova o arquivo apktool.jar para a mesma pasta onde você tem seu arquivo APK
Baixe o script wrapper apktool do repositório GitHub e salve-o na mesma pasta que apktool.jar
Renomeie o arquivo baixado para apktool por conveniência
Torne o arquivo apktool executável digitando o seguinte comando na janela do terminal:
chmod +x apktool
Agora você instalou a versão mais recente do Apktool em seu sistema
Etapa 3: descompile, recompile, assine e alinhe o arquivo APK normalmente
A terceira etapa é semelhante ao método 1 ou método 2. Você precisa descompilar, recompilar, assinar e alinhar o arquivo APK normalmente usando as ferramentas Apktool, apksigner e zipalign. No entanto, você precisa usar o novo arquivo apktool que você instalou em vez do antigo.Por exemplo, para descompilar o arquivo APK com Apktool, você precisa digitar o seguinte comando:
./apktool d -f -o output_folder apk_file.apk
O resto das etapas são as mesmas do método 1 ou método 2.
Etapa 4: instale o arquivo APK no seu dispositivo
A quarta etapa também é semelhante ao método 1 ou método 2. Você precisa instalar o arquivo APK assinado e alinhado em seu dispositivo após habilitar fontes desconhecidas nas configurações do dispositivo.
Conclusão
Neste artigo, explicamos o que causa o erro "Falha ao extrair bibliotecas nativas, res=-2" ao instalar um arquivo APK modificado em seu dispositivo e como corrigi-lo usando três métodos diferentes. Esperamos que este artigo tenha ajudado você a resolver seu problema e aproveitar seu aplicativo modificado. Se você tiver alguma dúvida ou feedback, sinta-se à vontade para deixar um comentário abaixo.
perguntas frequentes
O que é um arquivo APK?
Um arquivo APK é um arquivo de pacote de aplicativo Android que contém todos os arquivos e recursos de um aplicativo Android. Você pode instalar um arquivo APK em seu dispositivo baixando-o de uma fonte confiável ou transferindo-o de seu computador.
O que é uma biblioteca nativa?
Uma biblioteca nativa é uma biblioteca que contém código escrito em linguagens nativas, como C ou C++. As bibliotecas nativas são usadas por alguns aplicativos Android para executar tarefas complexas ou intensivas que não podem ser feitas apenas pelo código Java.
O que é zipalign?
Zipalign é uma ferramenta que otimiza um arquivo APK alinhando seus arquivos em limites de 4 bytes. Isso pode reduzir a quantidade de RAM consumida por um aplicativo e melhorar seu desempenho.
O que é apksigner?
Apksigner é uma ferramenta que assina um arquivo APK com uma chave privada e um certificado. Isso garante que o aplicativo seja autêntico e não tenha sido adulterado.
O que é extractNativeLibs?
ExtractNativeLibs é um sinalizador que determina se as bibliotecas nativas devem ser extraídas de um arquivo APK ou não. Se definido como true, as bibliotecas nativas serão extraídas ExtractNativeLibs é um sinalizador que determina se as bibliotecas nativas devem ser extraídas de um arquivo APK ou não. Se definido como verdadeiro, as bibliotecas nativas serão extraídas e armazenadas no dispositivo. Se definido como falso, as bibliotecas nativas não serão extraídas e serão carregadas diretamente do arquivo APK. 0517a86e26
Comentarios