/**
 * 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(libs.jspecify)
    api("androidx.annotation:annotation:1.8.1")
    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)
    androidTestImplementation(libs.mockitoCore)
    androidTestImplementation(libs.dexmakerMockito)
    androidTestImplementation(project(":internal-testutils-espresso"))
    androidTestImplementation(project(":internal-testutils-runtime"))
    androidTestImplementation(project(":internal-testutils-common"))
}

android {
    compileSdk = 35
    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"
    failOnDeprecationWarnings = false
    // TODO: b/326456246
    optOutJSpecify = true
}
