apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

kapt {
    correctErrorTypes = true
    useBuildCache = true
    mapDiagnosticLocations = true
    javacOptions {
        option("-Xmaxerrs", 1000)
    }
}

android {
    defaultConfig {
        applicationId 'com.topjohnwu.magisk'
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
        versionName configProps['appVersion']
        versionCode configProps['appVersionCode'] as Integer
        javaCompileOptions {
            annotationProcessorOptions {
                argument('butterknife.debuggable', 'false')
            }
        }
    }

    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'proguard-moshi.pro', 'proguard-kotlin.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    packagingOptions {
        exclude '/META-INF/*.version'
        //exclude '/META-INF/*.kotlin_module'
        //exclude '/META-INF/rxkotlin.properties'
        exclude '/androidsupportmultidexversion.txt'
        exclude '/org/**'
        //exclude '/kotlin/**'
        //exclude '/kotlinx/**'
    }
}

androidExtensions {
    experimental = true
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(':net')
    implementation project(':shared')
    implementation project(':signing')

    implementation 'com.github.topjohnwu:jtar:1.0.0'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.github.skoumalcz:teanity:0.3.3'
    implementation 'com.ncapdevi:frag-nav:3.2.0'

    def vRoom = "2.1.0-alpha05"
    implementation "androidx.room:room-rxjava2:${vRoom}"

    def markwonVersion = '3.0.1'
    implementation "ru.noties.markwon:core:${markwonVersion}"
    implementation "ru.noties.markwon:html:${markwonVersion}"
    implementation "ru.noties.markwon:image-svg:${markwonVersion}"

    def libsuVersion = '2.5.0'
    implementation "com.github.topjohnwu.libsu:core:${libsuVersion}"
    implementation "com.github.topjohnwu.libsu:io:${libsuVersion}"

    def koin = "2.0.0-GA6"
    implementation "org.koin:koin-core:${koin}"
    implementation "org.koin:koin-android:${koin}"
    implementation "org.koin:koin-androidx-viewmodel:${koin}"

    def vRetrofit = "2.5.0"
    def vOkHttp = "3.12.0"
    def vMoshi = "1.8.0"
    implementation "com.squareup.retrofit2:retrofit:${vRetrofit}"
    implementation "com.squareup.retrofit2:converter-moshi:${vRetrofit}"
    implementation "com.squareup.retrofit2:adapter-rxjava2:${vRetrofit}"
    implementation "com.squareup.okhttp3:okhttp:${vOkHttp}"
    implementation "com.squareup.okhttp3:logging-interceptor:${vOkHttp}"
    implementation "com.squareup.moshi:moshi:${vMoshi}"
    implementation "com.squareup.moshi:moshi-kotlin:${vMoshi}"

    kapt "com.squareup.moshi:moshi-kotlin-codegen:${vMoshi}"
    kapt "androidx.room:room-compiler:${vRoom}"

    def vKotpref = "2.8.0"
    implementation "com.chibatching.kotpref:kotpref:${vKotpref}"

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'androidx.preference:preference:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.google.android.material:material:1.1.0-alpha06'
    implementation 'androidx.work:work-runtime:2.0.1'
    implementation 'androidx.transition:transition:1.2.0-alpha01'
    implementation 'androidx.multidex:multidex:2.0.1'
}