2017-11-16 1 views
0

Androidはアプリ全体で重複したライブラリを共有するために何かしますか? OSは重複したlibハッシュを検出して、アプリごとに別々のコピーを作成することを避けることができたようです。Androidアプリライブラリの効率

ユーザーが50個のアプリをインストールしていて、そのうちの多くにAndroidサポート、Kotlin、Guavaのバージョンがある場合、ディスク容量を節約する良い機会があります。

+0

ビルドプロセスの一部としてproguardを有効にしてapkを減らすこともできます。これは未使用のメソッドやクラスを削除するためです。 – petey

答えて

3

Androidはアプリ全体で重複したライブラリを共有するために何かしますか?

OSが重複LIBハッシュを検出し、各アプリケーションがデジタル署名されている各アプリ

ための別のコピーを避けることができると思われ、そうかどうかの決定ビルド時にライブラリをインクルードする必要はありません。あなたが望むものは、最初からこの能力を持つためにAndroidを「再調整」するために、タイムマシンが必要なように見えます。また、シナリオ別に異なるAPKエディションを配信するためには流通チャネルのサポートが必要です(新しいデバイスはAPKサンズライブラリを取得し、古いデバイスはライブラリとともにAPKを取得します)。

multidexおよびProGuardに関してこれがどのように機能するかも不明です。共有ライブラリのコピーは、ProGuardを使用してアイテムを削除したものではなく、完全なライブラリである必要があります。異なるアプリはライブラリの異なる部分を必要とするからです。これにより、通常は必要ない場所であっても、すべてのアプリにmultidexを使用させる可能性があります。

セキュリティはさらに問題になり始めます。共有ライブラリのコピーはどこから来ますか? 「よく知られている」ライブラリ(Kotlinランタイムなど)に限定したい場合は、おそらくGoogleが管理できるものです。しかし、「勝利の第一歩」のアプローチは、共有されるようになるライブラリの悪意のあるコピーを配布するアプリの幽霊を呼び起こす。

全体的に、あなたのアプローチは、1990年代の "DLL地獄"と2000年代の "JAR地獄"に対する強力な特徴を持っています。アプリ全体の共有ライブラリは、適切に管理するのが難しいです。

ユーザーが50個のアプリをインストールしていて、その多くにAndroidサポート、Kotlin、Guavaのバージョンがある場合は、ディスク容量を節約する良い機会になります。

グアバは、そのサイズのためにAndroid開発にあまり使われていません。 appcompat-v7の例外を除き、ほとんどのAndroidサポートライブラリはかなり小さいです。私は、これが思うほどのディスクスペースを節約し、その節約のコストが開発者の背中にかかることを避けるとは思わない。