java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB error when adding new module in Android Studio

java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB error when adding new module in Android Studio

我在向我的项目添加新模块 (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.access0(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,我收到错误消息。

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

我找到了这个问题的解决方案。我使用的是 multidexing,它仅在 Lolipop 设备中可用,因此,要在 Lolipop 之前的设备中使用它,我需要添加这一行

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

还有这一行 android:name="android.support.multidex.MultiDexApplication"AndroidManifest.xml<appplication 标签中。

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

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