import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish

import static androidx.build.dependencies.DependenciesKt.*

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
}

dependencies {
    api(project(":media"))
    api(project(":media2:media2-common"))
    api(project(":concurrent-listenablefuture"))
    implementation(project(":concurrent-listenablefuture-callback"))
    implementation("androidx.collection:collection:1.0.0")
    compileOnly(CHECKER_FRAMEWORK)
    // Depend on media2-exoplayer so that the library groupId is set to match media2.
    implementation(project(":media2:media2-exoplayer"))

    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
    androidTestImplementation(ANDROIDX_TEST_CORE)
    androidTestImplementation(ANDROIDX_TEST_RUNNER)
    androidTestImplementation(ANDROIDX_TEST_RULES)
    androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
    androidTestImplementation project(':internal-testutils')
    annotationProcessor(project(":versionedparcelable-annotation"))
}

android {
    lintOptions {
        // Lint bug causes the BanTargetApiAnnotation lint check to crash in this project.
        // remove when b/120615476 is fixed.
        disable("BanTargetApiAnnotation")
    }
    defaultConfig {
        minSdkVersion 19
    }
}

androidx {
    name = "AndroidX media2 player library"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.MEDIA2_PLAYER
    mavenGroup = LibraryGroups.MEDIA2
    inceptionYear = "2018"
    description = "Media2 Player"
    // TODO: Remove these (b/130838274)
    failOnUncheckedWarnings = false
    failOnDeprecationWarnings = false
    trackRestrictedAPIs = false // TODO: Remove it (b/131561173)
}
