升级ExoPlayer到2.16.0后Android5/6(API21/23)初始化崩溃如何解决
问题原因
ExoPlayer 2.16.0版本默认使用Java 8语言特性(包含Lambda表达式、默认接口方法等),Android 7.0(API 24)及以上系统原生支持该类特性,API 23及以下系统需要开启D8编译器的desugar功能才能兼容,你遇到的ExternalSyntheticLambda相关的NoClassDefFoundError就是未开启desugar导致的类加载失败问题。
解决方案
- 在模块级
build.gradle(app目录下的gradle配置文件)的android配置块中开启Java 8支持与desugar功能:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // 开启核心库desugar兼容低版本系统 coreLibraryDesugaringEnabled true } // 使用Kotlin开发需要额外添加如下配置 kotlinOptions { jvmTarget = "1.8" } }
- 在同个
build.gradle的dependencies配置块中添加desugar依赖:
dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2' // 原有其他依赖保持不变 }
- 清理项目缓存后重新编译运行即可修复低版本系统崩溃问题。
补充说明
如果配置后仍存在崩溃,检查你的Android Gradle Plugin版本是否为3.2.0及以上,低于该版本的AGP不支持desugar功能,需要先升级AGP到兼容版本。
内容的提问来源于stack exchange,提问作者Mohammadreza
相关产品推荐
相关产品推荐

