带有multidex的Android ClassNotFound

时间:2015-10-19 17:44:36

标签: android gradle multidex

我有一个包含10个外部模块的大项目。显然我已经启用了multidex,因为总方法超过了100k。

现在,如果我在项目中添加“facebook-android”依赖项,那么当我启动应用程序时,我会遇到一些错误ClassNotFound。似乎该类未加载到classes.dex。如果删除此依赖项,则一切正常。

我确实是这个错误:

Suppressed: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory

1 个答案:

答案 0 :(得分:0)

实际上启用multidex时。应用程序启动后,应用程序将加载所有其他dexes。我发布了一些代码。

 public static void install(Context context) {
    Log.i("MultiDex", "install");
    if(IS_VM_MULTIDEX_CAPABLE) {
        Log.i("MultiDex", "VM has multidex support, MultiDex support library is disabled.");
    } else if(VERSION.SDK_INT < 4) {
        throw new RuntimeException("Multi dex installation failed. SDK " + VERSION.SDK_INT + " is unsupported. Min SDK version is " + 4 + ".");
    } 

所以

  1. 首先检查您的logcat以查看MultiDex是否遇到错误。
  2. 如果没有找到错误。检查你的APK,找出是否 在APK的dex文件中构建了 org.slf4j.LoggerFactory