生产 Android 应用显示原因:java.lang.NoClassDefFoundError 错误

Posted

技术标签:

【中文标题】生产 Android 应用显示原因:java.lang.NoClassDefFoundError 错误【英文标题】:Production Android app showing Caused by: java.lang.NoClassDefFoundError errors 【发布时间】:2019-05-01 11:35:13 【问题描述】:

生产应用程序如何向用户显示类未找到错误,但在模拟器上它在 android 9.0 上运行良好。模拟器不应该在编译或构建期间也中断或显示错误吗?

java.lang.RuntimeException:

在 android.os.AsyncTask$3.done (AsyncTask.java:354) 在 java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383) 在 java.util.concurrent.FutureTask.setException (FutureTask.java:252) 在 java.util.concurrent.FutureTask.run (FutureTask.java:271) 在 android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245) 在 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) 在 java.lang.Thread.run (Thread.java:764)

原因:java.lang.NoClassDefFoundError:

在 org.apache.http.impl.client.AbstractHttpClient。 (AbstractHttpClient.java:182) 在 org.apache.http.impl.client.DefaultHttpClient。 (DefaultHttpClient.java:150) 在 com.exposure.utilities.RestClient.executeRequest (RestClient.java:162) 在 com.exposure.utilities.RestClient.Execute (RestClient.java:127) 在 com.exposure.utilities.Utility.getData (Utility.java:162) 在 com.exposure.utilities.DataTask.doInBackground (DataTask.java:26) 在 com.exposure.utilities.DataTask.doInBackground (DataTask.java:9) 在 android.os.AsyncTask$2.call (AsyncTask.java:333) 在 java.util.concurrent.FutureTask.run (FutureTask.java:266)

引起:java.lang.ClassNotFoundException:

在 dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134) 在 java.lang.ClassLoader.loadClass (ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass (ClassLoader.java:312)

【问题讨论】:

这是否发生在带有 android pie 的设备上? 是的,但是我有 450 个应用程序,为什么它会在加载时抛出一个没有人可以使用的错误? 【参考方案1】:

看起来这是由于 http 客户端已被弃用。将以下代码添加到您的清单应用程序标签中。

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

对于 android pie,他们已弃用从 andorid pie 开始对 Apache HTTP 客户端的支持,请查看更改日志以获取参考 https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p

【讨论】:

这是 Android 9,主要在 Pixel 1、2 和 3 上运行。为什么我可以将应用提交到加载时崩溃的商店?模拟器工作得很好。 Android 9 工作正常,模拟器中没有更新,不会崩溃。 我继续将 http 连接代码更新为不推荐使用的代码。

以上是关于生产 Android 应用显示原因:java.lang.NoClassDefFoundError 错误的主要内容,如果未能解决你的问题,请参考以下文章

React Native Android:静态图像未在生产发布的 apk 中显示

当我在真机上运行我的应用程序时,android studio logcat 没有显示崩溃的原因

VideoCastManager 在手机启动时崩溃 Android 应用程序

即使我以 100% 的速度推出应用程序,Google Play 控制台仍将生产状态显示为非活动

国标设备接入EasyCVR平台通道信息不显示是什么原因?

Android | Android Studio打包APK安装失败:应用是非正式版本,当前设备不支持安装