Como as atualizações de apps funcionam

Este guia explica como a Plataforma Android e o Google Play lidam com atualizações de apps e aborda diversas opções para desenvolvedores que publicam em várias app stores.

Como o Android lida com as atualizações de apps

Todo app Android tem um ID do aplicativo exclusivo que se parece com um nome de pacote Java ou Kotlin, como com.example.myapp. Esse ID identifica exclusivamente cada app no dispositivo. Os dispositivos Android só podem ter um app com um determinado ID do aplicativo instalado por vez.

Para uma atualização ser aceita pela Plataforma Android, as seguintes condições precisam ser atendidas:

  • O ID do aplicativo da atualização precisa ser igual ao do app instalado.
  • O certificado de assinatura da atualização precisa ser igual ao do app instalado ou conter uma prova de rotação válida.
  • O código de versão da atualização precisa ser maior ou igual ao código de versão do app instalado.
  • Em alguns casos, o usuário precisa aceitar a atualização.

Não há prevenção integrada contra diferentes instaladores que atualizam um app quando as atualizações têm o mesmo certificado de assinatura e um código de versão igual ou maior.

Para instalar um app que não atende às condições acima, o usuário precisa primeiro desinstalar a versão atual, o que apaga todos os dados do app do dispositivo.

Como o Google Play atualiza os apps

A abordagem do Google Play para a atualização de apps é baseada nos seguintes princípios:

  • Manter os usuários atualizados. É recomendado manter os apps atualizados para os usuários se protegerem contra problemas de segurança e aproveitarem as melhorias mais recentes de recursos.
  • Respeitar a escolha do usuário. O Google Play atualiza apps associados a contas de usuários com base nas preferências de atualização escolhidas, como a permissão ou o bloqueio do uso de dados limitados.
  • Respeitar a escolha do desenvolvedor. O Google Play usa as opções de configuração dos desenvolvedores para determinar as atualizações de apps.
  • Evitar desperdiçar recursos. Economize a duração da bateria otimizando o momento de download das atualizações e minimize o uso de dados usando técnicas como a compactação e aplicação de patch.

O Google Play atualiza um determinado app instalado em um dispositivo se ele atende às seguintes condições:

  • O app é publicado no Google Play com o mesmo ID do aplicativo.
  • O certificado de assinatura do app publicado corresponde ao da versão atualmente instalada ou contém uma prova de rotação válida.
  • O app faz parte da biblioteca do usuário ou foi pré-carregado por um OEM.
  • O app está disponível para esse usuário e dispositivo, de acordo com as opções de segmentação definidas pelo desenvolvedor.
  • O app instalado está desatualizado, em comparação com a versão disponível no Google Play.

Se essas condições forem atendidas, o Google Play vai atualizar o app. As subseções abaixo dão detalhes sobre algumas das condições listadas.

Há outras vezes em que o Google Play faz o download do conteúdo do app ou realiza a manutenção em binários do app em nome do desenvolvedor sem alterar o código de versão do Android, por exemplo, ao concluir downloads parciais ou download de divisões sob demanda.

Publicado no Google Play

O Google Play usa o ID do aplicativo para identificar exclusivamente os apps publicados na plataforma. Essa condição será atendida se o ID do app instalado for igual ao do app publicado no Google Play.

Parte da biblioteca do usuário

Essa condição será atendida se uma das seguintes condições for verdadeira:

  • Uma Conta do Google ativa no dispositivo já adquiriu o app tocando no botão "Instalar" ou "Comprar" no Google Play.
  • O OEM pré-carregou o app como parte da imagem do sistema.

Os usuários também podem remover apps manualmente das bibliotecas deles.

Desatualizado

O Google Play determina se um app instalado em um dispositivo está desatualizado, analisando o código da versão. Se a versão disponível para download no Google Play tiver um código de versão maior do que a instalada, o Google Play vai considerar o app instalado como desatualizado.

Apps em várias app stores

Há algumas maneiras de controlar as atualizações em várias lojas ao publicar em diversas app stores. As seções abaixo abordam essas opções e os possíveis benefícios e desvantagens.

Impedir atualizações em várias lojas

É recomendado impedir que cada app store faça atualizações no seu app em várias lojas. Você poderá escolher fazer isso se o conteúdo do app for diferente em cada app store. É possível realizar isso publicando o app com dois IDs de aplicativo diferentes ou com o mesmo ID do aplicativo e duas chaves de assinatura diferentes.

Se você quiser minimizar a reutilização da chave de assinatura para reduzir o risco de comprometimento, use uma chave de assinatura do app diferente para cada app store. Isso impede as atualizações em várias lojas.

Seja qual for a abordagem escolhida, o Android trata os apps sem IDs e chaves de assinatura correspondentes como incompatíveis. Um usuário que quer mudar de uma loja para outra precisa excluir o app instalado, o que remove todos os dados associados a ele, e reinstalar de outra loja.

Permitir atualizações em várias lojas

É possível permitir que o app possa ser atualizado por várias app stores diferentes. Você pode decidir fazer isso se distribui seu app com o mesmo conteúdo em todas as app stores e quer priorizar a atualização dos usuários. Desde que você use o mesmo ID do aplicativo e chaves de assinatura em todas as app stores em que publica o app, cada app store pode atualizar as instalações do seu app, independente de onde o usuário fez o download.

No entanto, isso pode gerar um comportamento imprevisível para os usuários, dependendo de como cada app store implementa as atualizações de apps em várias lojas. Por exemplo, um usuário pode desativar as atualizações de uma loja, sem perceber que outra loja pode continuar a oferecer atualizações.

Se você permitiu atualizações em várias lojas, mas quer começar a preferir uma fonte de atualização específica quando ela estiver no dispositivo, é possível lançar o app com um código de versão maior na app store preferida e continuar a lançar com códigos menores em outras app stores. Depois que a atualização do maior código de versão da fonte preferencial for instalada, as outras app stores não vão poder fazer atualizações nesse dispositivo.