Android 9.0(Pie)不支持异步任务

5

我正在处理我的代码,它在版本8(Oreo)上运行良好。之后,我收到了安卓v9.0(Pie)的更新,应用程序突然停止工作。检查后,我发现我的异步任务出现了以下错误:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.global.exch, PID: 25112
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:354)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory;
    at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:182)
    at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:150)
    at com.global.exch.Dataholder.getApi(Dataholder.java:100)
    at com.global.exch.MainActivity$QuotesData.doInBackground(MainActivity.java:391)
    at com.global.exch.MainActivity$QuotesData.doInBackground(MainActivity.java:386)
    at android.os.AsyncTask$2.call(AsyncTask.java:333)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:764) 
 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.LogFactory" on path: DexPathList[[zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/base.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_dependencies_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_resources_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_0_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_1_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_2_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_3_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_4_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_5_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_6_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_7_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_8_apk.apk", zip file "/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/lib/arm64, /system/lib64, /system/vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:182) 
    at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:150) 
    at com.global.exch.Dataholder.getApi(Dataholder.java:100) 
    at com.global.exch.MainActivity$QuotesData.doInBackground(MainActivity.java:391) 
    at com.global.exch.MainActivity$QuotesData.doInBackground(MainActivity.java:386) 
    at android.os.AsyncTask$2.call(AsyncTask.java:333) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:764) 
    Suppressed: java.io.IOException: No original dex files found for dex location /data/app/com.global.exch-sEcnUuVsCYjXlnxJddVQAA==/split_lib_resources_apk.apk
    at dalvik.system.DexFile.openDexFileNative(Native Method)
    at dalvik.system.DexFile.openDexFile(DexFile.java:354)
    at dalvik.system.DexFile.<init>(DexFile.java:101)
    at dalvik.system.DexFile.<init>(DexFile.java:75)
    at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
    at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
    at dalvik.system.DexPathList.<init>(DexPathList.java:164)
    at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
    at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
    at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
    at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
    at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
    at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
E/AndroidRuntime:     at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
    at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:718)
    at android.app.LoadedApk.getClassLoader(LoadedApk.java:801)
    at android.app.LoadedApk.getResources(LoadedApk.java:1023)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2345)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5780)
    at android.app.ActivityThread.access$1100(ActivityThread.java:200)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1660)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6762)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

有人可以帮我解决这个问题吗?因为之前它一直很正常地工作。谢谢!


Java反射在9.0中受到限制,请查看:https://developer.android.com/about/versions/pie/restrictions-non-sdk-interfaces - Atiq Ur Rehman
错误很明显:java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.LogFactory",您正在尝试加载一个来自apache commons logging的类,但失败了。检查您的代码,并不再使用此库中的类。 - Robert
2个回答

23

我之前也遇到了同样的问题,但在我的清单文件中添加以下代码后,问题得以解决。

您可以参考以下网址: https://developer.android.com/about/versions/pie/android-9.0-changes-28

manifest.xml

<application
        ...
         android:usesCleartextTraffic="true"
       ...>

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

3
谢谢。这对我有效。你救了我的一天。祝编码愉快。@ infrared - Rahul Gupta
1
你救了我一天,伙计。谢谢。 :) - Kemal Can ÖZÇELİK

0

如何在androidx中更新现有项目。

无需添加额外的权限和代码、依赖等。

0.1):将版本更改为compileSdkVersion 29

0.2): 重构 -> 迁移到androidX

只需将以下代码添加到项目“ASDF”中:

1):添加XML目录,

1.1):在XML中添加以下代码,代码如下:

<application

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>

>

2):在清单文件中添加以下代码:

2.1):在应用程序标签(manifest->application)内添加以下代码:

android:networkSecurityConfig="@xml/network_security_config"

2.2): 在应用程序标签(manifest->application)之外添加以下代码:

<application>

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

</application>

开心点,和我分享你的反馈。谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接