Я не понимаю, что здесь пошло не так.Я искал починку, но я просто не смог ее найти.Кто-нибудь понимает, что не так?
E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.eldercare.fajri.eldercare, PID: 30948 java.lang.NoClassDefFoundError: Ошибка разрешения: Lcom / google / android/ г / общий / внутренний / zzbp;на com.google.firebase.firestore.FirebaseFirestore.zze (неизвестный источник) на com.google.firebase.firestore.FirebaseFirestore.getInstance (неизвестный источник) на com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate (HomeActivity.java): 71) в android.app.Activity.performCreate (Activity.java:6736) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1124) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2730) в Android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2842) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1560) на android.os.Handler.dispatchMessage (Handler.java:110) в android.os.Looper.loop (Looper.java:203) в android.app.ActivityThread.main (ActivityThread.java:6328) в java.lang.reflect.Method.invoke (Собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1076) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:937) Причина: java.lang.ClassNotFoundException: не найден класс «com.google.android.gms.common.internal.zzbp» по пути: DexPathList [[zip-файл »/ 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]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java:380) в java.lang.ClassLoader.loadClass (ClassLoader.java:312)на com.google.firebase.firestore.FirebaseFirestore.zze (неизвестный источник) на com.google.firebase.firestore.FirebaseFirestore.getInstance (неизвестный источник) на com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate (HomeActivity.java): 71) в android.app.Activity.performCreate (Activity.java:6736) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1124) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2730) в Android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2842) в android.app.ActivityThread.-wrap12 (ActivityThread.java) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1560) в android.os.Handler.dispatchMessage (Handler.java:110) в android.os.Looper.loop (Looper.java:203) в android.app.ActivityThread.main (ActivityThread.java:6328) в java.lang.reflect.Method.invoke (собственный метод)на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1076) на 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'
Вот мой проект. 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
}
HomeActivity:
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();
}
});
}
}