升级Android Gradle Plugin后RenderScript出现崩溃问题
问题
根据Android Studio提示将Android Gradle Plugin(AGP)从7.4.1升级到8.0.1后,App出现崩溃,崩溃日志如下:
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/renderscript/RenderScript$ContextType; at at.favre.lib.dali.builder.ContextWrapper.<init>(ContextWrapper.java:14) at at.favre.lib.dali.Dali.<init>(Dali.java:40) at at.favre.lib.dali.Dali.create(Dali.java:77) at com.package.Fragment.HomeScreen$12.lambda$onLoadFailed$0$com-obu_qus-Fragment-HomeScreen$12(HomeScreen.java:1795) at com.package.Fragment.HomeScreen$12$$ExternalSyntheticLambda0.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8663) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.renderscript.RenderScript$ContextType" on path: DexPathList[[dex file "/data/data/com.package/code_cache/.overlay/base.apk/classes10.dex", dex file "/data/data/com.package/code_cache/.overlay/base.apk/classes6.dex", dex file "/data/data/com.package/code_cache/.overlay/base.apk/classes7.dex", zip file "/data/app/~~2C8fMsf-zl0sOCn5GEsoRg==/com.package-rp4FWq6xglCuxgGnQfLCEg==/base.apk"],nativeLibraryDirectories=[/data/app/~~2C8fMsf-zl0sOCn5GEsoRg==/com.package-rp4FWq6xglCuxgGnQfLCEg==/lib/arm64, /data/app/~~2C8fMsf-zl0sOCn5GEsoRg==/com.package-rp4FWq6xglCuxgGnQfLCEg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 13 more
升级后gradle.properties文件自动添加了以下配置:
android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false
切换回AGP 7.4.1的旧代码分支时App运行正常,请问RenderScript相关崩溃的原因是什么?
原因分析
AGP 8.0+ 对RenderScript的默认支持策略发生了关键变化:
- AGP 7.x及更早版本中,即使未显式启用RenderScript,构建工具会自动引入
androidx.renderscript相关依赖,适配那些依赖该类库的第三方组件(比如你用到的at.favre.lib.dali)。 - 但从AGP 8.0开始,默认不再自动添加RenderScript依赖,必须在构建配置中显式声明启用,否则依赖RenderScript的第三方库会在运行时找不到对应的类,引发
ClassNotFoundException或NoClassDefFoundError。
解决方案
在App模块的build.gradle(或build.gradle.kts)中添加以下配置,显式启用RenderScript支持:
android { // 保留原有配置 buildFeatures { renderScript true } // 适配低版本设备可添加以下配置(根据项目最低SDK调整版本号) renderscriptTargetApi 21 renderscriptSupportModeEnabled true }
或者直接在依赖块中添加RenderScript的依赖:
dependencies { implementation 'androidx.renderscript:renderscript:1.0.0' }
添加完成后重新构建项目,即可解决该崩溃问题。
内容的提问来源于stack exchange,提问作者Ashvin solanki
相关产品推荐
相关产品推荐

