Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Firebase bug

Failed resolution of: Lcom/google/android/gms/common/internal/zzbq

    5 mai 2018 à 21:52:37

    Bonjour,

    Je suis en train de suivre le cours Android sur Firebase. Jusque la tout fonctionnait bien mais dans la 2eme partie du cours mon application ne fonctionne plus, au moment ou il faut faire une requete Firestore pour recuperer les information sur l'utilisateur et pouvoir les mettre a jour depuis l'app.

    Je suis revenu en arriere plusieurs fois et verifier mon code je suis bloque, mon app bug toujours au meme endroit au moment de recuperer l'utilisateur depuis la base de donnee pour mettre a jour l'UI de ProfileActivity.

    ProfileActivity ne se lance pas et jai ceci dans mon stacktrace:

    05-05 12:42:00.137 15192-15192/com.openclassrooms.firebaseoc E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.openclassrooms.firebaseoc, PID: 15192
        java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbq;
            at com.google.firebase.firestore.FirebaseFirestore.zze(Unknown Source:2)
            at com.google.firebase.firestore.FirebaseFirestore.getInstance(Unknown Source:16)
            at com.openclassrooms.firebaseoc.api.UserHelper.getUsersCollection(UserHelper.java:20)
            at com.openclassrooms.firebaseoc.api.UserHelper.getUser(UserHelper.java:35)
            at com.openclassrooms.firebaseoc.auth.ProfileActivity.updateUIWhenCreating(ProfileActivity.java:97)
            at com.openclassrooms.firebaseoc.auth.ProfileActivity.onCreate(ProfileActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:7174)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
            at android.app.ActivityThread.-wrap11(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
            at android.os.Handler.dispatchMessage(Handler.java:105)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6938)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
         Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzbq" on path: DexPathList[[zip file "/data/app/com.openclassrooms.firebaseoc-ZRuBFdB0glb-Q95Cz8hMcw==/base.apk"],nativeLibraryDirectories=[/data/app/com.openclassrooms.firebaseoc-ZRuBFdB0glb-Q95Cz8hMcw==/lib/arm64, /system/lib64, /system/vendor/lib64]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

    En utilisant de ldebugger j'ai identifier que le code bug au moment de recuperer l'isntance de ma collection sur Firestore depuis ma class UserHelper:

    Mon code:

    Extrait classe ProfileActivity

    private void updateUIWhenCreating(){
    
            if (this.getCurrentUser() != null){
    
                if (this.getCurrentUser().getPhotoUrl() != null) {
                    Glide.with(this)
                            .load(this.getCurrentUser().getPhotoUrl())
                            .apply(RequestOptions.circleCropTransform())
                            .into(imageViewProfile);
                }
    
                String email = TextUtils.isEmpty(this.getCurrentUser().getEmail()) ? getString(R.string.info_no_email_found) : this.getCurrentUser().getEmail();
    
                this.textViewEmail.setText(email);
    
                // 7 - Get additional data from Firestore (isMentor & Username)
                UserHelper.getUser(this.getCurrentUser().getUid()).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                    @Override
                    public void onSuccess(DocumentSnapshot documentSnapshot) {
                        User currentUser = documentSnapshot.toObject(User.class);
                        String username = TextUtils.isEmpty(currentUser.getUsername()) ? getString(R.string.info_no_username_found) : currentUser.getUsername();
                        checkBoxIsMentor.setChecked(currentUser.getIsMentor());
                        textInputEditTextUsername.setText(username);
                    }
                });
            }
        }

    Extrait classe UserHelper

    public class UserHelper {
    
        private static final String COLLECTION_NAME = "users";
    
        // --- COLLECTION REFERENCE ---
    
        public static CollectionReference getUsersCollection(){
            return FirebaseFirestore.getInstance().collection(COLLECTION_NAME);
        }
    ...
    
    public static Task<DocumentSnapshot> getUser(String uid){
            return UserHelper.getUsersCollection().document(uid).get();
        }

    Project Gradle:

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

    app gradle

    apply plugin: 'com.android.application'
    apply plugin: 'io.fabric'
    
    android {
        compileSdkVersion 27
        defaultConfig {
            applicationId "com.openclassrooms.firebaseoc"
            minSdkVersion 17
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        implementation 'com.android.support:design:27.0.2'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        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'
    
        //GLIDE
        implementation 'com.github.bumptech.glide:glide:4.3.1'
        annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
    
        //BUTTERKNIFE
        compile 'com.jakewharton:butterknife:8.8.1'
        annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    
        // Firebase
        implementation "com.google.firebase:firebase-core:11.8.0"
        implementation 'com.google.firebase:firebase-messaging:11.8.0'
    
        // FirebaseUI
        implementation 'com.firebaseui:firebase-ui-storage:3.1.3'
        implementation 'com.firebaseui:firebase-ui-auth:3.1.3'
        implementation 'com.firebaseui:firebase-ui-firestore:3.1.3'
    
        // FACEBOOK LOGIN SUPPORT
        implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
    
        //EASY PERMISSIONS
        implementation 'pub.devrel:easypermissions:1.1.1'
    
        //Crashlytic
        compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
            transitive = true
        }
    }
    
    apply plugin: 'com.google.gms.google-services'

    Je suis bloquee et ne peut plus avancer, je continue a chercher de mon cote mais si quelqu'un a une piste

    Merci de votre aide





    • Partager sur Facebook
    • Partager sur Twitter

    -Galou

    Cours Firebase bug

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown