当前位置: 代码迷 >> Android >> 带有Multidex的Android ClassNotFound
  详细解决方案

带有Multidex的Android ClassNotFound

热度:129   发布时间:2023-08-04 09:59:01.0

我有一个包含10个外部模块的大项目。 显然,我启用了multidex,因为这些方法的总数超过10万。

现在,如果在项目中添加“ facebook-android”依赖项,则在启动应用程序时会出现ClassNotFound错误。 似乎该类未加载到classes.dex 如果删除此依赖项,则所有功能均正常运行。

恰好我有这个错误:

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

实际上,当您启用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,确定org.slf4j.LoggerFactory是否内置在APK的dex文件中。
  相关解决方案