“Erro de análise: há um problema ao analisar o pacote” ao instalar o aplicativo Android

104

Recebi este erro ao instalar o aplicativo Android ( Parse Error : There is a problem parsing the package.). Eu fiz as seguintes etapas.

  1. Primeira vez que instalei o aplicativo e ele funciona bem.

  2. Fiz alterações no aplicativo existente e alterei a versão não no arquivo Manifest.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. Em seguida, exporto o aplicativo e termino o processo de assinatura do código. Para isso, clique com o botão direito do mouse no nó do projeto> selecione Exportar. Lá você verá um assistente. Siga os passos e conclua a assinatura do código também.

  4. Peguei o arquivo ARDemo.apk, então mudei seu nome para ARDemo1.apk

  5. Então enviei este arquivo apk para o cartão SD do celular e iniciei a instalação, obtive o erro acima.

Eu pesquisei, eles dizem que o problema com o arquivo de manifesto de descompactação.

Alguém pode me dizer o que pode haver de errado comigo?

Raghu
fonte
você deve colocar o número da versão em três. consulte o tutorial japonês no site
Oi Ejder, Obrigado pela sua resposta. Meu problema já foi corrigido. Meu erro é "Eu mudei o nome do arquivo apk manualmente". Acima de 2 está o código da versão do meu aplicativo, não o valor de minsdk. Coloquei o valor de mindk em 3. Obrigado e cumprimentos, Raghavendra K
Raghu
4
apenas pensando por que renomear se tornou um problema?
Mikey
Olá Mike, mudei o nome após exportar. É por isso que está dando erro. Se especificarmos um nome diferente ao exportar, isso não será um problema para mim.
Raghu
1
Olá Cru, Mudar a versão não não criou este problema. Renomeei o arquivo apk depois de exportar. Isso cria esse problema.
Raghu

Respostas:

49

Você disse que a primeira vez que instalou o aplicativo funcionou bem.

A única diferença nas etapas que você descreveu entre as duas versões são:

  1. O número da versão (presumo que isso não tenha contribuído para quebrar nada)
  2. O código
  3. O nome do arquivo .apk

Tente renomear o arquivo ARDemo1.apk de volta para ARDemo.apk (certifique-se de fazer backup da versão anterior) e veja se isso ajuda. Meu palpite é que tem algo a ver com o nome do apk.

Se ainda não funcionar, você pode eliminar o nome do arquivo apk como a fonte do problema e começar a investigar 2) reconstruindo sua versão antiga e ver se você tem o mesmo problema novamente. Se o problema não existir com a versão reconstruída de seu código antigo, você sabe que deve haver algo a ver com seu código.

Espero que isso leve você a algum lugar.

Saúde, Joseph

user175750
fonte
Olá Joseph, seu palpite está correto. Eu renomei o arquivo apk para um anterior. Funciona ... Muito obrigado por sua ajuda ...
Raghu
Olá, estou enfrentando um problema semelhante. Estou baixando o aplicativo de um link da web. Ele se encaixa perfeitamente no SDCard móvel. Mas quando estou tentando instalar ele mostra este erro. Não assinei meu aplicativo, basicamente sou um novato no desenvolvimento de aplicativos Android. Ajuda de qualquer tipo é apreciada :)
varunrao321
2
Enfrentei problema semelhante e o caso era versão mínima do SDK em arquivo .gradle. Pense nisso e na versão do seu dispositivo e isso será útil.
user2881604
Sim, você está correto que era o problema do nome do arquivo apk ...!
Arsal Imam
Eu renomei o arquivo apk e ele parse errorse foi, mas ao tentar instalá-lo agora, ele me mostra App not installedque estou usando um dispositivo marshmallow e talvez seja o mesmo que o problema aqui stackoverflow.com/questions/33930223/…
natsumiyu
45

A instalação pode dar o erro especificado pelo menos nos seguintes casos:

  • O nome do pacote é alterado após a assinatura : use o nome exato do pacote assinado (em vez disso, ajuste o nome no manifesto)
  • O pacote é compilado em um nível de API superior : Corrija o nível de API no arquivo Manifest
  • O pacote é executado a partir do cartão SD : Execute (instale) o arquivo apk da memória do telefone OU use o comando adb para instalá-lo
