gpt4 book ai didi

android - 迁移到 Android API 28 后出现 NoClassDefFoundError

转载 作者:搜寻专家 更新时间:2023-11-01 08:18:01 26 4
gpt4 key购买 nike

我知道,有人问过类似的问题,但我想,我的情况是不同的。请不要删除。

在迁移到 API 28 后,我开始收到 NoClassDefFoundError 错误,就像许多其他人一样。我看到其他人遇到过这个问题,因为谷歌已经弃用了 org.apache 类,这需要更改 list ,但我没有在我的项目中使用 apache 类。

使调查变得困难的是,在下面的堆栈跟踪中没有自定义类,甚至不清楚找不到什么类。最糟糕的是,我无法在模拟器或真实设备上重现该错误,只能在 Google Play 商店报告中看到它,该报告显示所有崩溃都发生在 Android 9 设备上。

我有两个问题:

  • 堆栈跟踪中没有自定义类这一事实是否意味着这是 Google 的内部问题而我无法真正修复它?
  • 如何更改我的项目以获得更多信息,例如查看找不到什么类?

与此无关,我认为,维护较新的 Android 版本变得非常困难,而且它们的支持根本不存在,所以 stackoverflow 是我最后的希望。

java.lang.NoClassDefFoundError: 
at com.google.android.a.a.m.d (m.java:266)
at com.google.android.a.a.m.a (m.java:113)
at com.google.android.a.a.g.a (g.java:206)
at com.google.android.a.a.g.a (g.java:166)
at com.google.android.a.a.e$a$2.run (e.java:242)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:214)
at android.os.HandlerThread.run (HandlerThread.java:65)
Caused by: java.lang.ClassNotFoundException:
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 com.google.android.a.a.m.d (m.java:266)
at com.google.android.a.a.m.a (m.java:113)
at com.google.android.a.a.g.a (g.java:206)
at com.google.android.a.a.g.a (g.java:166)
at com.google.android.a.a.e$a$2.run (e.java:242)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:214)
at android.os.HandlerThread.run (HandlerThread.java:65)

下面也是我在这个项目中使用的所有依赖项:

dependencies {
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:mediarouter-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services-vision:15.0.1'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.android.gms:play-services-ads:15.0.1'
implementation 'com.google.android.gms:play-services-drive:15.0.1'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.google.code.gson:gson:2.8.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.android.gms:play-services-wearable:15.0.1'
implementation 'com.google.android.gms:play-services-tasks:15.0.1'
implementation files('libs/accessory-v2.5.3.jar')
implementation files('libs/sdk-v1.0.0.jar')
implementation files('libs/lvl.aar')

}

这是一个Kotlin项目,Kotlin版本是1.3.10

更新:使用 API 27 重新编译相同的代码,再次将应用程序发布到 Play Store,此后没有发现任何崩溃,因此它绝对是 API 28 所特有的。

最佳答案

谜底揭晓。毕竟,它与 org.apache 类有关,我敢肯定,它会给许多迁移到 API 28 的人带来一个隐藏的问题。

虽然我的项目对 Apache 类没有任何依赖性,但 Google 自己的 API(在我的案例中是许可库)确实具有这种依赖性。

因此,即使您不直接在您的项目中使用 Apache,您也永远不知道依赖项中有什么,这就是为什么在处理 API 28 时您应该始终在 list 的应用程序标记中包含以下行:

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

最后,由于 Google Play 商店在提供有意义的堆栈跟踪方面做得很糟糕,我不得不注入(inject) ACRA代码到应用程序的测试代码,并要求用户向我发送崩溃报告。幸运的是,我有一位用户同意提供帮助。以下是我通过电子邮件收到的内容。

我对 Android 平台质量的看法随着他们发布的每个新版本而变得更糟。

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/client/utils/URLEncodedUtils;
at com.google.android.vending.licensing.ServerManagedPolicy.decodeExtras(ServerManagedPolicy.java:3)
at com.google.android.vending.licensing.ServerManagedPolicy.processServerResponse(ServerManagedPolicy.java:3)
at com.google.android.vending.licensing.LicenseValidator.handleResponse(LicenseValidator.java:1)
at com.google.android.vending.licensing.LicenseValidator.verify(LicenseValidator.java:37)
at com.google.android.vending.licensing.LicenseChecker$ResultListener$2.run(LicenseChecker.java:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.client.utils.URLEncodedUtils" on path: DexPathList[[zip file "/data/app/info.gryb.gacw-buYW6A5hesJP-wfcU6nnVg==/base.apk"],nativeLibraryDirectories=[/data/app/info.gryb.gacw-buYW6A5hesJP-wfcU6nnVg==/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)
... 9 more
java.lang.ClassNotFoundException: Didn't find class "org.apache.http.client.utils.URLEncodedUtils" on path: DexPathList[[zip file "/data/app/info.gryb.gacw-buYW6A5hesJP-wfcU6nnVg==/base.apk"],nativeLibraryDirectories=[/data/app/info.gryb.gacw-buYW6A5hesJP-wfcU6nnVg==/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 com.google.android.vending.licensing.ServerManagedPolicy.decodeExtras(ServerManagedPolicy.java:3)
at com.google.android.vending.licensing.ServerManagedPolicy.processServerResponse(ServerManagedPolicy.java:3)
at com.google.android.vending.licensing.LicenseValidator.handleResponse(LicenseValidator.java:1)
at com.google.android.vending.licensing.LicenseValidator.verify(LicenseValidator.java:37)
at com.google.android.vending.licensing.LicenseChecker$ResultListener$2.run(LicenseChecker.java:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:65)

关于android - 迁移到 Android API 28 后出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56330539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com