首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一个库的两个不同版本共存是否可能?

同一个库的两个不同版本共存是否可能?
EN

Stack Overflow用户
提问于 2021-07-23 08:27:01
回答 1查看 974关注 0票数 7

我正在开发一个反应本机应用程序,它可以同时播放音频和视频文件。因此,我使用两个javascript依赖项:react-native-track-playerreact-native-video

就个别而言,它们工作得很好。不过一起..。

代码语言:javascript
复制
07-23 09:41:24.052 24644 24644 E AndroidRuntime: FATAL EXCEPTION: main
07-23 09:41:24.052 24644 24644 E AndroidRuntime: Process: com.myapp, PID: 24644
07-23 09:41:24.052 24644 24644 E AndroidRuntime: java.lang.NoSuchMethodError: No virtual method setAudioAttributes(Lcom/google/android/exoplayer2/audio/AudioAttributes;)V in class Lcom/google/android/exoplayer2/SimpleExoPlayer; or its super classes (declaration of 'com.google.android.exoplayer2.SimpleExoPlayer' appears in /data/app/~~JZaWLKING3kOoM2Xhy3b8g==/com.myapp-ZiTzxTcb_NCKba7M-tUmIw==/base.apk!classes2.dex)

经过一些研究,它似乎来自版本错配,因为他们都依赖于exoplayer

  • react-native-video

代码语言:javascript
复制
dependencies {
    implementation('com.google.android.exoplayer:exoplayer:2.13.2') {
        exclude group: 'com.android.support'
    }
}

  • react-native-track-player

代码语言:javascript
复制
def safeExtGet(prop, fallback) {
    rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

dependencies {
    def exoPlayerVersion = safeExtGet("exoPlayerVersion", '2.11.4')
    implementation "com.google.android.exoplayer:exoplayer-core:${exoPlayerVersion}"
}

react-native-track-player似乎回到了2.11.4:如果我硬编码版本号而不是调用safeExtGet,我可以观察到同样的崩溃。

奇怪的是,没有错误(或警告!)在建造的时候。当查看使用android的react-native-track-player Android代码时,setAudioAttributes是一个有效的方法(至少没有报告错误)。

我的问题是:

  1. 是否有可能使同一个库的两个不同版本共存,并将
  2. 代码正确地链接到库中使用的哪个版本?(在本例中:exoplayer)
  3. If是可能的,我所观察到的行为是否来自这些项目的build.gradle文件中的某些设置?
  4. ,如果不可能,默认行为是什么?“保持更高版本的沉默”?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-23 09:19:08

在与一些人讨论了这个问题之后,似乎不可能有同一个库的两个不同版本。这似乎是JVM的一个限制,Maven、Gradle和Sbt在面对这个问题时都有不同的行为。

最让我惊讶的是,Gradle在没有通知我的情况下,悄悄地用更高的版本覆盖了较低版本的依赖项,这导致了不同的运行时API,从而导致崩溃。

我解决了这个问题,将我的react-native-track-player exoplayer依赖关系版本转换为2.13.2,只需在源代码中做一些小的修改。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68496246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档