gpt4 book ai didi

java - Android 错误随机 java.lang.NoClassDefFoundError : com. facebook.internal.Utility

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:32 25 4
gpt4 key购买 nike

我正在使用最新的 Facebook Android SDK,并在我最新发布的 apk 中的远程崩溃控制应用程序中收到来自数十名用户的错误。我已经在这里寻找过这样的错误,但是大多数答案对于上一个 FB SDK 来说都太过时了,在这种情况下有两种奇怪的情况:

a) 错误似乎是随机发生的。我根本无法在我的任何设备上重现它。

b) FB 逻辑在那个版本和之前的版本之间完全没有变化,在之前的版本中我从来没有遇到过这样的错误。

由于我在这些版本之间的代码中找不到任何相关差异,我认为问题可能是在生成最后一个 apk 时 Android Tools 发生了问题,但事实是我使用的是同一个 apk正在使用并且无法重现该问题,尽管有数十个或多个用户受到影响,但数百个使用相同 apk 的用户并未受到影响,我也放弃了这样的假设。

欢迎任何关于如何解决或调试这个问题的想法。

可能相关的更多信息:

  • 所有崩溃都发生在 Android 4.0.3 或更早版本中。百分比最高的是 2.3.6,占所有崩溃的 48%。
  • 该类实际上是在 APK 中导出的。我通过解压缩 apk 并使用 dexdump 查看 classes.dex 中的内容来检查它。我不能期待其他事情,因为它在我所有的设备上都能完美运行,如果没有这个类,它就不会。

    $ ~/android-sdks/build-tools/21.1.1/dexdump classes.dex | grep 'com.facebook.internal.Utility$1' 类描述符:'Lcom/facebook/internal/Utility$1;' #0 : (在 Lcom/facebook/internal/Utility$1;) #1 : (在 Lcom/facebook/internal/Utility$1;) #2 : (在 Lcom/facebook/internal/Utility$1;) #0 : (在 Lcom/facebook/internal/Utility$1;) #0 : (在 Lcom/facebook/internal/Utility$1;) #1 : (在 Lcom/facebook/internal/Utility$1;) #2 : (在 Lcom/facebook/internal/Utility$1;) #3 : (在 Lcom/facebook/internal/Utility$1;)

  • 从 loadAppSettingsAsync 调用 Utility 的静态方法后似乎失败了,这恰好是同一类中的静态方法。那么,如果 com.facebook.internal.Utility 类不存在或无法加载,com.facebook.internal.Utility.loadAppSettingsAsync 怎么可能首先被执行?如果它存在并且已加载,为什么会在 com.facebook.internal.Utility 上抛出 NoClassDefFoundError?我他妈的迷路了……

这是来自 splunk mint(以前称为 bugsense)的堆栈,我只是更改了应用程序的名称。我用 proguard 映射文件追溯了它,但它似乎还是遗漏了一些行号:

java.lang.NoClassDefFoundError: com.facebook.internal.Utility$1
at com.facebook.internal.Utility.void loadAppSettingsAsync(android.content.Context,java.lang.String)(Unknown Source)
at com.facebook.Settings.void sdkInitialize(android.content.Context)(Unknown Source)
at com.facebook.UiLifecycleHelper.<init>(Unknown Source)
at net.iberdroid.androidgames.framework.impl.AndroidGame.void onCreate(android.os.Bundle)(Unknown Source)
at com.marzoa.ruletafree.xmas2012.RuletaAfortunadaGame.void onCreate(android.os.Bundle)(Unknown Source)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
at android.app.ActivityThread.access$1500(ActivityThread.java:121)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3770)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.facebook.internal.Utility$1 in loader dalvik.system.PathClassLoader[/data/app/com.marzoa.ruletafree.xmas2012-2.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
... 18 more

最佳答案

由于 NoClassDefFoundError 在 AsyncTask 的匿名实现中的 loadAppSettingsAsync 中发生,因此它似乎是与此相同的问题 NoClassDefFoundError - Android 2.3.X

这是 google play 服务中的一个错误。 ( https://code.google.com/p/android/issues/detail?id=81083 )

尝试将以下内容添加到您的 Application#onCreate() 方法中,如所提及问题的答案中所述。

try {
Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
// ignored
}

关于java - Android 错误随机 java.lang.NoClassDefFoundError : com. facebook.internal.Utility,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380449/

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