アプリの更新で「更新」だけでなくアプリ全体がダウンロードされるのはなぜですか?


10

Android(またはiOS)でアプリを更新する場合、実際の「更新」だけではなく、アプリ全体がダウンロードされるのは奇妙です。

Windowsでアプリを更新しているときに、アプリ全体ではなく更新ファイルのみがダウンロードされるため、これが不思議に思う理由です。これにより、時間とデータ使用量の両方を節約できるため、より実用的です。

これはほとんど取るに足らないことのように思えますが、小さな機能の追加やバグの修正だけのために巨大なアプリをダウンロードする必要がある場合、それは本当のPITAになります。

このモデルが実装された理由について誰かが説明していますか?

回答:


13

私が知る限り、Jellybean 4.1以降の更新(「デルタ」と呼ばれます)のみをダウンロードします。明らかに、初期インストールは完全なアプリですが、更新は現在インストールされているバージョン(つまり、その「デルタ」)から変更されたデータのみをダウンロードします。ほとんどのアプリを更新しても何も変わらないように見えますが、アプリ全体をダウンロードしているように見えますが、一部の大きなアプリでは、ダウンロードの「ジャンプ」部分が差分を取得しているだけであるかどうかを確認できます。

EngadgetAndroidCentralの両方に、Playストアが差分更新を提供していることを示す記事があります


1
大きいアプリはどのくらい「大きい」のですか?ウサインボルトを手に入れるためだけに、Temple Run 2全体をダウンロードする必要があります。とにかく記事を共有してくれてありがとう。
Gh0sT 2013

よく分かりません。アスファルト6(少なくとも1 GB)のようなものについては、過去に変更をダウンロードしただけであることがわかっています。これは、大規模な更新にのみ適用されているか、またはデルタを生成できなかった可能性があります。テンプルラン2アップデートはなぜですか?特定のパーセンテージ未満が変更された場合にのみ、デルタを作成できます。(注:これはすべて私の考えです)
bmdixon 2013

デルタは瞬時ではありません。Playストアにプッシュされた直後に更新をダウンロードした場合、現時点では差分が生成されていない可能性があります。(推測)
MatthieuHarlé2013

4

Android開発者も同じことを考えていましたが、1行のコードを変更するのを忘れて、その1行が間違っていたためにアプリがログステートメントを左に吐き出したため、控えめに言ってもイライラしました。正しい。

この質問はSOで尋ねられましたが、ここでも話題になっているので、この質問はそのままにしておくべきだと思います。

SOの質問:https : //stackoverflow.com/questions/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

Androidデベロッパーとして、私の推測ではソフトウェアのパッケージ方法を推測する必要があります。すべてのAndroidアプリはと呼ばれる圧縮ファイルにパックされます.apk。このファイルには、アプリを機能させるために使用されるすべてのコード、レイアウトファイル、画像が含まれています。特に圧縮されている場合、ファイルの一部だけを更新するのは難しいです。開発者がProGuardのようなセキュリティ機能を有効にしている場合、パッチを実装するのはほとんど不可能です。

Googleにも、パッチを許可しないことのセキュリティ上の理由があったと思います。コードパッチは、予期しないセキュリティホールや脆弱性を残す傾向があります。


2
約半年前にAFAIKデルタ更新がGPlayに導入されました。そして、はい、バイナリ差分のようなものもあります。基本的には、.apkバージョンを比較して必要なデルタを作成するために、単にをGoogleサーバーに解凍することもできます。実際にどのように行われているかはわかりませんが。
イジー

私はこれに非常に興味があります。開発者としてこれをオプトインする必要がありますか、それともGoogleがこれを管理しますか?
ジョン

1
@John Googleが自動的に実行します。開発者がアクションを実行する必要はありません。
onik 2013

-1

基本的に、Androidアプリケーションパッケージファイル(* .apk)ファイルは、アプリのコードを公開する準備ができた後に作成されます。このファイルは、コンパイルとビルドの後に、DALVIK変換プロセスから作成されます。

このファイルには、画像、音声、レイアウト、クラスなどのすべてのリソースが含まれています。

そして、Windowsに関する限り、.NETフレームワークとLinuxフレームワークはどちらも異なる方法で機能します...

特定のコードのみを置き換えたい場合は、Androidで行うことができますが、セキュリティのために、そのアプリに再度署名する必要があります。

DALVIKは不可逆的なプロセスであるため、新しい機能が追加された場合、古いバージョンはそれを知らずにどのようにアクセスしますか?

これが、アプリが正しく機能するようにアプリ全体を更新する必要がある理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.