如何修复java.lang.NoClassDefFoundError崩溃

时间:2017-08-10 14:33:58

标签: java android facebook noclassdeffounderror account-kit

我的应用程序在Play商店上线。它并没有在所有设备中崩溃,但我只能在一些设备中看到这种崩溃。请帮我解决这个问题。

  

java.lang.NoClassDefFoundError:解析失败:   LCOM /谷歌/安卓/ GMS /认证/ API /电话/ 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)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5417)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)引起   by:java.lang.ClassNotFoundException:没有找到类   路径上的“com.google.android.gms.auth.api.phone.SmsRetriever”:   DexPathList [[zip文件   “/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)at   java.lang.ClassLoader.loadClass(ClassLoader.java:469)at   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)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5417)at   java.lang.reflect.Method.invoke(Native Method)at   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 at   java.lang.Class.classForName(Native Method)at   java.lang.BootClassLoader.findClass(ClassLoader.java:781)at   java.lang.BootClassLoader.loadClass(ClassLoader.java:841)at   java.lang.ClassLoader.loadClass(ClassLoader.java:504)                                                                                      引起:java.lang.NoClassDefFoundError:找不到类   引导类加载器;没有可用的堆栈跟踪

我可以看到Moto G(第3代和第4代),One Plus设备发生故障。

我将以下行添加到ProGuard文件中。

  

-ignorewarnings   -keep class * {public private *; }

1 个答案:

答案 0 :(得分:1)

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

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

此API不会在未安装Google Play服务的设备中提供 - 例如Amazon Fire设备或中国地区的设备。

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

查看您的例外情况,似乎某些Facebook工具包已经使用了这个API。