Como faço para lidar com o código de erro de instalação desconhecido -505?

9

Eu tenho um Nexus 7 e ele acabou de ser atualizado para o Android 5.

Dois aplicativos me causam problemas após a atualização do sistema, jogos que meus filhos jogam. Maneiras mudas de morrer e VVVVVV. Ambos tinham ícones após a atualização, mas quando clicados, um pop-up apareceu dizendo "Aplicativo não instalado". Eu tento instalá-los. O download está bom. A instalação começa. E então uma mensagem de erro:

Código de erro desconhecido durante a instalação do aplicativo: "-505"

O mesmo erro exato para os dois aplicativos. Reiniciei o dispositivo sem sucesso.

Eu não tenho idéia do que fazer em seguida. Por favor, uma alma amável poderia me dar conselhos sobre como eu poderia resolver esse problema.

David Heffernan
fonte

Respostas:

10

TL; DR

Esse problema ocorre quando um aplicativo está tentando declarar novamente uma permissão existente, com mensagem de erro INSTALL_FAILED_DUPLICATE_PERMISSION. Isso afetou principalmente os aplicativos baseados no Adobe AIR (prefixo do pacote com com.air). A principal causa é a implementação de código diferente no Lollipop 5.0 ao verificar a assinatura de um certificado usada para assinar um aplicativo. Para a solução, pule para a parte "Solução".

Atualização : o Google corrigiu esse problema no Lollipop 5.0.1.


Detalhes técnicos

Trechos do rastreador de problemas do Android L Developer Preview, vinculado a uma entrada no rastreador de problemas do AOSP ,

Postagem nº 4 :

O logcat me diz que há um conflito com a redeclaração de permissões durante a instalação (no meu caso, a Amazon está tentando redeclarar getui.permission.GetuiService, que já é de propriedade da Câmera 360)

LogCat da publicação # 12 :

10-25 08:06:37.805   749   824 W PackageManager: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 D Finsky  : [1] PackageInstallerImpl.cancelSession: Canceling session 121130466 for com.tencent.mm
10-25 08:06:37.926  4812  4812 E Finsky  : [1] PackageInstallerImpl.handleCommitCallback: Error -505 while installing com.tencent.mm: INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 W Finsky  : [1] 4.installFailed: Install failure of com.tencent.mm: -505 null
10-25 08:06:37.933   749   749 D ZenLog  : intercepted: 0|com.android.vending|-973170826|null|10017,!priority
10-25 08:06:37.933   749   749 V NotificationService: pkg=com.android.vending canInterrupt=false intercept=true
10-25 08:06:37.964  4812  4812 D Finsky  : [1] InstallerTask.cancelCleanup: Cancel running installation of com.tencent.mm

Trechos do rastreador de problemas do AOSP ,

Post # 4

Na API19, o novo X509CertImpl (encCert) agrupa o certificado (que já está analisado e pronto para computação SHA1), enquanto na API 21, o certificado é encaminhado como fluxo de bytes, analisado novamente e processado por uma fábrica de certificados. Qual fábrica depende do contexto. No caso dos dispositivos L em que testei, a fábrica criará um certificado OpenSSLX509. Infelizmente, há algo em nosso certificado com o qual o openssl tem problemas e a impressão digital é alterada durante o processamento do openssl. Também posso reproduzir isso com a ferramenta openssl, quando converto nosso certificado em outro formato (por exemplo, PEM).

Se o SHA1 fosse computado diretamente em 'encCert.getEncoded ()', estaria correto nos dois casos.


Solução

Atualização : a partir de 04/12/2014, o Google corrigiu esse problema no Lollipop 5.0.1. Para aqueles que não fizeram nenhuma solução alternativa tentando reinstalar o aplicativo, você pode exibir a imagem do Lollipop 5.0.1 quando estiver pronta / aguardar a OTA.

Post # 20, # 21

Parece que isso foi corrigido no 5.0.1:

https://android.googlesource.com/platform/libcore/+/6632d8c9d8d1a3ac338d541676148677641bafe3

https://android.googlesource.com/platform/frameworks/base/+/32a22c44b8351c1cccd3a1f9c47a33469d9378e0

Status: Lançado

Nota do Committer

Recupere aplicativos com certificados malformados.

Houve uma janela de tempo no Lollipop em que persistimos os certificados depois que eles passaram por um ciclo de decodificação / codificação. A bem-escrita biblioteca OpenSSL era liberal ao decodificar (permitindo a análise de documentos ligeiramente malformados), mas depois rigorosa ao codificar, fornecendo-nos bytes diferentes para efetivamente o mesmo certificado.

Uma alteração de libcore relacionada (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) agora retorna os bytes originais literalmente, corrigindo as instalações e instalações pré-pirulito após essa alteração.

Essa alteração recupera todos os aplicativos que foram instalados durante o período de tempo descrito acima, fazendo uma verificação única para verificar se os certificados são efetivamente iguais.


Consulte a revisão mais antiga para outras soluções sugeridas.

Andrew T.
fonte
Eu tenho o mesmo que David: nada para desinstalar do dispositivo, o ADB não vê meu dispositivo, as tentativas de instalação novamente resultam em -505 do Google Play e um erro não descritivo quando instalado no APK local. Mudar para Convidado também não é útil.
Roman R.
2
Bem, acabei de perceber que também enfrentava esse problema. Desinstalei os aplicativos problemáticos com êxito adb, mas não consegui reinstalá-lo. Observe que o aplicativo que eu quero instalar tem air.comprefixo como o nome do pacote. Parece que esse é mais um problema entre o Google, o Adobe Air e os desenvolvedores de aplicativos. Até que pelo menos um deles o conserte, o aplicativo não poderá ser instalado. Marquei o problema com estrela para receber atualizações do Google.
Andrew T.
3
Estou tendo o mesmo erro no 5.1.1 (cyanogenmod 12.1 galaxy s3 mais recente todas as noites). De alguma forma, eles tinham código antigo ou esse é um bug mais recente?
Ike
11
Estou tendo esse problema no Android 6.0 Marshmallow. Havia alguma solução para isso ou apenas aguardava uma OTA?
Ben
2
@ Ben, este post menciona os problemas com INSTALL_FAILED_DUPLICATE_PERMISSION, que foi corrigido com 5.0.1. Eu recebi esse erro com o Marshmellow, devido a INSTALL_FAILED_CONFLICTING_PROVIDER. Eu uso o provedor da caixa de diálogo Compartilhar no Facebook SDK, que foi declarado nas versões de depuração e versão, impedindo a instalação da versão na Google Play Store. Você pode ver a mensagem exata navegando pelo seu adb logcat. No meu caso, eu escolhi renomear o <provider> do meu depurador através do uso de manifestPlaceholders no nome do meu provedor.
Mike Lambert