/**
 * This file was created using the `create_project.py` script located in the
 * `<AndroidX root>/development/project-creator` directory.
 *
 * Please use that script when creating a new project, rather than copying an existing project and
 * modifying its settings.
 */
import androidx.build.LibraryType

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

dependencies {
    api("androidx.annotation:annotation:1.2.0")
    api("androidx.interpolator:interpolator:1.0.0")
    api("androidx.core:core:1.1.0")
    api(project(":leanback:leanback-grid"))
    api("androidx.media:media:1.0.0")
    api("androidx.fragment:fragment:1.0.0")
    api("androidx.recyclerview:recyclerview:1.3.2")
    api("androidx.appcompat:appcompat:1.0.0")

    // To avoid manifest merger warnings due to duplicate package names
    // It can be removed if appcompat library is updated to a newer version
    implementation("androidx.vectordrawable:vectordrawable-animated:1.1.0")

    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.espressoCore, excludes.espresso)
    androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(project(":internal-testutils-espresso"))
    androidTestImplementation(project(":internal-testutils-runtime"))
    androidTestImplementation(project(":internal-testutils-common"))
}

android {
    sourceSets {
        main.java.srcDirs += [
                "common",
                "kitkat",
                "api21",
        ]
    }
    namespace "androidx.leanback"
}

androidx {
    name = "Leanback"
    type = LibraryType.PUBLISHED_LIBRARY
    mavenVersion = LibraryVersions.LEANBACK
    inceptionYear = "2014"
    description = "Android Support Leanback v17"
    metalavaK2UastEnabled = true
    failOnDeprecationWarnings = false
}
