11

Butterknife を使用して Android アプリを作成しており、最近 7.0.1 にアップグレードしました。@InjectViewすべてのButterKnife.inject使用法を新しい機能に置き換えました@Bind。デバッグ ビルドでは問題はありませんが、リリース ビルドの起動時にアプリがクラッシュします。

minifyEnabledbuild.gradle で' ' を false に切り替えると、動作するリリース ビルドを生成できます。

Butterknife サイトに記載されているプロガード構成を使用していますが、うまく機能していないようです。私のビルドでは、Dagger、Picasso、Flurry も使用しています。

私のproguard-rules.proコンテンツ:

# ButterKnife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

# Dagger
-keepclassmembers,allowobfuscation class * {
    @javax.inject.* *;
    @dagger.* *;
    <init>();
}

-keep class javax.inject.** { *; }
-keep class **$$ModuleAdapter
-keep class **$$InjectAdapter
-keep class **$$StaticInjection
-keep class dagger.** { *; }

# Picaso
-dontwarn com.squareup.okhttp.**

# Flurry
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
4

2 に答える 2

11

7.0.1 にアップグレードした後も同様の問題がありましたが、代わりに ANR が発生しました。

問題は、Proguard の Butterknife セクションを、ButterKnife Web サイトの新しい推奨オプションに置き換えたためのようです。

-keepnames class * { @butterknife.Bind *;}proguard ファイルに追加すると、問題が修正されました。

于 2015-07-08T06:43:37.037 に答える