Getting Exception java.lang.NoClassDefFoundError:

2018-12-31 09:53发布

I have updated my application to the new firebase using the this and now when i compile my project i get the following exception.

Here is my logcat:

11:57:54.533 27844-27844/com.example.dayshift_2.traveyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dayshift_2.traveyy, PID: 27844
java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1591)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:4871)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4466)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4406)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

My Build.gradle :

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.example.dayshift_2.traveyy"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.google.android.gms:play-services:9.0.0'
compile 'com.google.firebase:firebase-database:9.0.0'
compile 'com.google.firebase:firebase-auth:9.0.0'
compile 'com.android.support:support-v13:23.3.0'
compile 'com.roughike:bottom-bar:1.2.1'
}


apply plugin: 'com.google.gms.google-services'

Not sure where i am getting this exception from. any help will be highly appreciated. Thank you

14条回答
素衣白纱
2楼-- · 2018-12-31 10:37

Downgrade your dependency in build.gradle file:

from:

compile 'com.google.android.gms:play-services:9.4.0'

to:

compile 'com.google.android.gms:play-services:7.3.0'

This worked in my case, hope same for you.

查看更多
泛滥B
3楼-- · 2018-12-31 10:39

It is so simple to fix guys.If you are using player-services and firebase both in your project make sure that you don't import all the available services in the google.Just import the APIs what you actually need. For example:

 compile 'com.google.firebase:firebase-messaging:9.2.0'
 compile 'com.google.android.gms:play-services:9.2.0'

Doing this way it can give you noclassdeffounderror .To fix this

remove play-services and sync your project. If you have dependency like using ads or maps in your app then define the specific API. like:

compile 'com.google.android.gms:play-services-maps:9.2.0'

Note: Maximum don't try to use multiDexEnabled true. This should be your last step to fix something.

Hope this is helpful.

查看更多
浪荡孟婆
4楼-- · 2018-12-31 10:40

try to solve...

in Gradle file

multiDexEnabled true

compile 'com.android.support:multidex:1.0.1'

Manifest file

application tag add this line

android:name="android.support.multidex.MultiDexApplication"

查看更多
弹指情弦暗扣
5楼-- · 2018-12-31 10:41

This worked for me:

  1. If you haven't already, update your 'Google Play Services' to Revision 30 from Android SDK Manager > Extras.

Android SDK Manager > Extras > Google Play Services

  1. And then add the line compile 'com.android.support:multidex:1.0.1' to your dependancies (or simply remove multiDexEnabled true if not required)

  2. Add this attribute to the application tag in manifest: android:name="android.support.multidex.MultiDexApplication"
    If you already have a custom application class defined in Android Manifest, extend it from MultiDexApplication instead of Application

Hope it helped!

查看更多
怪性笑人.
6楼-- · 2018-12-31 10:41

Step1: Fix multidex

Application class:

public class StudyNApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
 }

Grade file

defaultConfig { 
...
multiDexEnabled true
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

Step2: Fix java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions

Remove

compile 'com.google.android.gms:play-services:9.4.0'

Add two lib:

compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'

It worked fine.

查看更多
余生请多指教
7楼-- · 2018-12-31 10:45

I think I've found a solution for this issue at this answer, please give it a look and thank @Gabriele Mariotti, he wrote:

In your top-level build.gradle you have to add:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

Then in your module build.gradle:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ... 

}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
查看更多
登录 后发表回答