2015-03-13 23 views
1

从appcompat-v7版本20升级到21.0.3后,我的Android应用程序在运行Android 4.3的三星Galaxy Nexus上启动时崩溃。 (它可以在安卓5.0的Galaxy S5上正常运行)。proguard在Android 4.3上如何防止我的NoClassDefFoundError for v7.appcompat?

这里是我的堆栈跟踪的顶部:

java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$attr 
     at android.support.v7.app.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.java:263) 
     at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:225) 
     at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
     at com.xxx.ui.LoginChoiceActivity.onCreate(LoginChoiceActivity.java:39) 

我相信这个问题被报告,并讨论了弹尽粮绝here。 在这个问题上的几位评论者设法在他们的proguard配置文件中使用各种不同的咒语。所以我尝试了同样的事情,并设法摆脱崩溃,但我不明白是什么导致了修复。

我正在使用Android Studio 1.1.0。我增加了以下内容的build.gradle:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
minifyEnabled true 

这是我proguard-rules.pro文件:

# Works regardless of whether this is commented out or not. 
#-keep class ** {*;} 

# We know these reference classes that we don't have. It's ok. 
-dontwarn com.flurry.**,com.millennialmedia.** 

-dontoptimize 
-dontshrink 
-dontobfuscate 

我不开心的bug修正/解决方法,我不明白,那么任何人都知道ProGuard正在为我做什么?

+0

http://stackoverflow.com/questions/24096416/error-in-eclipse-with -appcompat-v7/24096452#24096452 – Apurva 2015-03-13 15:11:45

+0

@apurva我看不出有什么相关的。 – 2015-03-13 15:15:19

回答

0

在proguard-rules.pro文件中添加此行,以保持supportv7从progurd

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

and read this issue

相关问题