5

私はライブラリの依存性がAPKのサイズを増やすのですか?

dependencies { 
    compile files('libs/universalloaderlibrary.jar') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.android.support:design:22.2.1' 
    compile 'com.android.support:recyclerview-v7:22.2.1' 
    compile 'com.android.support:cardview-v7:22.2.1' 
    compile 'de.hdodenhof:circleimageview:1.3.0' 
    compile 'com.jakewharton:butterknife:7.0.1' 
    //noinspection GradleCompatible 
    compile 'com.google.android.gms:play-services-gcm:7.3.0' 
    compile 'com.github.castorflex.smoothprogressbar:library:1.1.0' 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'com.loopj.android:android-async-http:1.4.8' 
    compile 'com.android.support:multidex:1.0.1' 
} 

や他のライブラリのように私のプロジェクトで複数のライブラリを持っています。 アプリのサイズを大きくしすぎますか?私は私のプロジェクトに25以上の図書館を持っています。現在、APKのサイズは11 MBで、その中にさらに機能を追加する必要があります。 理由は何でしょうか?

私はこれに関していくつか質問があります。

どのようなメモリが必要ですか?

  1. モジュールをプロジェクトに追加しました。
  2. ファイルがJARファイルとして追加されました。
  3. compile 'com.android.support:appcompat-v7:22.2.1'のように追加します。

Proguardを有効にすると、minifyEnabledをtrueに設定すると、アプリのサイズを縮小できます。

buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
} 

画像の背後ではどのように機能しますか?

プロジェクトで複数のライブラリを使用しないでください。

APKサイズを縮小するために多くの疑問があります。 何か提案や助けがあれば、それは相当なものです。 ありがとうございました。

答えて

6

これらのメソッドのすべての3つは、あなたのAPKのサイズが大きくなりますが削除することができます。それらの違いは、ソースコードがどこにあるかです。

  • モジュール依存関係は、ローカルマシン上のソースコードです。これは、アプリケーションをビルドするときにバイトコードにコンパイルされます。
  • JARファイルは、事前にコンパイルされたバイトコードです。ローカルマシン上にもありますが、ソースコードではありません。バイトコードは、ビルド時に単純に自分自身に追加されます。
  • Gradleの依存関係はJARファイルと基本的に同じですが、Gradleはローカルコンピュータ上のファイルとして追加するのではなく、コンパイル済みのアーティファクトをダウンロードします。

かかわらず、上記の、依存性は、ビルドに、そのクラスを寄与し、それらが最終出力(APK)に存在するであろう。

Proguardは、APKのサイズを小さくすることができるいくつかのことを行います。これは、すべてのバイトコードを静的に解析し、使用されないクラスとメソッドを削除することができます。また、クラス、フィールド、メソッドの名前を "abc"のような小さな識別子に変更することもできます。これは、バイトコードのサイズを幾分縮小することがあります。

+0

ありがとうございます。サイズを縮小する方法をいくつか提案してください。 –

+0

@AnujSharma既にプロガードを使用しています。 11MBの方がそれほど多くはありません。アプリと機能を最初に構築し、後でAPKサイズについて心配してください。 – Karakuri

+0

@ Karkuri:ありがとうございました。 –

2

はい、依存関係とプロジェクト独自のソースコードのコンパイル結果はdexに送信され、バイトコード変換が行われ、最終的なAPKに組み込まれます。 ProGuardので

、使用されていないクラスは、体系的

関連する問題