Por que as atualizações de aplicativos fazem o download do aplicativo inteiro em vez de apenas "atualizações"?

10

Acho bastante estranho que, para atualizar um aplicativo no Android (ou até no iOS), o aplicativo inteiro seja baixado em vez de apenas as "Atualizações" reais.

A razão pela qual acho isso estranho é que, no Windows, durante a atualização de um aplicativo, apenas os arquivos de atualização são baixados - não o aplicativo inteiro - o que é mais prático, pois economiza tempo e uso de dados.

Isso parece trivial para a maioria, mas quando você precisa baixar um aplicativo enorme apenas para uma pequena adição de recurso / correção de bug, ele se torna uma verdadeira PITA.

Alguém tem uma explicação sobre por que esse modelo foi implementado?

Gh0sT
fonte

Respostas:

13

Tanto quanto sei, faça o download apenas das atualizações (conhecidas como "delta") no Jellybean 4.1 e acima. Obviamente, a instalação inicial é o aplicativo completo, mas as atualizações baixam apenas os dados que foram alterados a partir da versão instalada atual (ou seja, o "delta" dela). Você não verá nada diferente ao atualizar a maioria dos aplicativos; ainda assim, parece que está baixando o aplicativo completo, mas em alguns aplicativos maiores, você verá 'pular' partes do download, o que indica que ele está apenas obtendo o delta.

O Engadget e o AndroidCentral têm artigos indicando que a Play Store fornece atualizações delta

bmdixon
fonte
11
Quão grande é o aplicativo maior? Quero dizer, ainda preciso baixar o Temple Run 2 inteiro apenas para ter Usain Bolt! De qualquer forma, obrigado por compartilhar os artigos.
precisa saber é o seguinte
Não tenho certeza. Eu sei que, para algo como o Asphalt 6 (que é pelo menos 1 GB), ele só baixou as alterações no passado.Pode ser que ele seja aplicado apenas a grandes atualizações ou talvez não tenha sido possível gerar o delta para a atualização do Temple Run 2 por algum motivo? Eles só podem criar o delta quando menos de uma determinada porcentagem for alterada. (. NB Tudo isso é apenas o meu pensamento)
bmdixon
Delta não é instantâneo. Se você baixar a atualização logo após ela ter sido enviada à Play Store, o delta pode não ter sido gerado por enquanto. (apenas um palpite)
Matthieu harle
4

Como desenvolvedor do Android, eu pensei a mesma coisa, foi frustrante dizer o mínimo, porque uma vez eu esqueci de alterar uma linha de código e saiu com essa linha errada, o que fez com que o aplicativo cuspisse as instruções de log restantes e direita.

Esta pergunta foi feita no SO, mas também é um tópico aqui e acho que essa pergunta deve permanecer.

Pergunta do SO: /programming/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

Como desenvolvedor Android, meu palpite deveria ser o modo como o software é empacotado. Todo aplicativo Android é compactado em um arquivo compactado chamado an .apk. Este arquivo contém todo o código, arquivos de layout e imagens usados ​​para fazer o aplicativo funcionar. É meio difícil atualizar apenas parte de um arquivo, especialmente quando ele está compactado e se o desenvolvedor tiver recursos de segurança ativados como o ProGuard, seria quase impossível implementar um patch.

Tenho certeza que o Google também teve alguns motivos de segurança para não permitir patches. Os patches de código tendem a deixar falhas e vulnerabilidades imprevistas de segurança.

John
fonte
2
As atualizações delta do AFAIK foram introduzidas no GPlay há cerca de meio ano. E sim, também há algo como diferenças binárias. Basicamente, .apkele também pode ser descompactado nos servidores do Google para comparar entre versões e criar os deltas necessários. Embora eu não saiba como é realmente feito.
Izzy
Estou muito interessado nisso agora, você tem que optar por isso como desenvolvedor ou o Google gerencia isso para você?
John
11
@John Google faz isso automaticamente, nenhuma ação precisa ser tomada pelo desenvolvedor.
Onik
-1

Basicamente, o arquivo do pacote de aplicativos para Android (* .apk) é criado após o código do aplicativo estar pronto para publicação. Esse arquivo é criado após a compilação e a criação e pelo processo de conversão do DALVIK,

Este arquivo contém todos os recursos, como imagens, áudio, layouts, classes,

E, no que diz respeito ao Windows, os frameworks .NET e Linux funcionam de maneira diferente ...

Se você deseja substituir apenas um determinado código do Android, é possível fazê-lo no Android, mas por segurança, é necessário assinar o aplicativo novamente.

O que o DALVIK faz é um processo irreversível, portanto, se uma nova função for adicionada, como a versão antiga o acessará sem saber?

Por isso, é necessário atualizar o aplicativo inteiro para que ele funcione e funcione corretamente.

Amit Modak
fonte