[崩溃] [ExoPlayer] java.lang.NoSuchMethodError:使用库破折号模块运行应用程序时,没有静态方法getDummyDrmSessionManager

问题描述

尝试使用自定义的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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...