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 版权协议,转载请附上原文出处链接和本声明。