2015-08-23 19 views
12

Ho aggiornato le librerie di supporto alla v23.0.0 dalla v22.2.1, dopo la creazione dell'app (con minifyEnabled true) ho "AppCompat non supporta il tema corrente caratteristiche" eccezione:proguard - AppCompat non supporta le caratteristiche del tema corrente dopo proguard/minify

08-23 05:46:10.168 19437 19437 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{tm.alashow.dotjpg/tm.alashow.dotjpg.ui.activity.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features 
08-23 05:46:10.168 19437 19437 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
08-23 05:46:10.168 19437 19437 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477) 
08-23 05:46:10.168 19437 19437 E AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java) 
08-23 05:46:10.168 19437 19437 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345) 

Quando il debug di un'applicazione o disabilitando Proguard (minifyEnabled false), eccezione non tiri liberi. Si lancia solo quando proguard è abilitato.

Tema:

<style name="Theme.App" parent="@style/Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     ... 
</style> 

file di Proguard:

-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

-keep class android.support.design.widget.** { *; } 
-keep interface android.support.design.widget.** { *; } 
-dontwarn android.support.design.** 
-keep public class * extends android.support.design.widget.CoordinatorLayout$Behavior { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

ho già provato risposte da questa domanda: Upgraded to AppCompat v22.1.0 and now getting IllegalArgumentException: AppCompat does not support the current theme features e penso che non è duplicato domanda.

Come posso risolvere il problema? Con proguard abilitato, ovviamente

+0

hai trovato una soluzione? –

+0

@bjornson no :(hai lo stesso problema o cosa? – alashow

+0

@bjornson appena downgraded al vecchio buon 22.2.1 – alashow

risposta

0

Il messaggio di errore potrebbe essere fuorviante. Look out per avvisi Proguard come questo:

Warning: org.acra.ErrorReporter: can't find referenced method 'void setLatestEventInfo(android.content.Context,java.lang.CharSequence,java.lang.CharSequence,android.app.PendingIntent)' in library class android.app.Notification 
Warning: there were 1 unresolved references to library class members. 
     You probably need to update the library versions. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember) 
Exception while processing task 
java.io.IOException: Please correct the above warnings first. 
    at proguard.Initializer.execute(Initializer.java:473) 
    at proguard.ProGuard.initialize(ProGuard.java:233) 
    at proguard.ProGuard.execute(ProGuard.java:98) 
    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) 
    at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139) 
    at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115) 
    at com.android.builder.tasks.Job.runTask(Job.java:48) 
    at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41) 
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227) 
    at java.lang.Thread.run(Thread.java:745) 

Anche se c'è stato un errore la build avrà successo se v'è un file classes.jar da una generazione precedente, una generazione pulita fallirà come previsto.

Nel mio caso, l'avviso Proguard ha rimosso anche l'eccezione AppCompat.