0

最近、Google Play Services と Support V4 の最終バージョン ライブラリを使用して、proguard を巨大なプロジェクトに追加しました。

これらのライブラリについては何も追加せずに、構成ファイルをプロガードします。これを追加するだけです。

-ignorewarnings
-dontobfuscate

ここで、proguard 出力ファイル usage.txt (proguard によって削除されたすべてのコードを確認できます) で、Google Play サービスと Android サポート v4 からの多くのコードであることに気付きました。

公式ドキュメントを確認しましたが、proguard を使用している場合、Support v4 および Google Play サービスの例外を追加することについて何も見つかりませんでした。

注: ProGuard ディレクティブは、必要なクラスを保持するために Play サービス クライアント ライブラリに含まれています。Gradle 用の Android プラグインは、ProGuard 構成ファイルを AAR (Android ARchive) パッケージに自動的に追加し、そのパッケージを ProGuard 構成に追加します。プロジェクトの作成中に、Android Studio は、ProGuard が使用する ProGuard 構成ファイルと build.gradle プロパティを自動的に作成します。Android Studio で ProGuard を使用するには、build.gradle buildTypes で ProGuard 設定を有効にする必要があります。詳細については、ProGuard ガイドを参照してください。

しかし、問題は、私は Android Studio でコンパイルしていないことです。コマンド ラインから ant と eclipse を使用してコンパイルしています。gradle を使用していないため、proguard 構成ファイルに何かを追加する必要があるかどうかわかりません。これに関する公式ドキュメントには何もありません。

これらのライブラリのプロガード構成に何かを追加しないと、将来問題に直面することはありますか?

4

1 に答える 1

0

v4 のプロジェクトがいくつかあり、proguard 構成に特別なものは必要ありません。私が見つけた唯一のものは

# Supporting compatibility library
-dontwarn android.support.**

削除しても害があるようには見えません。

更新しました

Google Play サービスの場合:

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}
于 2015-08-07T08:15:33.240 に答える