java.lang.NoClassDefFoundError: Сбой разрешения: Lcom / google / android / gms / common / internal / zzbp - PullRequest
0 голосов
/ 01 февраля 2019

Я не понимаю, что здесь пошло не так.Я искал починку, но я просто не смог ее найти.Кто-нибудь понимает, что не так?

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();
                    }
                });
    }
}

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Это может происходить, потому что вы не включили мультидексирование.Вам нужно добавить следующую зависимость в ваш gradle.

implementation 'com.android.support:multidex:1.0.3'

И установить multiDexEnabled true внутри defaultConfig, чтобы включить мультидексирование.

0 голосов
/ 01 февраля 2019

Чтобы решить эту проблему, измените следующие реализации:

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"

на

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"

В вашем файле верхнего уровня build.gradle убедитесь, что установлена ​​последняя версия GoogleСервисный плагин:

classpath 'com.google.gms:google-services:4.2.0'

А не 4.0.1

classpath 'com.android.tools.build:gradle:3.3.0'

А не 3.2.1, как сейчас.

0 голосов
/ 01 февраля 2019

Если приложение поддерживает версию Android ниже 20 [minSdkVersion 19], для этих библиотек требуется Multidex.

Включить Mutidex

Попробуйте, это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...