Android:NoClassDefFoundError仅在发行版上 [英] Android: NoClassDefFoundError only on release build
问题描述
我正在使用Android Studio
,并尝试在发布模式下构建我的项目.
在调试模式下一切正常,但是在发布模式下发生以下错误...
I'm on Android Studio
and trying to build my project on release mode.
Everything is OK in debug mode however below errors occur in release mode...
08-26 17:59:05.599 31696-31931/? W/System.err﹕ java.lang.NoClassDefFoundError: a.a.b.l
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at java.lang.Class.classForName(Native Method)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at java.lang.Class.forName(Class.java:308)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at java.lang.Class.forName(Class.java:272)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at com.a.a.a.a(Unknown Source)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at com.a.a.a.a(Unknown Source)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at com.a.a.e.b(Unknown Source)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at com.a.a.e.a(Unknown Source)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at com.a.e.a.uncaughtException(Unknown Source)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
08-26 17:59:05.599 31696-31931/? W/System.err﹕ at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
08-26 17:59:05.600 31696-31931/? E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
Process: com.soonoo.mobilecampus, PID: 31696
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ExceptionInInitializerError
at a.a.b.l.a(Unknown Source)
at a.a.b.m.<clinit>(Unknown Source)
at a.a.b.f.<init>(Unknown Source)
at a.a.b.e.<init>(Unknown Source)
at a.a.c.di.b(Unknown Source)
at a.a.c.di.a(Unknown Source)
at a.a.c.b.a(Unknown Source)
at a.a.c.ae.b(Unknown Source)
at a.a.a.a(Unknown Source)
at com.soonoo.mobilecampus.mainlist.h.a(Unknown Source)
at com.soonoo.mobilecampus.mainlist.h.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: in == null
at java.util.Properties.load(Properties.java:246)
at a.a.b.l.d(Unknown Source)
at a.a.b.l.<clinit>(Unknown Source)
at a.a.b.l.a(Unknown Source)
at a.a.b.m.<clinit>(Unknown Source)
at a.a.b.f.<init>(Unknown Source)
at a.a.b.e.<init>(Unknown Source)
at a.a.c.di.b(Unknown Source)
at a.a.c.di.a(Unknown Source)
at a.a.c.b.a(Unknown Source)
at a.a.c.ae.b(Unknown Source)
at a.a.a.a(Unknown Source)
at com.soonoo.mobilecampus.mainlist.h.a(Unknown Source)
at com.soonoo.mobilecampus.mainlist.h.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
问题在于异常消息不显示发生错误的类,方法的名称.
我在项目中使用的所有第三方库均在build.gradle
中指定.
我怎样才能解决这个问题?
The problem is that exception messages do not display the name of classes, methods that occurs error.
All third party libraries I used in my project are specified in build.gradle
.
How can I fix this?
推荐答案
问题基本上是以下问题:
The problem is basically the following:
buildTypes {
release {
**minifyEnabled false**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
如果将minifyEnabled设置为false,它将解决您的问题.如果要使用缩小功能,则可以将progaurd规则添加到build.gradle.例如,对于Butterknife库,您必须添加以下内容:
If you set minifyEnabled to false, it should fix your problem. If you want to use the minify feature then you can add progaurd rules to your build.gradle. For instance for the Butterknife library you have to add the following:
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
很高兴我可以帮忙
这篇关于Android:NoClassDefFoundError仅在发行版上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!