2015-07-07 25 views
11

Budowałem aplikację na Androida przy użyciu Butterknife, a ostatnio zaktualizowałem ją do wersji 7.0.1. Wymieniłem wszystkie użycie @InjectView i ButterKnife.inject z nową funkcją @Bind i nie mam problemów z kompilacją debugowania, ale aplikacja ulega awarii podczas uruchamiania w celu wydania wersji.Dlaczego Butterknife @Bind kończy się niepowodzeniem w tworzeniu wersji (po proguardzie)?

Jeśli zmienię "minifyEnabled" na false w moim build.gradle, będę mógł wygenerować kompilację wydania roboczego.

Używam konfiguracji progu, która jest udokumentowana na stronie Butterknife, ale wydaje się, że nie działa ona dla mnie. Używam również Dagger, Picasso i Flurry w mojej kompilacji.

Moi proguard-rules.pro treść:

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

Odpowiedz

9

Mieliśmy podobne problemy po aktualizacji do 7.0.1, ale dostaliśmy zamiast ANR.

Problem polega na tym, że zastąpiliśmy sekcję Butterknife w Proguard nowymi zalecanymi opcjami ze strony ButterKnife.

Dodanie -keepnames class * { @butterknife.Bind *;} do pliku proguard poprawiło nasze problemy.

+0

Dzięki, że wydaje się być rozwiązany. –

7

Od stronie http://jakewharton.github.io/butterknife/ to wydawało się działać dla mnie:

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

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

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

ten oficjalny z jake –