java.lang.NoClassDefFoundError(解析失败:Lcom / google / android / gms / common / internal / zzbp)

一身转战三千里,一剑曾当百万师。这篇文章主要讲述java.lang.NoClassDefFoundError:解析失败:Lcom / google / android / gms / common / internal / zzbp相关的知识,希望能为你提供帮助。
我不明白这里出了什么问题。我一直在寻找修复,但我找不到任何东西。谁知道什么是错的?

E / androidRuntime:FATAL EXCEPTION:main进程:com.eldercare.fajri.eldercare,PID:30948 java.lang.NoClassDefFoundError:失败的解析:Lcom / google / android / gms / common / internal / zzbp; 来自com.google.firebase.firestore.FirebaseFirestore.getInstance(未知来源)的com.google.firebase.firestore.FirebaseFirestore.zze(未知来源)com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java) :71)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730)android.app.Activity.performCreate(Activity.java:6736) android.app.Handler上android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1560)的android.app.ActivityThread.-wrap12(ActivityThread.java)上的.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842) android.app.Looper.loop(Looper.java:203)上的.dispatchMessage(Handler.java:110)位于android.app.ActivityThread.main(ActivityThread.java:6328)的java.lang.reflect.Method.invoke(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1076)at com.android.internal.os.ZygoteInit.main(Zygo) teInit.java:937)引起:java.lang.ClassNotFoundException:在路径上找不到类“com.google.android.gms.common.internal.zzbp”:DexPathList [[zip file“/ data / app / com .eldercare.fajri.eldercare-1 / base.apk“],nativeLibraryDirectories = [/ data / app / com.eldercare.fajri.eldercare-1 / lib / arm64,/ system / lib64,/ vendor / lib64,/ system /在java.lang.ClassLoader.loadClass(ClassLoader.java:312)的java.lang.ClassLoader.loadClass(ClassLoader.java:380)的dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)处的vendor / lib64]来自com.google.firebase.firestore.FirebaseFirestore.getInstance(未知来源)的com.google.firebase.firestore.FirebaseFirestore.zze(未知来源)com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java) :71)在android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1124)上的android.app.Activity.performCreate(Activity.java:6736)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730)at和位于android.app的Android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1560)的android.app.ActivityThread.-wrap12(ActivityThread.java)中的roid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842)。位于android.app.Looper.loop(Looper.java:203)的Handler.dispatchMessage(Handler.java:110)位于android.app.ActivityThread.main(ActivityThread.java:6328)的java.lang.reflect.Method.invoke (本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1076)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:937)
这是我的build.gradle:
apply plugin: 'com.android.application'android { compileSdkVersion 26 defaultConfig { applicationId "com.eldercare.fajri.eldercare" minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.RDescActivity.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:support-vector-drawable:26.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' implementation 'com.google.firebase:firebase-core:16.0.1' implementation 'com.google.firebase:firebase-firestore:11.4.2' implementation 'com.google.firebase:firebase-auth:16.0.1' implementation 'com.android.support:design:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'com.github.d-max:spots-dialog:0.7@aar' implementation 'com.rengwuxian.materialedittext:library:2.1.4'implementation "com.google.android.gms:play-services-base:15.0.1"implementation "com.google.android.gms:play-services-gcm:15.0.1"implementation 'com.github.wdullaer:MaterialDateTimePicker:v3.0.0'implementation 'com.github.ganfra:material-spinner:1.1.1'implementation 'gr.pantrif:easy-android-splash-screen:0.0.1'androidTestImplementation 'org.testng:testng:6.9.6' } apply plugin: 'com.google.gms.google-services'

这是我的project.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.google.gms:google-services:4.0.1'// NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }allprojects { repositories { google() jcenter() maven{url "http://maven.google.com" } maven{ url "https://jitpack.io" } } }task clean(type: Delete) { delete rootProject.buildDir }

主页活动:
package com.eldercare.fajri.eldercare.boundary; import android.app.Activity; import android.app.DatePickerDialog; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import android.widget.Toast; import com.eldercare.fajri.eldercare.control.ListItemReminderAdapter; import com.eldercare.fajri.eldercare.control.Reminder; import com.eldercare.fajri.eldercare.R; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.firestore.CollectionReference; import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.QuerySnapshot; import com.rengwuxian.materialedittext.MaterialEditText; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import dmax.dialog.SpotsDialog; public class HomeActivity extends AppCompatActivity {List< Reminder> reminderList = new ArrayList< > (); FirebaseFirestore db; RecyclerView listItem; Reminder reminder; RecyclerView.LayoutManager layoutManager; public static Activity ha; FloatingActionButton fab; AppCompatButton next,prev; public String date; public TextView thedate; public MaterialEditText title,description,time; public boolean isUpdate = false; public boolean menu=false; public String idUpdate; ListItemReminderAdapter adapter; SpotsDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); ha = this; db = FirebaseFirestore.getInstance(); thedate = (TextView)findViewById(R.id.thedate); dialog = new SpotsDialog(this); title = (MaterialEditText)findViewById(R.id.title); description = (MaterialEditText)findViewById(R.id.description); time = (MaterialEditText)findViewById(R.id.time); final Calendar now; now = Calendar.getInstance(); int year = now.get(Calendar.YEAR); int month = now.get(Calendar.MONTH); int day = now.get(Calendar.DAY_OF_MONTH); final String today = (day +"-"+(month+1)+"-"+ year); date = today; thedate.setText(today); if(thedate.getText().equals(today)){ thedate.setText("Today"); }prev = (AppCompatButton)findViewById(R.id.prev); prev.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { now.add(Calendar.DAY_OF_MONTH,-1); int day = now.get(Calendar.DAY_OF_MONTH); int month=now.get(Calendar.MONTH); if(day< 1) { now.add(Calendar.MONTH,-1); }int year = now.get(Calendar.YEAR); if ((month+1)< 1){ now.add(Calendar.YEAR,-1); }date = (day +"-"+(month+1)+"-"+ year); thedate.setText(day +"-"+(month+1)+"-"+ year); if(thedate.getText().equals(today)){ thedate.setText("Today"); } loadData(); } }); next = (AppCompatButton)findViewById(R.id.next); next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int dlong,mlong; dlong = now.getActualMaximum(Calendar.DAY_OF_MONTH); mlong = now.getActualMaximum(Calendar.MONTH); now.add(Calendar.DAY_OF_MONTH,+1); int day = now.get(Calendar.DAY_OF_MONTH); int month=now.get(Calendar.MONTH); if(day> dlong) { now.add(Calendar.MONTH,+1); }int year = now.get(Calendar.YEAR); if (month> mlong){ now.add(Calendar.YEAR,+1); }date = (day +"-"+(month+1)+"-"+ year); thedate.setText(day +"-"+(month+1)+"-"+ year); if(thedate.getText().equals(today)){ thedate.setText("Today"); } loadData(); } }); thedate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int year = now.get(Calendar.YEAR); int month = now.get(Calendar.MONTH); int day = now.get(Calendar.DAY_OF_MONTH); DatePickerDialog mDatePicker = new DatePickerDialog(HomeActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { date = (dayOfMonth +"-"+(month+1)+"-"+ year); thedate.setText(dayOfMonth+"-"+(month+1)+"-"+year); if(thedate.getText().equals(today)){ thedate.setText("Today"); } now.set(year,month,dayOfMonth); loadData(); } },year, month, day); mDatePicker.show(); } }); fab = (FloatingActionButton)findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(HomeActivity.this,ReminderActivity.class); intent.putExtra("isUpdate","false"); startActivity(intent); } }); listItem = (RecyclerView)findViewById(R.id.Reminder); listItem.setHasFixedSize(true); layoutManager = new LinearLayoutManager(this); listItem.setLayoutManager(layoutManager); loadData(); }public void loadData() { dialog.show(); CollectionReference cr = db.collection("Reminder").document(date).collection("remind"); if(reminderList.size() > 0) reminderList.clear(); cr.get() .addOnCompleteListener(new OnCompleteListener< QuerySnapshot> () { @Override public void onComplete(@NonNull Task< QuerySnapshot> task) { for (DocumentSnapshot doc:task.getResult()) { reminder = new Reminder(doc.getString("id"), doc.getString("Title"), doc.getString("description"), doc.getString("date"), doc.getString("time"), doc.getString("done")); reminderList.add(reminder); }adapter = new ListItemReminderAdapter(HomeActivity.this, reminderList); listItem.setAdapter(adapter); dialog.dismiss(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(HomeActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show(); } }); } }

答案这可能是因为您尚未启用多索引。您需要向gradle添加以下依赖项。
implementation 'com.android.support:multidex:1.0.3'

并在multiDexEnabled true中设置defaultConfig以打开多索引。
另一答案如果app支持的android版本低于20 [minSdkVersion 19],这些库需要Multidex。
Enable Mutidex
试试这个,它会起作用。
另一答案要解决此问题,请更改以下实现:
implementation 'com.google.firebase:firebase-core:16.0.1' implementation 'com.google.firebase:firebase-firestore:11.4.2' implementation 'com.google.firebase:firebase-auth:16.0.1' implementation "com.google.android.gms:play-services-base:15.0.1" implementation "com.google.android.gms:play-services-gcm:15.0.1"


implementation 'com.google.firebase:firebase-core:16.0.7' implementation 'com.google.firebase:firebase-firestore:18.0.0' implementation 'com.google.firebase:firebase-auth:16.1.0' implementation "com.google.android.gms:play-services-base:16.1.0" implementation "com.google.android.gms:play-services-gcm:16.0.0"

在您的顶级build.gradle文件中,请务必使用最新版本的Google Service插件:
classpath 'com.google.gms:google-services:4.2.0'

而不是4.0.1。和
classpath 'com.android.tools.build:gradle:3.3.0'

【java.lang.NoClassDefFoundError(解析失败:Lcom / google / android / gms / common / internal / zzbp)】而不是像现在这样的3.2.1

    推荐阅读