Android报错:Failed resolution of: Landroidx/appcompat/R$drawable; Didn‘t find class “androidx.appcom

  • Post author:
  • Post category:其他




AS信息:


AS版本:4.0.2 , gradle:6.7.1 , gradleClassPath:”com.android.tools.build:gradle:4.0.2″:




问题描述:


运行崩溃

Process: com.rl.jmessagedemo, PID: 7176
    java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/R$drawable;
        at androidx.appcompat.widget.AppCompatDrawableManager$1.<init>(AppCompatDrawableManager.java:68)
        at androidx.appcompat.widget.AppCompatDrawableManager.preload(AppCompatDrawableManager.java:62)
        at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:337)
        at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:287)
        at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:230)
        at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:584)
        at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:139)
        at android.app.Activity.attach(Activity.java:7899)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3401)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.appcompat.R$drawable" on path: DexPathList[[zip file "/data/app/~~RyJA_32z-s2GVwOyfnjzFg==/com.rl.jmessagedemo-8x7-VVnMD4vZbMnp7ROP8g==/base.apk"],nativeLibraryDirectories=[/data/app/~~RyJA_32z-s2GVwOyfnjzFg==/com.rl.jmessagedemo-8x7-VVnMD4vZbMnp7ROP8g==/lib/x86, /data/app/~~RyJA_32z-s2GVwOyfnjzFg==/com.rl.jmessagedemo-8x7-VVnMD4vZbMnp7ROP8g==/base.apk!/lib/x86, /system/lib, /system_ext/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)



原因分析:

因为上面我AS的版本和Gradle的版本都很高排除其他博主所说的升级版本问题,也并不是classPath路径和Gradle的版本不兼容问题,顾都排除,,,因为项目昨天还可以运行今天就报错 我寻思也没动什么配置文件,,其他博主基本都是说关掉AS中的insert run

在这里插入图片描述

试了之后好像没点用还是一样崩溃,因为这个为报错信息太形象了,加上我基本就没动代码,是个很耗时的问题,后来具体原因具体分析,经过大量搜索我通过AS崩溃日志里的一小段报错原因找到了类似的文章,加上我之前开发的一些经验,想起了MultiDex的配置,当App中的方法超过65536 个会进行分包处理,那么这个时候就需要进行手动配置多个dex文件代码如下:




解决方案:

App目录下build.gradle配置

  // 多dex配置
    implementation 'com.android.support:multidex:1.0.3'

     defaultConfig {
      //方法数超限时分割dex
        multiDexEnabled true
     }



版权声明:本文为csdn546229768原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。