2015-07-07 20 views
11

Ho creato un'app per Android con Butterknife e recentemente aggiornato a 7.0.1. Ho sostituito tutti gli usi @InjectView e ButterKnife.inject con la nuova funzione @Bind e non ho problemi con le build di debug, ma l'app si arresta in modo anomalo all'avvio per le build di rilascio.Perché Butterknife @Bind fallisce nella versione di rilascio (dopo proguard)

Se commuto 'minifyEnabled' su falso nel mio build.gradle allora posso generare una build di rilascio di lavoro.

Sto usando la configurazione di proguard che è documentata sul sito di Butterknife ma non sembra funzionare per me. Sto anche usando Dagger, Picasso e Flurry nella mia build.

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

risposta

9

Abbiamo avuto problemi simili dopo l'aggiornamento a 7.0.1, ma abbiamo ottenuto un ANR invece.

Il problema sembra essere perché abbiamo sostituito la sezione Butterknife di Proguard con le nuove opzioni consigliate dal sito Web ButterKnife.

L'aggiunta di -keepnames class * { @butterknife.Bind *;} al file proguard ha risolto i nostri problemi.

+0

Grazie, che sembra aver risolto. –

7

Dal sito web, http://jakewharton.github.io/butterknife/ questo sembrava funzionare per me:

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

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

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

questo funzionario da jake –

Problemi correlati