2017-03-24 1 views
2

Je cours la version 8.5.1 de ButterKnife dans mon application d'androïde. Si j'essaie de faire les réglages de ProGuard pour ButterKnife, j'ai encore des plantages dans ma version. Il y a un issue on the official ButterKnife Github page qui vous dit de faire les réglages suivants:Comment configurer les paramètres ProGuard pour ButterKnife 8?

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

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

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

Alternativement, il est écrit d'utiliser ces paramètres:

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

Aucune de ces travaux avec ma configuration. J'ai toujours eu des plantages lors de l'accès aux vues liées par ButterKnife. Alors, y a-t-il de nouveaux réglages à faire pour ButterKnife 8?

Répondre

1

Dans ButterKnife 8, les sous-classes générées automatiquement sont appelées différentes. Vous pouvez gérer les paramètres ProGuard pour la version 7 et 8 ainsi:

###---------------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 ---------- 

Bien que j'utilise des méthodes @OnClick Je ne même pas besoin de la dernière ligne. Ces paramètres fonctionnent parfaitement pour moi. Essaye le!

0

cela a fonctionné pour moi:

-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 { *; } 

Si vous avez plusieurs bibliothèques, assurez-vous que la dépendance Butterknife est dans le fichier build.gradle de l'application, ou atleast déplacer le annotationProcessor en elle.