Je ne comprends pas ce qui ne va pas ici. J'ai cherché le correctif mais je n'en ai tout simplement pas trouvé. Quelqu'un comprend ce qui ne va pas?
E / AndroidRuntime: FATAL EXCEPTION: main Processus: com.eldercare.fajri.eldercare, PID: 30948 java.lang.NoClassDefFoundError: Échec de la résolution de: Lcom / google / android / gms / common / internal / zzbp; à com.google.firebase.firestore.FirebaseFirestore.zze (source inconnue) à com.google.firebase.firestore.FirebaseFirestore.getInstance (Inconnu La source) à 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 (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1076) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:937) Causé par: java.lang.ClassNotFoundException: la classe "com.google.android.gms.common.internal.zzbp" n'a pas été trouvée sur le chemin: DexPathList [[fichier 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 (source inconnue) Â à com.google.firebase.firestore.FirebaseFirestore.getInstance (Inconnu Source) Â à com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate (HomeActivity.java:71) sur 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) Â sur android.os.Handler.dispatchMessage (Handler.java:110) sur android.os.Looper.loop (Looper.java:203) sur android.app.ActivityThread.main (ActivityThread.java:6328) à java.lang.reflect.Method.invoke (méthode native) Â sur com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1076) Â à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:937)
Voici mon build.gradle:
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();
}
});
}
}
Voici mon 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
}
HomeActivity :
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'
3 Réponses :
Si l'application prend en charge la version Android inférieure à 20 [minSdkVersion 19], ces bibliothèques nécessitent Multidex.
Essayez ceci, cela fonctionnera.
Cela peut se produire parce que vous n'avez pas activé le multidexing. Vous devez ajouter la dépendance suivante à votre gradle.
implementation 'com.android.support:multidex:1.0.3'
Et définissez multiDexEnabled true dans defaultConfig pour activer le multidexing.
Pour résoudre ce problème, veuillez modifier les implémentations suivantes:
classpath 'com.android.tools.build:gradle:3.3.0'
en
classpath 'com.google.gms:google-services:4.2.0'
Dans votre niveau supérieur build.gradle , assurez-vous d'avoir la dernière version du plug-in de service Google:
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"
Et non 4.0.1 . Et
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"
Et pas 3.2.1 comme c'est le cas maintenant.
Merci, a travaillé pour moi. Dû essentiellement mettre à jour les versions des dépendances
Veuillez inclure ce que vous avez fait, les étapes qui ont conduit à cette erreur.
pouvez-vous partager votre projet gradle?
Le problème devrait également être sur cette ligne: com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate (HomeActivity.java:7 1)
@MetaSnarf Là, j'ai partagé les fichiers nécessaires
Firebase store ne nécessite-t-il pas une autre forme d'initialisation avant de pouvoir obtenir son instance?
@MetaSnarf avant cela, cela fonctionne parfaitement bien mais après avoir ajouté l'authentification de l'utilisateur, j'ai soudainement eu cette erreur