当前位置: 首页 > 知识库问答 >
问题:

Android:NoClassDefoundError仅在发布版本上

汪胤
2023-03-14

我正在Android Studio上尝试在发布模式下构建我的项目。
在调试模式下一切正常,但是在发布模式下会出现以下错误...

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中指定的。
如何解决此问题?

共有1个答案

佟和安
2023-03-14

问题基本上是这样的:

buildTypes {
        release {
            **minifyEnabled false**
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

如果您将minifyEnabled设置为false,它应该可以解决您的问题。如果您想使用minify特性,那么您可以将progaurd规则添加到您的build.gradle中。例如,对于Butterknife库,您必须添加以下内容:

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

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

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

很高兴我能帮上忙

 类似资料:
  • 版本号 采用三位版本号,分别是主版本号、次版本号、修订版本号。例如 5.1.2。 参见: http://semver.org/lang/zh-CN/。 主版本号:主版本号内的所有版本必须相互兼容;与其它主版本号不一定完全兼容,尽量向下兼容。 次版本号:代表新特性增强。版本号越大特性越丰富。 修订版本号:代表BugFix版本。只做bug修复使用,版本号越大越稳定。 版本维护 最多同时维护两个版本。

  • 我有一个奇怪的问题,我的调试版本工作正常,但是在签署并生成一个应用程序包后,我将其上传到Play商店,该应用程序立即崩溃(我在具有我的应用程序的商店版本的手机上运行LogCat,我看到它与AndroidX ConstraintLayout有关,但无法复制它)。我认为和版本之间有一些区别,所以我开始调试我的发布版本。 当我这样做时,Android Studio无法安装APK,出现以下错误: 安装失败

  • 本页介绍了 MOSN 的 版本发布步骤。 MOSN 版本发布步骤 一、冻结代码 在准备一个版本发布期间,停止代码往 master 分支的合并 二、整理 Release notes 基于 Github 的 PullRequest 记录,整理本次发布的内容与上一个版本之间的差异,需要注意仅统计目标分支是 master 且正常合并的 PullRequest 首先记录原始的信息,统一记录在 MOSN Re

  • 以下版本的发布文件包含在 npm 和 CDN 中。github 做为源码管理仓库,不包含发布文件。 版本 兼容性 错误提示 DevTool 组件反解 语法压缩 san.js san.min.js san.dev.js san.modern.js san.modern.min.js san.modern.dev.js san.spa.js san.spa.min.js san.spa.dev.js

  • 稳定化是让一个发布分支进入发布状态的过程;也就是决定哪些变更将会进入发布版本,并以此为根据修整分支的内容。 “决定”一词有许多潜在的不幸。在协作软件项目中最后一分钟特性冲击是非常常见的现象:当开发者看到软件发布将要发生,他们便混乱的结束当前的变更,不希望错过这班船。当然,这是在发布时你最不想看到的场面。如果人们能在比较以舒适的节奏,无需担心变更是进入这个版本还是下一个版本时完成这个特性,效果会更好

  • 我目前正在开发中的一个控制台应用程序。NETCore3.1,在VisualStudio中运行时效果良好。 在Visual Studio中运行 但是当我发布应用程序时,我得到了selenium版本错误。 已发表的申请 我有最新的NuGet软件包。 镀铬版 有人知道这是怎么回事吗? 在这里您可以看到未发布的应用程序(底部)运行良好,但发布的应用程序(顶部)运行不正常,即使我没有更改任何内容! 在此处输