java.lang.NoClassDefFoundError:com.google.android.gms.internal.zzmp

java.lang.NoClassDefFoundError:com.google.android.gms.internal.zzmp

问题描述:

启动我的应用时,在Android 4.4设备上接收到此错误.应用立即崩溃.但是我在Android 5.1设备上没有此错误.有任何线索吗?

Receiving this error on Android 4.4 device when starting my app. App immediately crashes. However I don't have this error on Android 5.1 device. Any clue?

10-15 22:35:06.306 14072-14072/com D/dalvikvm:VFY:在0x0000处替换操作码0x71 10-15 22:35:06.306 14072-14072/com D/AndroidRuntime:关闭VM 10-15 22:35:06.306 14072-14072/com W/dalvikvm:threadid = 1:线程以未捕获的异常退出(group = 0x4304b160) 10-15 22:35:06.306 14072-14072/com E/AndroidRuntime:致命异常:主 Process:com.,PID:14072 java.lang.NoClassDefFoundError:com.google.android.gms.internal.zzmp 在com.google.android.gms.measurement.internal.zzz.zzj(未知来源) 在com.google.android.gms.measurement.internal.zzv.(未知来源) 在com.google.android.gms.measurement.internal.zzz.zzAq(未知来源) 在com.google.android.gms.measurement.internal.zzv.zzaL(未知来源) 位于com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(未知来源) 在android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 在android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 在android.app.ActivityThread.installProvider(ActivityThread.java:4830) 在android.app.ActivityThread.installContentProviders(ActivityThread.java:4425) 在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4365) 在android.app.ActivityThread.access $ 1500(ActivityThread.java:138) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1296) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:149) 在android.app.ActivityThread.main(ActivityThread.java:5061) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:787) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) 在dalvik.system.NativeStart.main(本机方法)

10-15 22:35:06.306 14072-14072/com D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0000 10-15 22:35:06.306 14072-14072/com D/AndroidRuntime﹕ Shutting down VM 10-15 22:35:06.306 14072-14072/com W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4304b160) 10-15 22:35:06.306 14072-14072/com E/AndroidRuntime﹕ FATAL EXCEPTION: main Process:com., PID: 14072 java.lang.NoClassDefFoundError: com.google.android.gms.internal.zzmp at com.google.android.gms.measurement.internal.zzz.zzj(Unknown Source) at com.google.android.gms.measurement.internal.zzv.(Unknown Source) at com.google.android.gms.measurement.internal.zzz.zzAq(Unknown Source) at com.google.android.gms.measurement.internal.zzv.zzaL(Unknown Source) at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1591) at android.content.ContentProvider.attachInfo(ContentProvider.java:1562) at android.app.ActivityThread.installProvider(ActivityThread.java:4830) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4425) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4365) at android.app.ActivityThread.access$1500(ActivityThread.java:138) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:149) at android.app.ActivityThread.main(ActivityThread.java:5061) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) at dalvik.system.NativeStart.main(Native Method)

需要将此添加到扩展Application的类中:

needed to add this in class that extends Application:

 @Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

我注意到此答案越来越受欢迎,因此请注意我对这个问题的评论:

注意,不过对任何人来说都是如此!真正的问题是我正在使用整个Google Play服务框架,这迫使我进入了多种dex.如果可以的话,请避免使用多种dex,因为它会减慢构建速度.需从Google Play服务获取.因此,不要放置"compile'c​​om.google.android.gms:play-services:8.1.0'",而应放置"compile'c​​om.google.android.gms:play-services-location:8.1"例如.0'."

"ATTENTION To anybody reading this though! The real problem was that I was using the ENTIRE google play services framework which was forcing me into multi dex. Avoid multi dex if you can because it slows down builds. Only bring in what you need from google play services. So instead of putting "compile 'com.google.android.gms:play-services:8.1.0'", put "compile 'com.google.android.gms:play-services-location:8.1.0'" for example."