2017-01-14 13 views
0

ちょうど2つのwebviewとその中にいくつかのJavaスクリプトが入っているアンドロイドアプリ、作成されたPDFリーダーAPI、およそ2MBのすべてのPDF約25 MBと他の画像(また圧縮されています)など約1 MBの約30 MBに戻ります。アプリケーションを生成した後、私のアプリケーションのサイズは約55MBです。私は受け入れられないと信じています。 なぜ、私のアプリはそれほど大きなサイズを持っているのですか、どうすれば私のアンドロイドアプリのサイズをさらに小さくすることができますか?私のアンドロイドアプリのサイズを最適化する(減らす)方法

+2

「なぜ私のアプリを持っているでそれらをレンダリング非常に大きなサイズ " - 依存性があります。 AndroidスタジオでAPKアナライザを使用して(ビルド> APKの分析...)、スペースがどこにあるかを確認します。 「どうすれば私のアンドロイドアプリのサイズをもっと小さくすることができますか?それから、そしてそれを小さくする方法について心配してください。 – CommonsWare

+0

@CommonsWareあなたのコメントのおかげで私はAPK分析を行ったと私は2 MBの単一のextライブラリを使用していたとして許容されない私のアプリケーションのサイズの約35%である "lib" 15 MBであることがわかった残りのフォルダはOK.nowですが、どうすればこの提案を解決できますか? –

+0

@CommonsWareこれは、APKアナライザで正確になるようになっています-https://postimg.org/image/d4jj4ynj1/ –

答えて

2

にあまりにもこれを使用しますあなたが2MBの単一のエクステンションライブラリしか使用していなかったため、私のアプリケーションのサイズが許容範囲外です。

あなたはそのライブラリのサイズとその依存関係を誤って読みました。あなた自身がNDKを使用していないと仮定すると、そのライブラリはNDKを使用しているか、その依存関係がそのライブラリを使用しています。そのライブラリのサイズは、おおよそthis PDF viewerと一致しますが、それがあなたが使用している特定のものかどうかわかりません。

ライブラリを閲覧することPDFのドキュメントはa section on why the library makes your APK bigました:

アンドロイドPdfViewerは、多くのアーキテクチャ用のネイティブライブラリ(ほぼ1600 MB)で設定されているPdfiumAndroid、に依存しています。 Apkには、市販されているすべてのデバイスで実行するために、このライブラリをすべて含める必要があります。幸い、Google Playでは複数のapkをアップロードできます。アーキテクチャごとに1つアプリケーションを自動的に複数のAPKに分割する良い記事があります(利用可能なhere)。最も重要なセクションは、複数のAPKの作成とバージョンコードの処理をAPK分割で改善することですが、記事全体を読む価値があります。アプリケーションでこれを行うだけで、PdfiumAndroidをフォークする必要はありません。

あなたのオプションは以下のとおりです。

  • は、ドキュメントの助言に従い、ABIを使用するCPUアーキテクチャごとに別々のAPKを持つように分割(あなたがあたり、別のAPKをサポートし、いくつかの手段で配布している場合にのみ役立ちますこのようPlayストアなどアーキテクチャ、)

  • 使用some other PDF rendering option

  • から機能をレンダリングPDFを排除あなたのアプリ、ACTION_VIEWに頼ると、ユーザーの選択したPDFビューア

  • は、HTML/CSS /画像に変換し、あなたのアプリケーションからPDFを排除し、WebView

1

Proguardを使用してください。 build.gradleファイルから

buildTypes { 

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

は、その後、あなたの「proguard-rules.pro」を開き、すべてのルールに言及し、このようにProGuardのを可能にします。外部ライブラリを使用していない場合は、これを "proguard-rules.pro"ファイルに貼り付けてください。 。

WebサービスのためOkhhtp使用している場合は、あなたのproguard-rules.pro

"LIB" は約35%であり、15メガバイトであることが判明
# For OkHttp3 
-keepattributes Signature 
-keepattributes Annotation 
-keep class okhttp3.** { *; } 
-keep interface okhttp3.* { *; } 
-dontwarn okhttp3.* 
関連する問題