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.

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.