在Android Studio中添加新模块时出现java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB错误

我在项目中添加新模块( https://github.com/lomza/android-color-picker )时出现了一个奇怪的错误。 没有这个模块项目运行正常,但如果将此项目作为模块添加到我的主项目并编译它 – 一切看起来不错,但应用程序启动并强制立即关闭给我这个错误:

FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB at android.support.v4.app.NavUtils$NavUtilsImplJB.getParentActivityName(NavUtils.java:125) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:302) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:281) at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:142) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) at app.user.views.ActivityWelcome.onCreate(ActivityWelcome.java:33) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 

ActivityWelcome.java 33行是super.onCreate(savedInstanceState);

如果我从项目中删除此模块 – 一切都运行良好。 我在向项目添加任何新模块时遇到同样的问题。 哪里有问题?

编辑:我发现该项目在API 21上运行良好,但如果我在API 18上运行它,我收到错误。

我找到了解决这个问题的方法。 我正在使用多索引,它仅在Lolipop设备中可用,因此,要在Lolipop前设备中使用它,我需要添加此行

compile 'com.android.support:multidex:1.0.0'build.gradle文件

这一行android:name="android.support.multidex.MultiDexApplication" tag中的AndroidManifest.xml

对我来说 - 现在一切正常。

编辑:您可以在defaultConfig中将multiDexEnabled = true添加到gradle文件,而不是在清单中添加到android:name行。

基于堆栈跟踪,我强烈怀疑支持库版本不匹配的问题。 例如,似乎android-color-picker库依赖于一个非常过时的支持库版本(一年前更新)。 也许您的主要项目是使用更新版本的支持库? 为了避免这种崩溃,我建议重新配置android-color-picker库,以使用您在项目中其他地方使用的相同版本的支持库。