问题描述
尝试使用自定义的ExoPlayer库-dash模块版本2.11.3播放DASH流时崩溃,我将其导入为.aar存档。这是堆栈跟踪:
Caused by: java.lang.NoSuchMethodError: No static method getDummyDrmSessionManager()Lcom/google/android/exoplayer2/drm/DrmSessionManager; in class Lcom/google/android/exoplayer2/drm/DrmSessionManager; or its super classes (declaration of 'com.google.android.exoplayer2.drm.DrmSessionManager' appears in base.apk)
at com.google.android.exoplayer2.source.dash.DashMediaSource$Factory.<init>(DashMediaSource.java:118)
at com.google.android.exoplayer2.source.dash.DashMediaSource$Factory.<init>(DashMediaSource.java:101)
有趣的是,只有已签名的应用程序会发生崩溃。当我只是在Studio中运行它时,效果很好。
这是我遇到问题的ExoPlayer库核心模块中的源代码
public interface DrmSessionManager<T extends ExoMediaCrypto> {
/** Returns {@link #DUMMY}. */
@SuppressWarnings("unchecked")
static <T extends ExoMediaCrypto> DrmSessionManager<T> getDummyDrmSessionManager() {
return (DrmSessionManager<T>) DUMMY;
}
我确实意识到我的应用程序与导入的dash库之间存在Java 8兼容性问题,它可能需要进行一些细微的调整,但我找不到在项目中需要更改的内容来支持这一点。
但是,出于项目目的,我不得不修改library-dash模块,并在我的项目中将其用作.aar。我正在从中构建.aar库的Exo库-dash模块内的 build.gradle 文件未更改,并且我确保其中包含这些行(这些行也位于 library-核心模块)
android {
compileSdkVersion project.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
在我的项目中,使用此库的 app 模块包含以下行,此外还包含此行
kotlinOptions {
jvmTarget = "1.8"
}
ExoPlayer库的其余部分用于远程存储库:
api 'com.google.android.exoplayer:exoplayer-core:2.11.4'
api 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.11.4'
api 'com.google.android.exoplayer:exoplayer-hls:2.11.4'
api project(':lib-dash')
root build.gradle文件:
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0'
gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
还需要添加什么来支持本地构建的.aar库-dash模块并避免这种Java 8不兼容?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)