apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'

android {
    compileSdk 34
    buildToolsVersion = '34.0.0'

    defaultConfig {
        applicationId "helium314.keyboard"
        minSdkVersion 21
        targetSdkVersion 34
        versionCode 2001
        versionName '2.0-alpha1'
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            debuggable false
            jniDebuggable false
            renderscriptDebuggable false
        }
        nouserlib { // same as release, but does not allow the user to provide a library
            minifyEnabled true
            shrinkResources true
            debuggable false
            jniDebuggable false
            renderscriptDebuggable false
        }
        debug {
            minifyEnabled true
            jniDebuggable false
            applicationIdSuffix ".debug"
        }
        archivesBaseName = "HeliBoard_" + defaultConfig.versionName
    }

    buildFeatures {
        viewBinding true
        buildConfig true
    }

    externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }

    lintOptions {
        abortOnError true
    }

    ndkVersion '26.2.11394342'

    packagingOptions {
        jniLibs {
            // shrinks APK by 3 MB, zipped size unchanged
            useLegacyPackaging true
        }
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }

    // see https://github.com/Helium314/HeliBoard/issues/477
    dependenciesInfo {
        includeInApk = false
        includeInBundle = false
    }

    namespace "helium314.keyboard.latin"
}

dependencies {
    // androidx
    implementation 'androidx.core:core-ktx:1.13.1'
    implementation 'androidx.preference:preference:1.2.1'
    implementation 'androidx.recyclerview:recyclerview:1.3.2'
    implementation 'androidx.autofill:autofill:1.1.0'

    // kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
    // when kotlin-serialization is enabled, Android Studio stops complaining about "Unresolved reference: serializer", but the build fails
//    implementation "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"

    // color picker for user-defined colors
    implementation 'com.github.martin-stone:hsv-alpha-color-picker-android:3.1.0'

    // test
    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.mockito:mockito-core:5.11.0'
    testImplementation 'org.mockito:mockito-inline:5.2.0'
    testImplementation 'org.robolectric:robolectric:4.12.1'
    testImplementation 'androidx.test:runner:1.5.2'
    testImplementation 'androidx.test:core:1.5.0'
}
