buildscript {
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.0'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

apply plugin: 'com.android.application'

android {
    compileSdk 34

    defaultConfig {
        minSdkVersion 27
        targetSdkVersion 34
    }

    sourceSets {
        main {
            res.srcDirs = ['res']
            java.srcDirs = ['src']
            assets.srcDirs = ['assets']
            manifest.srcFile 'AndroidManifest.xml'
        }

        test {
            java.srcDirs = ['tests']
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    lint {
        ignore 'ProtectedPermissions', 'ExtraTranslation', 'ImpliedQuantity', 'MissingQuantity', 'MissingTranslation'
    }
}

dependencies {
    implementation 'com.google.android.material:material:1.7.0-alpha03'
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'androidx.preference:preference:1.2.0'
    implementation 'androidx.recyclerview:recyclerview:1.3.0-rc01'
    implementation 'androidx.gridlayout:gridlayout:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
    implementation 'androidx.loader:loader:1.1.0'
    implementation 'androidx.test:core:1.5.0'
    implementation 'androidx.test:rules:1.5.0'
    testImplementation 'junit:junit:4.13.2'
}

tasks.withType(JavaCompile) {
    options.compilerArgs << '-Xlint:unchecked'
//    options.deprecation = true
}
