title: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbp
body: <p>I don't understand what went wrong here. I've been searching for the fix but i just couldn't find any. Anyone understand what's wrong?</p>
  
  <blockquote>
    <p>E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.eldercare.fajri.eldercare, PID: 30948
        java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbp;
            at com.google.firebase.firestore.FirebaseFirestore.zze(Unknown Source)
            at com.google.firebase.firestore.FirebaseFirestore.getInstance(Unknown
    Source)
            at com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java:71)
            at android.app.Activity.performCreate(Activity.java:6736)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842)
            at android.app.ActivityThread.-wrap12(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:203)
            at android.app.ActivityThread.main(ActivityThread.java:6328)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1076)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:937)
         Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzbp" on path:
    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/vendor/lib64]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at com.google.firebase.firestore.FirebaseFirestore.zze(Unknown Source) 
            at com.google.firebase.firestore.FirebaseFirestore.getInstance(Unknown
    Source) 
            at com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java:71) 
            at android.app.Activity.performCreate(Activity.java:6736) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842) 
            at android.app.ActivityThread.-wrap12(ActivityThread.java) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560) 
            at android.os.Handler.dispatchMessage(Handler.java:110) 
            at android.os.Looper.loop(Looper.java:203) 
            at android.app.ActivityThread.main(ActivityThread.java:6328) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1076) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:937)</p>
  </blockquote>
  
  <p>Here's my build.gradle :</p>
  
  <pre><code>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'
  </code></pre>
  
  <p>Here's my project.gradle :</p>
  
  <pre><code>// 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
  }
  </code></pre>
  
  <p>HomeActivity :</p>
  
  <pre><code>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&lt;Reminder&gt; reminderList = new ArrayList&lt;&gt;();
  
      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&lt;1) {
                      now.add(Calendar.MONTH,-1);
                  }
  
                  int year = now.get(Calendar.YEAR);
                  if ((month+1)&lt;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&gt;dlong) {
                      now.add(Calendar.MONTH,+1);
                  }
  
                  int year = now.get(Calendar.YEAR);
                  if (month&gt;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() &gt; 0)
              reminderList.clear();
          cr.get()
                  .addOnCompleteListener(new OnCompleteListener&lt;QuerySnapshot&gt;() {
                      @Override
                      public void onComplete(@NonNull Task&lt;QuerySnapshot&gt; 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();
                      }
                  });
      }
  }
  </code></pre>