【问题标题】:how to fix java.lang.NoClassDefFoundError crash如何修复 java.lang.NoClassDefFoundError 崩溃
【发布时间】:2018-01-18 21:03:24
【问题描述】:

我的应用已在 Play 商店上线。它并非在所有设备中都崩溃,但我只能在少数设备中看到这种崩溃。请帮我解决这个问题。

java.lang.NoClassDefFoundError:解析失败: Lcom/google/android/gms/auth/api/phone/SmsRetriever;在 com.facebook.accountkit.internal.PhoneLoginController.createSmsToken(PhoneLoginController.java:250) 在 com.facebook.accountkit.internal.PhoneLoginController.logIn(PhoneLoginController.java:188) 在 com.facebook.accountkit.internal.LoginManager.logInWithPhoneNumber(LoginManager.java:372) 在 com.facebook.accountkit.internal.AccountKitController.logInWithPhoneNumber(AccountKitController.java:627) 在 com.facebook.accountkit.ui.PhoneLoginFlowManager.logInWithPhoneNumber(PhoneLoginFlowManager.java:57) 在 com.facebook.accountkit.ui.ActivityPhoneHandler.onPhoneLoginComplete(ActivityPhoneHandler.java:189) 在 com.facebook.accountkit.ui.AccountKitActivity$1.onReceive(AccountKitActivity.java:176) 在 android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297) 在 android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46) 在 android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起 作者:java.lang.ClassNotFoundException:找不到类 路径上的“com.google.android.gms.auth.api.phone.SmsRetriever”: DexPathList[[压缩文件 "/data/app/gharkadabba.gharkadabba-1/base.apk"],nativeLibraryDirectories=[/data/app/gharkadabba.gharkadabba-1/lib/x86, /vendor/lib, /system/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在 com.facebook.accountkit.internal.PhoneLoginController.createSmsToken(PhoneLoginController.java:250) 在 com.facebook.accountkit.internal.PhoneLoginController.logIn(PhoneLoginController.java:188) 在 com.facebook.accountkit.internal.LoginManager.logInWithPhoneNumber(LoginManager.java:372) 在 com.facebook.accountkit.internal.AccountKitController.logInWithPhoneNumber(AccountKitController.java:627) 在 com.facebook.accountkit.ui.PhoneLoginFlowManager.logInWithPhoneNumber(PhoneLoginFlowManager.java:57) 在 com.facebook.accountkit.ui.ActivityPhoneHandler.onPhoneLoginComplete(ActivityPhoneHandler.java:189) 在 com.facebook.accountkit.ui.AccountKitActivity$1.onReceive(AccountKitActivity.java:176) 在 android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297) 在 android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46) 在 android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116) 在 android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 抑制:java.lang.ClassNotFoundException: com.google.android.gms.auth.api.phone.SmsRetriever 在 java.lang.Class.classForName(Native Method) 在 java.lang.BootClassLoader.findClass(ClassLoader.java:781) 在 java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:504) 引起:java.lang.NoClassDefFoundError: Class not found using 引导类加载器;没有可用的堆栈跟踪

我可以看到 Moto G(第 3 代和第 4 代),一加一设备崩溃了。

我在 ProGuard 文件中添加了以下行。

-忽略警告 -保持类* {公共私人*; }

【问题讨论】:

  • 找不到的类是什么?异常中缺少它...
  • 添加你的 pro-guard 配置文件
  • @NileshDeokar。更新了 pro-guard 文件代码。
  • 此类设备中是否存在特定类不存在的可能性?使用反射怎么样?
  • 不,那是不可能的。 @斯瓦蒂。它的安卓 6/7。这些是最新的安卓版本。如果我将此添加到 gradle.然后只有它崩溃了。编译 'com.google.firebase:firebase-messaging:11.0.4' 编译 'com.google.firebase:firebase-core:11.0.4'

标签: java android facebook noclassdeffounderror account-kit


【解决方案1】:

SMS Retriever API 在 Google Play Services v10.2 中可用,用于自动验证 OTP SMS。

https://developers.google.com/identity/sms-retriever/

此 API 将不适用于未安装 Google Play 服务的设备 - 例如 Amazon Fire 设备或中国地区的设备。

如果您使用此 API,您必须在访问此 API 之前检查设备中是否安装了 Play 服务。

查看您的异常,似乎该 API 已被某些 Facebook 工具包使用。

【讨论】:

  • 是的,Facebook Account kit 发生异常。
  • 您可以查看崩溃报告并确认这些崩溃是否仅发生在没有 Play 服务 v10.2 的设备中
猜你喜欢
  • 2019-10-07
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2015-05-29
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多