Hello i ran into an issue in my code, i was using Exploayer for a long time but i installed a new dependency to do something completely different(a .jar) and now every time i try to visualize something with exoplayer my app crashes with this error:

java.lang.NoSuchMethodError: No virtual method buildOrThrow()Lcom/google/common/collect/ImmutableMap; in class Lcom/google/common/collect/ImmutableMap$Builder; or its super classes (declaration of 'com.google.common.collect.ImmutableMap$Builder' appears in /data/app/com.ingroupe.ees.integration-9SAl9pnbNhLv_5pZxswx_Q==/base.apk!classes17.dex)

here is my gradle

@file:Suppress("UnstableApiUsage", "DSL_SCOPE_VIOLATION")

plugins {
    alias(androidlibs.plugins.application)
    alias(androidlibs.plugins.kotlin.android)
    kotlin("kapt")
    alias(androidlibs.plugins.hilt)
}

android {
    compileSdk = 34

    val getGitVersionData: () -> Map<String, Any> by extra
    val gitVersionData = getGitVersionData()
    val computedVersionCode =
        gitVersionData["Major"] as Int * 1000000 + gitVersionData["Minor"] as Int * 1000 + gitVersionData["Patch"] as Int


    defaultConfig {
        applicationId = "com.ingroupe.ees"
        minSdk = 28
        targetSdk = 33

        versionName = "1.14.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    testOptions {
        unitTests.isReturnDefaultValues = true
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    buildFeatures {
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }
    packagingOptions {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
            excludes += "/META-INF/gradle/incremental.annotation.processors"
            // pickFirsts.add("**/libibscanultimatejni.so")
            //pickFirsts.add("**/libusb.so")
            //pickFirsts.add("**/*.so")
        }
    }

    signingConfigs {
        create("integration") {
            keyAlias = "integration"
            keyPassword = "INGroupeEES"
            storePassword = "INGroupeEES"
            storeFile = file("integration.jks")
        }
    }

    flavorDimensions += listOf("environment", "device")

    productFlavors {
        create("production") {
            dimension = "environment"
        }

        create("integration") {
            dimension = "environment"
            applicationIdSuffix = ".integration"

            var appCenterKey = "no key"
            try {
                appCenterKey = System.getenv("APPCENTERKEY")
            } catch (_: Throwable) {
            }

            buildConfigField("String", "appCenterKey", "\"$appCenterKey\"")

            signingConfig = signingConfigs.getByName("integration")
        }

        create("physicalDevice") {
            dimension = "device"
        }
        create("mockedDevice") {
            dimension = "device"
        }
    }

    buildTypes {
        debug {
            signingConfig = signingConfigs.getByName("integration")
        }
        release {
            isDebuggable = false
            isTestCoverageEnabled = true
            isMinifyEnabled = false
            isShrinkResources = false
            setProguardFiles(
                listOf(
                    getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
                )
            )
        }
    }

    kapt {
        correctErrorTypes = true
    }
    hilt {
        enableAggregatingTask = false
    }
}
configurations {
    implementation {
        exclude(group = "org.jetbrains", module = "annotations")

    }
}
configurations.all {
    exclude(group = "com.google.guava", module = "guava")
}
configurations.all {
    exclude(group = "com.google.code.findbugs", module = "jsr305")
}
configurations.all {
    exclude(group = "xml-apis", module = "xml-apis")
}
configurations.all {
    exclude(group = "org.slf4j", module = "slf4j-api")
}
configurations.all {
    exclude(group = "xpp3", module = "xpp3")
}
dependencies {
    implementation(fileTree("libs"))
    /// Hilt
    implementation(androidlibs.hilt.android)
    implementation("androidx.media3:media3-exoplayer:1.2.1")
    kapt(androidlibs.hilt.compiler)
    androidTestImplementation(androidlibs.hilt.android.testing)
    androidTestImplementation(androidlibs.hilt.compiler)
    testImplementation(androidlibs.hilt.android.testing)
    testImplementation(androidlibs.hilt.compiler)

    // Kotlinx Coroutines
    implementation(androidlibs.kotlinx.coroutines.android)
    testImplementation(androidlibs.kotlinx.coroutines.test)

    /// AndroidX
    implementation(androidlibs.androidx.core.ktx)
    implementation(androidlibs.androidx.compose.ui)
    implementation(androidlibs.androidx.compose.constraintlayout)
    implementation(androidlibs.androidx.hilt.navigation.compose)
    implementation(androidlibs.androidx.compose.material)
    implementation(androidlibs.androidx.compose.material.icons.extended)
    implementation(androidlibs.androidx.compose.ui.tooling.preview)
    implementation(androidlibs.androidx.compose.activity)
    implementation(androidlibs.androidx.navigation.compose)
    implementation(androidlibs.androidx.lifecycle.runtime.ktx)
    implementation(androidlibs.androidx.camera.camera2)
    implementation(androidlibs.androidx.camera.view)
    implementation(androidlibs.androidx.camera.lifecycle)
    implementation(androidlibs.gson)

    //Lottie
    implementation(androidlibs.airbnb.android.lottie.compose)
    implementation(androidlibs.exoplayer)

    //Accompanist
    implementation(androidlibs.accompanist.permissions)

    // Timber
    implementation(androidlibs.timber)

    //implementation(androidlibs.coppernic.ibscanultimate)
    implementation(androidlibs.ibscanultimate)
    implementation(androidlibs.ibscancommon)


    implementation(androidlibs.cpcCore)
    implementation(androidlibs.cpcUtilsLib)


    implementation(androidlibs.retrofit)
    implementation(androidlibs.converter.gson)
    implementation(androidlibs.converter.simplexml)
    //Accompanist
    implementation(androidlibs.accompanist.permissions)

    // App Center
    "integrationImplementation"(androidlibs.appcenter.distribute)
    "integrationImplementation"(androidlibs.appcenter.crashes)

    testImplementation(androidlibs.junit)
    androidTestImplementation(androidlibs.android.test.ext.junit)
    androidTestImplementation(androidlibs.androidx.test.espresso.core)
    androidTestImplementation(androidlibs.androidx.compose.ui.test.junit4)
    debugImplementation(androidlibs.androidx.compose.ui.test.manifest)
    testImplementation(androidlibs.mockito.kotlin)


    debugImplementation(androidlibs.androidx.compose.ui.tooling)
    implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava")
    implementation(group = "xerces", name = "xercesImpl", version = "2.11.0")
}

After further investigation i discovered that the configurations.all { exclude(group = "com.google.guava", module = "guava") } was the issue because in the AudioCapabalities.java the buildOrThrow method didn't existed enter image description here

Can someone explain me how I exclude guava only for my .jar dependency or how I can autorize it for Exoplayer only?

0

There are 0 best solutions below