react-native-track-player
react-native-track-player copied to clipboard
Duplicate package names
Hi, thanks for this great library. I am working in a project that uses a other players that use old exoplayer dependencie and I having these kind of errors:
Duplicate class com.google.android.exoplayer2.ui.WebViewSubtitleOutput$1 found in modules jetified-exoplayer-ui-2.14.2-runtime (com.google.android.exoplayer:exoplayer-ui:2.14.2) and jetified-exoplayer-ui-r2.16.4-runtime (com.github.DoubleSymmetry.ExoPlayer:exoplayer-ui:r2.16.4)
Duplicate class com.google.android.exoplayer2.video.spherical.CameraMotionListener found in modules jetified-exoplayer-core-2.14.2-runtime (com.google.android.exoplayer:exoplayer-core:2.14.2) and jetified-exoplayer-core-r2.16.4-runtime (com.github.DoubleSymmetry.ExoPlayer:exoplayer-core:r2.16.4)
It is because Kotlin audio is using the same "com.google.android.exoplayer2" package name, maybe could be it changed for future versions to avoid the conflict ?
Originally posted by @SystemBlad in https://github.com/DoubleSymmetry/react-native-track-player/discussions/1264#discussioncomment-2185744
This issue is still open in 2.2.0-rc3 version @mpivchev can you please let me know when this can be fixed. Thanks
Still facing the same issue on my end (with 2.2.0-rc3 version). Further details
Hi, currently working on #1447. I will pick this issue up after this. If one of you wants to contribute to this issue so we can get it out sooner, we would greatly appreciate it :)
Thanks man, maybe changing package name solves the problem
Hello @mpivchev, any update ?
@hammadwahab12 It's still in our to-do list. As mentioned before, if you want this resolved quicker, you are welcome to contribute.
Track this PR which should ultimately resolve this issue: https://github.com/doublesymmetry/KotlinAudio/pull/33
@jspizziri Thanks for all the awesome work! Is there a workaround for this currently (like downgrading) or is that PR probably coming out soon?
I downgraded to 2.1.3, and it works with react-native-video v5.2.0
@stereodenis So 2.1.3 was the original version I was using before upgrading React Native but after upgrading, that version gives me a different problem (Could not find com.google.android.exoplayer:exoplayer-core:2.11.4.) which was fixed in v2.2.0-rc3. Not sure what I should do here
EDIT: ended up using 2.1.3 but with this workaround: https://github.com/doublesymmetry/react-native-track-player/issues/1235#issuecomment-975590885
@KrisLau I have no sound in videos on android with the workaround from the comment
I saw a @dcvz mentioning that you can handle resolution conflicts with gradle, so I came up with the following fix, don't know if there's a better way than replacing one by one, but anyways this works till they move away from their fork
//Add this to the dependencies object in app/build.gradle
modules {
module("com.google.android.exoplayer:exoplayer") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-core") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-core", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-ui") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-ui", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-common") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-smoothstreaming") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-smoothstreaming", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-hls") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-hls", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-dash") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-dash", "replace exoplayer with doublesymmetry.Exoplayer")
}
}
If you have more conflicts do the following:
Example of Error
Duplicate class com.google.android.exoplayer2.upstream.crypto.AesCipherDataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
The conflict is with what is in the brackets (): (com.google.android.exoplayer:exoplayer-datasource:2.17.1)
So the conflicting module is: exoplayer-datasource
Resolve the conflict by adding another module to replace:
module("com.google.android.exoplayer:exoplayer-datasource") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-datasource", "replace exoplayer with doublesymmetry.Exoplayer")
Disclaimer
I only use expo-av (that also uses exo-player) for permissions and everything is working, so I'm not certain what they changed with their fork and if using this fork will break other packages
@Hannes1 I added you code to android/app/build.gradle. But it is still not working. Could you please post me an example?
Here's my build.gradle
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Os
/**
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
* and bundleReleaseJsAndAssets).
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
* and their defaults. If you decide to add a configuration block, make sure to add it before the
* `apply from: "../../node_modules/react-native/react.gradle"` line.
*
* project.ext.react = [
* // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.android.bundle",
*
* // the entry file for bundle generation. If none specified and
* // "index.android.js" exists, it will be used. Otherwise "index.js" is
* // default. Can be overridden with ENTRY_FILE environment variable.
* entryFile: "index.android.js",
*
* // https://reactnative.dev/docs/performance#enable-the-ram-format
* bundleCommand: "ram-bundle",
*
* // whether to bundle JS and assets in debug mode
* bundleInDebug: false,
*
* // whether to bundle JS and assets in release mode
* bundleInRelease: true,
*
* // whether to bundle JS and assets in another build variant (if configured).
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
* // The configuration property can be in the following formats
* // 'bundleIn${productFlavor}${buildType}'
* // 'bundleIn${buildType}'
* // bundleInFreeDebug: true,
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
* // where to put the JS bundle asset in debug mode
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
*
* // where to put the JS bundle asset in release mode
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in debug mode
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in release mode
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
*
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
* // for example, you might want to remove it from here.
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
project.ext.react = [
enableHermes: false, // clean and rebuild if changing
]
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
/**
* The preferred build flavor of JavaScriptCore.
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
/**
* Whether to enable the Hermes VM.
*
* This should be set on project.ext.react and that value will be read here. If it is not set
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
* and the benefits of using Hermes will therefore be sharply reduced.
*/
def enableHermes = project.ext.react.get("enableHermes", false);
/**
* Architectures to build native code for.
*/
def reactNativeArchitectures() {
def value = project.getProperties().get("reactNativeArchitectures")
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
android {
ndkVersion rootProject.ext.ndkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
dependencies {
implementation "com.google.android.gms:play-services-cast-framework:${safeExtGet('castFrameworkVersion', '+')}"
modules {
module("com.google.android.exoplayer:exoplayer") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-core") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-core", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-ui") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-ui", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-common") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-smoothstreaming") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-smoothstreaming", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-hls") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-hls", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-dash") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-dash", "replace exoplayer with doublesymmetry.Exoplayer")
}
}
}
defaultConfig {
applicationId "com.megahit"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2001
versionName "1.0"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
arguments "APP_PLATFORM=android-21",
"APP_STL=c++_shared",
"NDK_TOOLCHAIN_VERSION=clang",
"GENERATED_SRC_DIR=$buildDir/generated/source",
"PROJECT_BUILD_DIR=$buildDir",
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build"
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
cppFlags "-std=c++17"
// Make sure this target name is the same you specify inside the
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
targets "megahit_appmodules"
// Fix for windows limit on number of character in file paths and in command lines
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
arguments "NDK_OUT=${rootProject.projectDir.getParent()}\\.cxx",
"NDK_APP_SHORT_COMMANDS=true"
}
}
}
if (!enableSeparateBuildPerCPUArchitecture) {
ndk {
abiFilters (*reactNativeArchitectures())
}
}
}
}
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
path "$projectDir/src/main/jni/Android.mk"
}
}
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
afterEvaluate {
// If you wish to add a custom TurboModule or component locally,
// you should uncomment this line.
// preBuild.dependsOn("generateCodegenArtifactsFromSchema")
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
// Due to a bug inside AGP, we have to explicitly set a dependency
// between configureNdkBuild* tasks and the preBuild tasks.
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
configureNdkBuildRelease.dependsOn(preReleaseBuild)
configureNdkBuildDebug.dependsOn(preDebugBuild)
reactNativeArchitectures().each { architecture ->
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
dependsOn("preDebugBuild")
}
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
dependsOn("preReleaseBuild")
}
}
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include (*reactNativeArchitectures())
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// https://developer.android.com/studio/build/configure-apk-splits.html
// Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
defaultConfig.versionCode * 1000 + versionCodes.get(abi)
}
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+" // From node_modules
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
exclude group:'com.facebook.fbjni'
}
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
exclude group:'com.squareup.okhttp3', module:'okhttp'
}
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
if (isNewArchitectureEnabled()) {
// If new architecture is enabled, we let you build RN from source
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
// This will be applied to all the imported transtitive dependency.
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute(module("com.facebook.react:react-native"))
.using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source")
}
}
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.implementation
into 'libs'
}
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
// - Set `newArchEnabled` to true inside the `gradle.properties` file
// - Invoke gradle with `-newArchEnabled=true`
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}
def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
@DennisdeWitNL What error do you get? I don't have an example app at the momement I'll see If I have time this weekend
@DennisdeWitNL What error do you get? I don't have an example app at the momement I'll see If I have time this weekend
There are the errors:
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class com.google.android.exoplayer2.database.BuildConfig found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.DatabaseIOException found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.DatabaseProvider found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.DefaultDatabaseProvider found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.ExoDatabaseProvider found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.StandaloneDatabaseProvider found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.VersionTable found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.database.package-info found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.AssetDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.BaseDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.BuildConfig found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ByteArrayDataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ByteArrayDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ContentDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ContentDataSource$Api31 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ContentDataSource$ContentDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSchemeDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSink$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSourceInputStream found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSourceUtil found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSpec found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSpec$1 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSpec$Builder found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSpec$Flags found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DataSpec$HttpMethod found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultDataSourceFactory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultHttpDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultHttpDataSource$1 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultHttpDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DefaultHttpDataSource$NullFilteringHeadersMap found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.DummyDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.FileDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.FileDataSource$Api21 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.FileDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.FileDataSource$FileDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$BaseFactory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$CleartextNotPermittedException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException$Type found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$InvalidContentTypeException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpDataSource$RequestProperties found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.HttpUtil found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.PriorityDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.PriorityDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.PriorityDataSourceFactory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.RawResourceDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.RawResourceDataSource$RawResourceDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ResolvingDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ResolvingDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.ResolvingDataSource$Resolver found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.StatsDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.TeeDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.TransferListener found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.UdpDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.UdpDataSource$UdpDataSourceException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.Cache found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.Cache$CacheException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.Cache$Listener found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSink$CacheDataSinkException found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSink$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource$1 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource$CacheIgnoredReason found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource$EventListener found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource$Factory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheDataSource$Flags found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheEvictor found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheFileMetadata found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheFileMetadataIndex found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheKeyFactory found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheSpan found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheWriter found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CacheWriter$ProgressListener found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContent found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContent$Range found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContentIndex found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContentIndex$DatabaseStorage found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContentIndex$LegacyStorage found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.CachedContentIndex$Storage found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.ContentMetadata found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.ContentMetadataMutations found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.DefaultContentMetadata found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.NoOpCacheEvictor found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.ReusableBufferedOutputStream found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.SimpleCache found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.SimpleCache$1 found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.SimpleCacheSpan found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.cache.package-info found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.crypto.AesCipherDataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.crypto.AesCipherDataSource found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.crypto.AesFlushingCipher found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.crypto.package-info found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Duplicate class com.google.android.exoplayer2.upstream.package-info found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
@DennisdeWitNL Okay so you need to replace more modules because your package uses more of exoplayers modules
For example
Duplicate class com.google.android.exoplayer2.database.BuildConfig found in modules jetified-exoplayer-database-2.17.1-runtime (com.google.android.exoplayer:exoplayer-database:2.17.1) and jetified-exoplayer-database-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-database:r2.17.2)
You'll have to replace the following com.google.android.exoplayer:exoplayer-database:2.17.1
as well with the following:
module("com.google.android.exoplayer:exoplayer-database") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-database", "replace exoplayer with doublesymmetry.Exoplayer")
}
Just go through your error logs and see what yo need to replace further
I saw a @dcvz mentioning that you can handle resolution conflicts with gradle, so I came up with the following fix, don't know if there's a better way than replacing one by one, but anyways this works till they move away from their fork
//Add this to the dependencies object in app/build.gradle modules { module("com.google.android.exoplayer:exoplayer") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-core") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-core", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-ui") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-ui", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-common") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-smoothstreaming") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-smoothstreaming", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-hls") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-hls", "replace exoplayer with doublesymmetry.Exoplayer") } module("com.google.android.exoplayer:exoplayer-dash") { replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-dash", "replace exoplayer with doublesymmetry.Exoplayer") } }
Disclaimer
I only use expo-av (that also uses exo-player) for permissions and everything is working, so I'm not certain what they changed with their fork and if using this fork will break other packages
Yes, this is what I was talking about 🙂 If I remember correctly we don’t make any breaking changes in Exoplayer we just extend functionality. So things should hopefully still work if the other modules are using a version of Exoplayer not so behind the one we forked from.
@jspizziri tagging you here cause this is likely something that might come up again — not sure if you were familiar with this
Edit: these are all the module replaces that should avoid the duplicate classes problem
modules {
module("com.google.android.exoplayer:exoplayer") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-core") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-core", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-ui") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-ui", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-common") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-smoothstreaming") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-smoothstreaming", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-hls") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-hls", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-dash") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-dash", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-database") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-database", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-datasource") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-datasource", "replace exoplayer with doublesymmetry.Exoplayer")
}
}
@DennisdeWitNL You are probably looking at the wrong thing
Example
Duplicate class com.google.android.exoplayer2.upstream.crypto.AesCipherDataSink found in modules jetified-exoplayer-datasource-2.17.1-runtime (com.google.android.exoplayer:exoplayer-datasource:2.17.1) and jetified-exoplayer-datasource-r2.17.2-runtime (com.github.doublesymmetry.Exoplayer:exoplayer-datasource:r2.17.2)
The problem isn't with class com.google.android.exoplayer2.upstream
the conflict is with what is in the brackets (): (com.google.android.exoplayer:exoplayer-datasource:2.17.1)
So the conflicting module is: exoplayer-datasource
still facing issue with [email protected] + [email protected] https://gist.github.com/stereodenis/8ffe0a7e22a403f94746161253ec9dbb
still facing issue with [email protected] + [email protected] https://gist.github.com/stereodenis/8ffe0a7e22a403f94746161253ec9dbb
See the workaround for now @stereodenis
@Hannes1 I got crash after build (build succeeded)
2022-08-15 16:51:40.042 12453-12549/ru.gid.app E/unknown:NativeModuleInitError: Failed to create NativeModule "UIManager"
java.lang.VerifyError: Verifier rejected class com.brentvatne.exoplayer.ReactExoplayerViewManager: android.view.View com.brentvatne.exoplayer.ReactExoplayerViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext) failed to verify: android.view.View com.brentvatne.exoplayer.ReactExoplayerViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext): [0x4] can't resolve returned type 'Reference: android.view.View' or 'Unresolved Reference: com.brentvatne.exoplayer.ReactExoplayerView' (declaration of 'com.brentvatne.exoplayer.ReactExoplayerViewManager' appears in /data/app/~~050eft-_w8E0iqx1OUND2A==/ru.gid.app-u6-UzOUf_au3XTPt8NJYqQ==/base.apk!classes18.dex)
at com.brentvatne.react.ReactVideoPackage.createViewManagers(ReactVideoPackage.java:42)
at com.facebook.react.ReactInstanceManager.getOrCreateViewManagers(ReactInstanceManager.java:932)
at com.swmansion.reanimated.ReanimatedPackage.createUIManager(ReanimatedPackage.java:75)
at com.swmansion.reanimated.ReanimatedPackage.getModule(ReanimatedPackage.java:31)
at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:159)
at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:147)
at com.facebook.react.bridge.ModuleHolder.create(ModuleHolder.java:191)
at com.facebook.react.bridge.ModuleHolder.getModule(ModuleHolder.java:156)
at com.facebook.react.bridge.NativeModuleRegistry.getModule(NativeModuleRegistry.java:172)
at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:502)
at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:478)
at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:89)
at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:47)
at com.facebook.react.ReactInstanceManager.attachRootViewToInstance(ReactInstanceManager.java:1241)
at com.facebook.react.ReactInstanceManager.setupReactContext(ReactInstanceManager.java:1186)
at com.facebook.react.ReactInstanceManager.access$1600(ReactInstanceManager.java:138)
at com.facebook.react.ReactInstanceManager$5$2.run(ReactInstanceManager.java:1139)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loop(Looper.java:236)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:228)
at java.lang.Thread.run(Thread.java:923)
--------- beginning of crash
2022-08-15 16:51:40.044 12453-12549/ru.gid.app E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
Process: ru.gid.app, PID: 12453
java.lang.VerifyError: Verifier rejected class com.brentvatne.exoplayer.ReactExoplayerViewManager: android.view.View com.brentvatne.exoplayer.ReactExoplayerViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext) failed to verify: android.view.View com.brentvatne.exoplayer.ReactExoplayerViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext): [0x4] can't resolve returned type 'Reference: android.view.View' or 'Unresolved Reference: com.brentvatne.exoplayer.ReactExoplayerView' (declaration of 'com.brentvatne.exoplayer.ReactExoplayerViewManager' appears in /data/app/~~050eft-_w8E0iqx1OUND2A==/ru.gid.app-u6-UzOUf_au3XTPt8NJYqQ==/base.apk!classes18.dex)
at com.brentvatne.react.ReactVideoPackage.createViewManagers(ReactVideoPackage.java:42)
at com.facebook.react.ReactInstanceManager.getOrCreateViewManagers(ReactInstanceManager.java:932)
at com.swmansion.reanimated.ReanimatedPackage.createUIManager(ReanimatedPackage.java:75)
at com.swmansion.reanimated.ReanimatedPackage.getModule(ReanimatedPackage.java:31)
at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:159)
at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:147)
at com.facebook.react.bridge.ModuleHolder.create(ModuleHolder.java:191)
at com.facebook.react.bridge.ModuleHolder.getModule(ModuleHolder.java:156)
at com.facebook.react.bridge.NativeModuleRegistry.getModule(NativeModuleRegistry.java:172)
at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:502)
at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:478)
at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:89)
at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:47)
at com.facebook.react.ReactInstanceManager.attachRootViewToInstance(ReactInstanceManager.java:1241)
at com.facebook.react.ReactInstanceManager.setupReactContext(ReactInstanceManager.java:1186)
at com.facebook.react.ReactInstanceManager.access$1600(ReactInstanceManager.java:138)
at com.facebook.react.ReactInstanceManager$5$2.run(ReactInstanceManager.java:1139)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loop(Looper.java:236)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:228)
at java.lang.Thread.run(Thread.java:923)
--------- beginning of system
I've added only two module replacements
dependencies {
modules {
module("com.google.android.exoplayer:exoplayer") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-common") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer")
}
}
}
@stereodenis mmm this might be a react native video issue, it mentions turbomodules does the package support turbomodules?
Or does react native video work without react native track player changes?
@Hannes1 it works for me on 6.0.0-alpha1, but not on 5.2.0
If anyone needs to do this in a Managed Expo project, here's a config plugin that will replace the dependencies:
const { withAppBuildGradle } = require('@expo/config-plugins');
const replaceDependencies = (fileContent) => {
const insertString = `
dependencies {
modules {
module("com.google.android.exoplayer:exoplayer") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-core") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-core", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-ui") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-ui", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-common") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-common", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-smoothstreaming") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-smoothstreaming", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-hls") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-hls", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-dash") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-dash", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-database") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-database", "replace exoplayer with doublesymmetry.Exoplayer")
}
module("com.google.android.exoplayer:exoplayer-datasource") {
replacedBy("com.github.doublesymmetry.Exoplayer:exoplayer-datasource", "replace exoplayer with doublesymmetry.Exoplayer")
}
}
}
`;
const startIndex = fileContent.indexOf('splits {');
return `${fileContent.slice(0, startIndex)}${insertString}\n\t${fileContent.slice(startIndex)}`;
}
const withRNTP = (initialConfig) =>
withAppBuildGradle(initialConfig, (config) => {
const updatedFile = replaceDependencies(config.modResults.contents);
config.modResults.contents = updatedFile;
return config;
});
module.exports = withRNTP;
I put that file in a folder called plugins
and then used it in my app.config.ts
file like so:
...
plugins:
[
['./plugins/withAdapty'],
['./plugins/withRNTP'],
],
...
@russriser the changes that fix this are merged in https://github.com/doublesymmetry/KotlinAudio/pull/38. Just need to wait for it to be included in a new version
This should be fixed in 3.1.0. If you still have issues, please reopen this.
@mpivchev still facing the issue in 3.2.0.
+1 me too, using rntp ^3.2.0 and react-native-video ^5.2.1 .
In react-native-video I had to add these two lines in settings.gradle to play my encrypted video
include ':react-native-video'
project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android-exoplayer')
but after these lines I am getting above conflict , RNV package is using exoplayer:2.13.3