Search code examples
javaandroidgoogle-analyticsgoogle-analytics-firebaseandroid-studio-2.1

Google Analytics throws NoClassDefFoundError at runtime


When compiling project, it works fine but when run it throws a runtime exception

java.lang.NoClassDefFoundError: com.fiz.AnalyticsTrackers$1

Everything is well configured like added google analytics dependency in gradle file

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.android.gms:play-services-analytics:7.3.0'
}

Permission in manifest file

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Initialization and trigger event from code base

AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
Tracker tracker = analyticsTrackers.getTracker();
tracker.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());

Here AnalyticsTrackers is a custom class which contains common GoogleAnalytics functionality.


Solution

  • Enable Multidex support solve this problem. Here is how to configure it.

    In build gradle file

     defaultConfig {
            multiDexEnabled true
     }
    
    compile 'com.android.support:multidex:1.0.1'
    

    In my application class

    public class MyApplication extends Application {
    
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this);
        }
    }