Search code examples
javaandroidsmack

Android build variant debug gives java.lang.NoClassDefFoundError


I have been working on a project that has been perfectly fine, until i included the android-smack-xmpp library.

After this inclusion, i am not able to run the app on devices (API < 21) on debug mode. However i am able to run it on release build variant.

                                                             Process: com.example, PID: 496


                                                             java.lang.NoClassDefFoundError: com.example.network.ServerCalls$3
                                                                 at com.example.network.ServerCalls.initData(ServerCalls.java:167)
                                                                 at com.example.ui.fragmentsAndActivities.homeFeed.HomePageActivity.onCreate(HomePageActivity.java:212)
                                                                 at android.app.Activity.performCreate(Activity.java:5248)
                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
                                                                 at android.app.ActivityThread.access$800(ActivityThread.java:139)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                 at android.os.Looper.loop(Looper.java:136)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5086)
                                                                 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)

ServerCalls is included in the HomePageActivity, and compilation works just fine. What is that i could be missing here ?

Also HomePageActivity.java:212 is :

ServerCalls.samosaInitData()

Edit : I have been able to get it working my setting minifyEnabled and shrinkResources to true in gradle for the debug build. This is probably pointing at improper linking in the JVM. But this looks like a hack to me. Can somebody point me to a cleaner way of doing the same?


Solution

  • The error was multi-dexing the solution. The smack-api library introduction led to the 64k dex limit to be exceeded. Multidexing the solution does the trick.