jmu
fonte
Acho que existem outras condições que podem fazer isso acontecer. Por exemplo, veja meu comentário sobre a resposta de kansasian abaixo sobre como receber essa mensagem de erro ao instalar por e-mail.
M Katz
Melhor resposta aqui. Para mim foi mudar o nome do pacote depois de assinado. Muito obrigado.
Jannie Theunissen
estou supondo que você precisa ter um telefone rooteado para poder instalá-lo usando adb installcerto?
abbood de
Não: o enraizamento não é necessário - você pode precisar habilitar fontes desconhecidas nas configurações de segurança. (não confirmado)
jmu
Fontes desconhecidas E depuração usb ... nota: no Windows 8 às vezes ele não reconhece o telefone no modo MTP, apenas PTP ...
SparK
22

Eu só vi o erro de análise quando a versão do Android no dispositivo era inferior à versão para a qual o aplicativo foi compilado. Por exemplo, se o aplicativo for compilado para o sistema operacional Android v2.2 e seu dispositivo tiver apenas o sistema operacional Android v2.1, você receberá um erro de análise ao tentar instalar o aplicativo.

Sir Scalawag
fonte
Fui atingido por isso há um tempo, demorei muito para descobrir!
olafure
14

O motivo é que o apk não está assinado. Assim que o apk for assinado, o problema será resolvido. http://ionicframework.com/docs/guide/publishing.html Use o link nas instruções para assinar o apk.

Shivendra
fonte
Mesmo problema aqui. Depois de assinar o apk, ele funcionou conforme o esperado.
Dino Tw
3
Este foi um problema para mim com as compilações do Xamarin para Android - ele primeiro cria um APK no Archive Manager que não tem assinatura. Você deve então escolher "Distribuir" para criar um APK assinado que possa ser instalado.
dodgy_coder
Somando-se ao que dodgy_coder escreveu: para Xamarin.Android 7 ou superior ou versões anteriores .
Veverke,
13

Em vez de atirar no escuro, descubra o motivo desse erro instalando-o por meio de adb:

adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk

Substitua emulator-5555pelo nome do seu dispositivo. Você pode obter uma lista usando:

adb devices

Se falhar, dará um motivo. Motivos comuns e suas correções:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Referência
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Referência
Veneet Reddy
fonte
O que eu faço se der certo?
Jacob Sánchez de
1
Isso me ajudou muito. Obrigado!
Tgo1014
7

Verifique se o seu dispositivo suporta a versão que você especificou em minSdkVersion em AndroidManifest.xml. Se não, especifique a versão inferior e tente novamente

Mohammed Irfan Tirupattur
fonte
6

Se você estiver compilando e exportando seu arquivo apk no SDK versão 2.1, ele não funcionará em nenhuma versão do Android abaixo da exportação do SDK "2.1". O software Android é compatível com versões anteriores e não compatível com versões anteriores. Por exemplo, se você estiver programando usando o pacote android NDK (ann add-on para android SDK) que permite o desenvolvimento na família C / C ++, isso só é compatível com android 2.3, android versão 2.2 e versões anteriores. Portanto, você receberá o erro "Há um problema ao analisar o pacote".

Mike
fonte
3

Outra possibilidade é que você tenha salvo o arquivo apk na pasta PRIVATE do aplicativo e tente instalá-lo (iniciando um intent a partir do seu código). neste caso, ao iniciar o intent, você obtém o pacote de análise de erros. Nesse caso, o erro levantado é sobre problemas de permissão. A questão é que salvar o arquivo em pastas privadas não é uma boa prática, entretanto, se você realmente quiser fazer isso, deverá gravar o arquivo em MODE_WORL_READABLE ao baixá-lo. Considere que MODE_WORLD_READABLE está obsoleto e esta solução não é a melhor, pois tem alguns problemas de segurança. O melhor é salvar seu arquivo em um armazenamento externo.

MojAmiri
fonte
3

