Я использую последнюю версию Android Android SDK и получаю эту ошибку от десятков пользователей в моем удаленном приложении управления крахом в своем последнем выпущенном apk. Я искал здесь такую ошибку, но большинство ответов слишком устарели для последнего FB SDK, и в этом случае есть два странных обстоятельства:
a) Ошибка, похоже, происходит случайным образом. Я не смог воспроизвести его вообще ни на одном из моих устройств.
b) В FB-логике вообще не было изменений между этой версией и предыдущей версией, и в предыдущем выпуске я никогда не имел такой ошибки.
Поскольку я не мог найти какой-либо существенной разницы в коде между такими версиями, я думал, что проблема в том, что проблема с чем-то неладно могла произойти с Android Tools при создании последнего apk, но с тем, что тот же самый 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;)
-
Кажется, что он завершился после вызова статического метода Utility из loadAppSettingsAsync, который является статическим методом в пределах одного класса. Итак, если класс com.facebook.internal.Utility не существует или не может быть загружен, как возможно, что com.facebook.internal.Utility.loadAppSettingsAsync выполняется на первом месте? и если он существует и загружается, почему NoClassDefFoundError загружается на com.facebook.internal.Utility? Я так потерялся...
Здесь стек из 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