4

プロジェクトにAndroidサポートライブラリを追加していますが、結果のAPKファイルのサイズがかなり大きくなっていることに気付きました。

私がやろうとしているのは、Proguardを使用して、使用していないライブラリ内のクラス、たとえばバックワード互換の通知ビルダークラスを削除することです(実際、Support libから何も使用せずにこれをテストしたので、削除しました私の/libsフォルダーにあります)。

私のproguard.cfgは、 (実際には難読化する必要がないので)<sdktools>\tools\proguard\proguard-android.txt自分で追加したものですが、.APKファイルがこれ以上小さくなることはありません。-dontobfuscate私のproguard.cfgは以下のとおりです。

#これはProGuardの構成ファイルです。
#http://proguard.sourceforge.net/index.html#manual/usage.html

-dontobfuscate
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-詳細

#最適化はデフォルトでオフになっています。Dexはコードの実行が好きではありません
#ProGuardを介して、手順の最適化と事前検証を行います(
#これらの最適化自体)。
-最適化しない
-未確認
#最適化を有効にしたい場合は、
#独自のプロジェクト構成ファイルに最適化フラグを含めます。
#代わりに、
#あなたのこのファイルの代わりに「proguard-android-optimize.txt」ファイル
#project.propertiesファイル。

-keepattributes*アノテーション*
-パブリッククラスcom.google.vending.licensing.ILicensingServiceを維持します
-パブリッククラスcom.android.vending.licensing.ILicensingServiceを維持します

#ネイティブメソッドについては、http://proguard.sourceforge.net/manual/examples.html#nativeを参照してください。
-keepclasseswithmembernames class * {
    ネイティブ;
}

#アニメーションが引き続き機能するように、ビューにセッターを保持します。
#http://proguard.sourceforge.net/manual/examples.html#beansを参照
-keepclassmembers public class * extends android.view.View {
   void set *(***);
   *** 得る*();
}

#XML属性onClickで使用できるメソッドをActivityに保持したい
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

#列挙クラスについては、http://proguard.sourceforge.net/manual/examples.html#enumerationsを参照してください。
-keepclassmembers列挙型*{
    public static ** [] values();
    public static ** valueOf(java.lang.String);
}

-keep class *android.os.Parcelable{を実装します
  public static final android.os.Parcelable $ Creator *;
}

-keepclassmembersクラス**。R$* {
    public static;
}

#サポートライブラリには、新しいプラットフォームバージョンへの参照が含まれています。
#このアプリが古いものに対してリンクしている場合に備えて、それらについて警告しないでください
#プラットフォームバージョン。私たちはそれらについて知っています、そしてそれらは安全です。
-android.support。**に警告しないでください
4

1 に答える 1

1

Android SDK は、デバッグ ビルドではなく、リリース ビルドでのみ ProGuard を適用します。

さらに、Android SDK (r20 以降) は通常proguard-project.txt、プロジェクトで proguard.txt の代わりに検索します。ビルド プロセスではグローバル ファイル proguard-android.txt も読み取られるため、このファイルは通常、空にすることができます。プロジェクトを更新することができます

android update project -p MyProjectDirectory

最後に、Android SDK (r20 以降) はデフォルトで ProGuard の最適化ステップを無効にします (これにより、縮小ステップが改善される可能性があります)。proguard-android-optimize.txtで proguard-android.txt の代わりにポイントすることで有効にできますproject.properties

于 2013-01-12T17:03:28.877 に答える