Não estou repetindo o que é instruído aqui para inserir o armazenamento de chaves, a senha, etc.

Construir -> Gerar APK assinado -> [Entrada] --- Próximo ---> selecione AMBOS

  • V1 (assinatura do jar)
  • V2 (assinatura completa do APK)

Não sei por que, mas pelo menos funcionou na minha situação.

JeffNhan
fonte
1
Funcionou para mim. Não foi verificado no Android Studio MacOS por padrão.
vojta de
2

Recebi o mesmo erro (Erro de análise, há um problema ao analisar o pacote) ao tentar instalar um pacote .apk do e-mail. Consegui contornar o problema instalando o instalador de pacote de terceiros ApKatcher:

http://www.addictivetips.com/mobile/install-android-apps-from-gmail/

ApKatcher não é a única solução. Um colega meu contornou o problema instalando o Astro File Manager.

Você pode encontrar os dois aplicativos no Android Marketplace.

kansasian
fonte
Para adicionar outro ponto de dados aqui, eu também estava recebendo este erro ao instalar por e-mail, mas ele instalou bem quando usei um cabo e adb para instalar o mesmo pacote. Infelizmente eu estava tentando instalar via yahoo mail, então não acho que o ApKatcher poderia ajudar.
M Katz
1

Problema semelhante, usando este código "emprestado" e ligeiramente modificado:

                Intent intent = new Intent(Intent.ACTION_VIEW);
                File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk");
                intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                result = true;

Necessário alterar a criação do arquivo para este (vírgula em vez de sinal de mais no construtor de Arquivo, faltava '/' após o diretório de download):

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");
William T. Mallard
fonte
1

Eu tinha um par de tags incorreto em meu arquivo de manifesto.

<meta-data>
</meta-data>

Basicamente entrei quando copiei um meta-datacódigo de amostra ruim do arquivo pdf payu. Porcaria.

Siddharth
fonte
1

Um dos motivos pode ser que o nome da sua atividade não está definido no manifesto

    <activity
          android:name=""
          ...>
</activity>

o código acima estava criando o mesmo problema comigo

Abhishek
fonte
1

Outro problema que causa esse erro pode ser a instalação do APK de um ponto de montagem de cartão SD restrito /mnt/media_rw/MicroSD.

Use um ponto de montagem irrestrito /Removable/MicroSD.

Honza
fonte
1

E apenas para ajudar possíveis novos leitores, outro motivo pode ser erros no arquivo de manifesto. Eu tinha digitado incorretamente android:servicecomo android.servicee correu para o mesmo erro ...

MortenSickel
fonte
1

Conforme mencionado por @Veneet Reddy, instale-o via ADB.

Vá para ADT Bundle / sdk / platform-tools após seu .apkarquivo e execute o prompt de comando como administrador.

Em seguida, execute o adb devicescomando que listará os dispositivos conectados ou emuladores que estão em execução.

insira a descrição da imagem aqui

Então corra adb -s yourDeviceID install yourApk.apk

insira a descrição da imagem aqui

Nota: desinstale o aplicativo se você já tiver instalado antes de instalar novamente.

Maomé
fonte
0

Para qualquer outra pessoa com esse problema, a única vez em que recebi esse erro foi quando a versão da API em sua configuração do Android Build não corresponde ao que está no dispositivo físico.

Vá para o Eclipse e clique com o botão direito em seu projeto e vá para propriedades. Selecione Android - QUE O TRAZ PARA O ANDROID BUILD TARGET. Ajuste seu alvo para combinar com o dispositivo e veja se isso resolve o problema.

j2emanue
fonte
0

Eu tive esse problema, mesmo quando especifiquei a versão correta do minSDK e do targetSDK. Meu problema era que eu estava usando "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"na atividade do launcher, no dispositivo Jellybean. Quando removi esse atributo, funcionou.

user1035292
fonte
0

Como algumas das outras respostas mencionaram, pode haver problemas ao instalar a partir do cartão SD. No meu caso, eu estava distribuindo meu aplicativo via anexo de e-mail e geralmente funcionava bem. Basta abrir o e-mail e baixar o anexo (aparentemente vai para o cartão SD) e clicar nele novamente e ele será instalado.

