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