生产 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 应用程序