Mas um dia não funcionou, e descobri que era porque eu tinha o telefone conectado ao meu PC de desenvolvimento via USB e isso colocava o cartão SD em um modo diferente ou algo assim. Então a solução foi simplesmente desconectar o telefone do PC e enviar o e-mail novamente e baixar o anexo novamente. Ou então coloque a conexão USB no modo "carregamento apenas" para que o cartão SD não seja "conectado" ao PC.

RenniePet
fonte
0

Você também pode querer verificar os registros no dispositivo para ver se é algo simples, como um problema de permissões. Você pode verificar os registros usando adbum computador host / de depuração:

adb logcat

Ou se você tiver acesso ao console (ou ao usar o Android-x86, obtenha o console digitando Alt+ F1), então você pode verificar os logs usando o logcatcomando:

logcat
Pierz
fonte
0

Tive o mesmo problema ao usar o arquivo apk exportado de android‌ Tools > Export. Em vez disso, usei o arquivo apk na pasta bin e funcionou!

O arquivo PS apk na pasta bin é criado após a primeira vez que você executa o aplicativo no eclipse.

Ali Sheikhpour
fonte
0

use-o dentro de build.gradle (Módulo: app)

 minSdkVersion 14
    targetSdkVersion 28
SHUBHASIS MAHATA
fonte
Você deve explicar por que as versões mínimas 14 e 28 são direcionadas. Verifique também sua formatação;)
m02ph3u5
0

Eu tive esse problema Parse Error : There is a problem parsing the package. que estava testando no Android-8. Eu tenho o mesmo apk com a mesma assinatura. Tudo era o mesmo sem o número da versão e o nome da versão. O aplicativo estava sendo instalado quando eu o instalei manualmente, mas este erro ocorreu quando eu estava baixando e instalando as atualizações programaticamente. Então encontrei a causa do meu problema.

Havia uma opção para verificar canRequestPackageInstalls () Quando esse método retorna verdadeiro, o aplicativo foi instalado com sucesso. Estava voltando falso sempre no meu caso.

Então, primeiro eu verifico isso e, em seguida, deixo o usuário baixar e instalar as atualizações.

Em onCreate ()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            if (!packageManager.canRequestPackageInstalls()) {
                    startActivityForResult(
                        Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                            Uri.parse(String.format("package:%s", packageName))
                        ), requestCodeqInstallPackage
                    )
                } else {
                    canInstallPackage = true
                }

        }

Em onActivityResult ()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                if (packageManager.canRequestPackageInstalls()) {
                    canInstallPackage = true
                }
            } else {
                canInstallPackage = false
                Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                    .show()
            }
    }

Então, quando precisar instalar a atualização, então-

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   if(canInstallPackage){
      doInstallAppProcess()
   }else{
        // generate error message
   }
}

Espero que ajude alguém.

Rasel
fonte
-1

Estou recebendo a mesma mensagem de erro “Erro de análise: há um problema ao analisar o pacote” com meus APKs assinados, mas suspeito que pode ser causado por diferentes motivos.

Para testar isso, fiz o seguinte:

Configuração do Windows 8.1 Eclipse ADT Build: v22.6.2-1085508

Eu gerei um novo aplicativo Helloworld típico aceitando todos os padrões.

Executei o aplicativo em um emulador e dispositivo live com sucesso.

Em seguida, fiz o sideload e instalei o apk no meu dispositivo live e o executei com sucesso.

Ele gerou um apk na pasta bin com um tamanho de 782 KB.

Em seguida, exportei o aplicativo Helloworld para a mesma pasta bin, assinando o aplicativo do meu armazenamento de chaves, que foi usado com sucesso no passado para promoção ao Google Play.

Ele criou um APK com um tamanho de 385 KB (substituindo o apk original).

Fiz o sideload do apk para o meu dispositivo e quando fui instalá-lo recebi o erro “Erro de análise: há um problema ao analisar o pacote” (este é o mesmo pacote que foi sideloaded e instalado quando feito como um formulário não exportado).

William Bell
fonte