apply plugin: 'com.android.application'

android {
    compileSdkVersion appAndroidCompileSDK
    compileOptions.sourceCompatibility = compileOptions.targetCompatibility = appJavaCompatibility

    sourceSets.main.assets.srcDirs = [new File(project(':core').projectDir, "/src/main/assets")]

    defaultConfig {
        manifestPlaceholders = [appName:appName]
        applicationId appPackageName

        versionCode appVersionCode
        versionName appVersionName

        //noinspection MinSdkTooLow
        minSdkVersion appAndroidMinSDK
        targetSdkVersion appAndroidTargetSDK

        resConfigs "en_US", "cs", "tr", "ca", "ko", "pl", "it", "ja",
                "eo", "ru", "zh_CN", "de", "fr", "es", "pt", "fi", "hu", "in"
    }

    buildTypes {
        debug {
            applicationIdSuffix ".indev"
            versionNameSuffix '-INDEV'
            dependencies {
                debugImplementation project(':services:updates:debugUpdates')
                debugImplementation project(':services:news:debugNews')
            }
        }
        release {

            //These lines enable R8, which is a code shrinker/optimizer/obfuscator.
            //This makes release APKs smaller and more efficient, but also makes debugging trickier
            //as the information produced in stack traces must be de-obfuscated.
            //See here: https://developer.android.com/studio/build/shrink-code#decode-stack-trace
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            dependencies {
                releaseImplementation project(':services:updates:githubUpdates')
                releaseImplementation project(':services:news:shatteredNews')
            }
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

configurations { natives }

dependencies {
    implementation project(':core')

    implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
    implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
    implementation "com.badlogicgames.gdx:gdx-controllers:$gdxVersion"
    implementation "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"
    natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
    natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
    natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
    natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
}

// called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders
// so they get packed with the APK.
task copyAndroidNatives() {
    file("libs/armeabi/").mkdirs()
    file("libs/armeabi-v7a/").mkdirs()
    file("libs/arm64-v8a/").mkdirs()
    file("libs/x86_64/").mkdirs()
    file("libs/x86/").mkdirs()

    configurations.natives.copy().files.each { jar ->
        def outputDir = null
        if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
        if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
        if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
        if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
        if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
        if(outputDir != null) {
            copy {
                from zipTree(jar)
                into outputDir
                include "*.so"
            }
        }
    }
}