java.lang.NoClassDefFoundError(解析失败:Lcom / google / android / gms / common / internal / zzbp)
一身转战三千里,一剑曾当百万师。这篇文章主要讲述java.lang.NoClassDefFoundError:解析失败:Lcom / google / android / gms / common / internal / zzbp相关的知识,希望能为你提供帮助。
我不明白这里出了什么问题。我一直在寻找修复,但我找不到任何东西。谁知道什么是错的?
E / androidRuntime:FATAL EXCEPTION:main进程:com.eldercare.fajri.eldercare,PID:30948 java.lang.NoClassDefFoundError:失败的解析:Lcom / google / android / gms / common / internal / zzbp; 来自com.google.firebase.firestore.FirebaseFirestore.getInstance(未知来源)的com.google.firebase.firestore.FirebaseFirestore.zze(未知来源)com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java) :71)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730)android.app.Activity.performCreate(Activity.java:6736) android.app.Handler上android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1560)的android.app.ActivityThread.-wrap12(ActivityThread.java)上的.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842) android.app.Looper.loop(Looper.java:203)上的.dispatchMessage(Handler.java:110)位于android.app.ActivityThread.main(ActivityThread.java:6328)的java.lang.reflect.Method.invoke(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1076)at com.android.internal.os.ZygoteInit.main(Zygo) teInit.java:937)引起:java.lang.ClassNotFoundException:在路径上找不到类“com.google.android.gms.common.internal.zzbp”:DexPathList [[zip file“/ data / app / com .eldercare.fajri.eldercare-1 / base.apk“],nativeLibraryDirectories = [/ data / app / com.eldercare.fajri.eldercare-1 / lib / arm64,/ system / lib64,/ vendor / lib64,/ system /在java.lang.ClassLoader.loadClass(ClassLoader.java:312)的java.lang.ClassLoader.loadClass(ClassLoader.java:380)的dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)处的vendor / lib64]来自com.google.firebase.firestore.FirebaseFirestore.getInstance(未知来源)的com.google.firebase.firestore.FirebaseFirestore.zze(未知来源)com.eldercare.fajri.eldercare.boundary.HomeActivity.onCreate(HomeActivity.java) :71)在android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1124)上的android.app.Activity.performCreate(Activity.java:6736)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2730)at和位于android.app的Android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1560)的android.app.ActivityThread.-wrap12(ActivityThread.java)中的roid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2842)。位于android.app.Looper.loop(Looper.java:203)的Handler.dispatchMessage(Handler.java:110)位于android.app.ActivityThread.main(ActivityThread.java:6328)的java.lang.reflect.Method.invoke (本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1076)at 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'
这是我的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
}
主页活动:
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();
}
});
}
}
答案这可能是因为您尚未启用多索引。您需要向gradle添加以下依赖项。
implementation 'com.android.support:multidex:1.0.3'
并在
multiDexEnabled true
中设置defaultConfig
以打开多索引。另一答案如果app支持的android版本低于20 [minSdkVersion 19],这些库需要Multidex。
Enable Mutidex
试试这个,它会起作用。
另一答案要解决此问题,请更改以下实现:
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 Service插件:classpath 'com.google.gms:google-services:4.2.0'
而不是
4.0.1
。和classpath 'com.android.tools.build:gradle:3.3.0'
【java.lang.NoClassDefFoundError(解析失败:Lcom / google / android / gms / common / internal / zzbp)】而不是像现在这样的
3.2.1
。推荐阅读
- 如何在android中实现视图滑动
- 使用activity方法后,Android应用程序与RabbitMQ断开连接
- Xamarin.Android AndroidEnvironment文件未应用于更改GC Bridge实现
- 如何在新的app界面中的jTessBoxEditor(tesseract)中生成tiff / box()
- 触摸无法在Android设备上的Unity上使用
- JAX-RS(泽西实现)ExceptionMapper 没有捕获ConstraintViolationException
- 如何找到互联网连接类型是否通过java代码Wifi或LAN连接不与android
- 在Android中使用UDP和MQTT协议编写聊天编程
- 从.Net到vb6的Web服务的DLL - 如何设置app.config