2017-03-24 20 views
2

私はAndroidアプリでButterKnifeバージョン8.5.1を使用しています。 ButterKnifeのProGuard設定をしようとすると、私はまだリリース版でクラッシュしてしまいました。以下の設定を行うことを示していますissue on the official ButterKnife Github pageがあります:私の構成でこれらの作業のButterKnife 8のProGuard設定を設定する方法は?

# Butterknife 
-dontwarn butterknife.internal.** 
-keep class **$$ViewInjector { *; } 
-keepnames class * { @butterknife.InjectView *;} 

なし:

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

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

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

はまた、これらの設定を使用するように書かれています。 ButterKnifeにバインドされたViewsにアクセスすると、まだクラッシュしました。あなたはButterKnife 8のために必要な新しい設定がありますか?

答えて

1

ButterKnife 8では、自動生成されたサブクラスは異なると呼ばれます。私は、私も最後の行を必要としない@OnClickメソッドを使用しておりますが

###---------------Begin: proguard configuration for ButterKnife ---------- 
# For Butterknife: 
-keep class butterknife.** { *; } 
-dontwarn butterknife.internal.** 

# Version 7 
-keep class **$$ViewBinder { *; } 
# Version 8 
-keep class **_ViewBinding { *; } 

-keepclasseswithmembernames class * { @butterknife.* <fields>; } 
-keepclasseswithmembernames class * { @butterknife.* <methods>; } 
###---------------End: proguard configuration for ButterKnife ---------- 

:あなたはバージョン7と8のためにこのようにProGuardの設定を処理することができます。これらの設定は私にとって完璧です。やってみて!

0

これが私の仕事:あなたは複数のライブラリを持っている場合は

-keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); } 
-keep public class * implements butterknife.internal.ViewBinder { public <init>(); } 
-keep class butterknife.* 
-keepclasseswithmembernames class * { @butterknife.* <methods>; } 
-keepclasseswithmembernames class * { @butterknife.* <fields>; } 
-keep class **$$ViewBinder { *; } 
-keep class **$ViewHolder { *; } 
-keep class butterknife.**$Finder { *; } 
-keep class **_ViewBinding { *; } 

を、必ずbutterknife依存性がアプリのbuild.gradleファイル内にある、あるいは少なくともそれにannotationProcessorを移動します。

関連する問題