【发布时间】:2015-10-04 06:16:37
【问题描述】:
从 appcompat-v7 版本 20 升级到 21.0.3 后,我的 Android 应用在运行 Android 4.3 的三星 Galaxy Nexus 上启动时开始崩溃。 (它在装有 Android 5.0 的 Galaxy S5 上运行良好)。
这是我的堆栈跟踪的顶部:
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 配置文件中使用各种 -keep 咒语来解决这个问题。所以我尝试了同样的事情并设法摆脱了崩溃,但我不明白是什么导致了修复。
我使用的是 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
我对我不理解的错误修复/解决方法不满意,那么有人知道 ProGuard 为我做了什么吗?
【问题讨论】:
-
@apurva 我不明白这有什么关系。
标签: android proguard android-support-library