import java.text.SimpleDateFormat

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

android {

    compileSdkVersion compile_sdk_version

    // exoPlayer 2.9.0 以降は Java 8 compiler support を要求する
    // https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
    // Invoke-customs are only supported starting with Android O (--min-api 26)
    // Default interface methods are only supported starting with Android N (--min-api 24)
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        targetSdkVersion target_sdk_version
        minSdkVersion min_sdk_version

        versionCode 453
        versionName "4.5.3"
        applicationId "jp.juggler.subwaytooter"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            lintOptions {
                disable 'MissingTranslation'
            }
        }
    }

    // Specifies comma-separated list of flavor dimensions.
    flavorDimensions "rcOrDev"

    productFlavors {
        rc {
            dimension "rcOrDev"
        }
    }

    dexOptions {
        jumboMode = true
        preDexLibraries true
        maxProcessCount 10
        javaMaxHeapSize "3g"
    }

    // Generate Signed APK のファイル名を変更
    android.applicationVariants.all { variant ->
        if (variant.buildType.name == "release") {
            variant.outputs.all {
                // Rename APK
                def versionCode = defaultConfig.versionCode
                def versionName = defaultConfig.versionName
                def flavor = variant.flavorName
                def date = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date())
                outputFileName = "../../SubwayTooter-${flavor}-${versionCode}-${versionName}-${date}.apk"
            }
        }
    }

    packagingOptions {
        // https://github.com/Kotlin/kotlinx.coroutines/issues/1064
        pickFirst("META-INF/atomicfu.kotlin_module")
    }

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
}

kapt {
    useBuildCache = true
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation fileTree(include: ['*.aar'], dir: 'src/main/libs')

    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha4', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    // implementation project(':exif')
    implementation project(':colorpicker')
    implementation project(':emoji')
    implementation project(':apng_android')


    implementation "androidx.appcompat:appcompat:$appcompat_version"
    //noinspection KtxExtensionAvailable
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"


    // DrawerLayout
    implementation "androidx.drawerlayout:drawerlayout:1.1.1"

    // NavigationView
    implementation "com.google.android.material:material:1.3.0"

    // PreferenceManager
    implementation "androidx.preference:preference-ktx:1.1.1"

    implementation "androidx.exifinterface:exifinterface:1.3.2"

    // CustomTabs
    implementation "androidx.browser:browser:1.3.0"

    // Recyclerview
    implementation "androidx.recyclerview:recyclerview:1.2.0"

    kapt 'androidx.annotation:annotation:1.2.0'

    // https://firebase.google.com/support/release-notes/android
    implementation "com.google.firebase:firebase-messaging:21.1.0"

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"

    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$kotlinx_coroutines_version"
    implementation("ru.gildor.coroutines:kotlin-coroutines-okhttp:1.0")

    // Anko Layouts
    // sdk15, sdk19, sdk21, sdk23 are also available
//    implementation "org.jetbrains.anko:anko-sdk25:$anko_version"
//    implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"

    // Coroutine listeners for Anko Layouts
    //implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
    //implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"

    testImplementation "junit:junit:$junit_version" // しばらくはkotlin-testとjunitを併用

    implementation 'com.squareup.okhttp3:okhttp:4.8.1'
    implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.8.1'
    testImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1'
    androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1'

    def glide_version = '4.11.0'
    implementation "com.github.bumptech.glide:glide:$glide_version"
    implementation "com.github.bumptech.glide:annotations:$glide_version"
    implementation( "com.github.bumptech.glide:okhttp3-integration:$glide_version"){
        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
        // 推移的な依存関係の除外
        // glide 4.9.0 は  okhttp3 3.9.1を使ってる
        // http://bumptech.github.io/glide/int/about.html#how-do-i-use-a-specific-version-of-okhttp-volley-or-other-third-party-library
    }
    kapt "com.github.bumptech.glide:compiler:$glide_version"

    implementation "org.conscrypt:conscrypt-android:2.5.1"

    implementation 'io.github.inflationx:calligraphy3:3.1.1'
    implementation 'io.github.inflationx:viewpump:2.0.3'

    implementation 'com.github.woxthebox:draglistview:1.6.6'

    implementation 'com.github.omadahealth:swipy:1.2.3@aar'

    implementation 'com.github.kenglxn.QRGen:android:2.5.0'

    implementation 'commons-io:commons-io:2.6'

    implementation 'org.hjson:hjson:3.0.0'

    implementation 'com.google.android:flexbox:2.0.1' // 1.1.0 から AndroidX 依存

    implementation 'com.astuetz:pagerslidingtabstrip:1.0.1'

    implementation 'com.google.android.exoplayer:exoplayer:2.13.3'
    /*
    WARNING: [Processor] Library '…\exoplayer-ui-2.12.0.aar' contains references to both AndroidX and old support library. This seems like the library is partially migrated. Jetifier will try to rewrite the library anyway.
    Example of androidX reference: 'androidx/core/app/NotificationCompat$Builder'
    Example of support library reference: 'android/support/v4/media/session/MediaSessionCompat$Token'
    …expPlayerも苦労してるんだなあ…
    */

    implementation 'com.caverock:androidsvg-aar:1.4'
}

repositories {
    mavenCentral()
}

apply plugin: 'com.google.gms.google-services'

