/**
 * build.common.gradle
 *
 * Try to avoid editing this file, as it may be updated from time to time as the FTC SDK
 * evolves. Rather, if it is necessary to customize the build process, do those edits in
 * the build.gradle file in TeamCode.
 *
 * This file contains the necessary content of the 'build.gradle' files for robot controller
 * applications built using the FTC SDK. Each individual 'build.gradle' in those applications
 * can simply contain the one line:
 *
 *      apply from: '../build.common.gradle'
 *
 * which will pick up this file here. This approach allows makes it easier to integrate
 * updates to the FTC SDK into your code.
 */

import java.util.regex.Pattern

apply plugin: 'com.android.application'

android {

    compileSdkVersion 29

    signingConfigs {
        debug {
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storeFile rootProject.file('libs/ftc.debug.keystore')
            storePassword 'android'
        }
    }

    aaptOptions {
        noCompress "tflite"
    }

    defaultConfig {
        signingConfig signingConfigs.debug
        applicationId 'com.qualcomm.ftcrobotcontroller'
        minSdkVersion 23
        targetSdkVersion 28

        /**
         * We keep the versionCode and versionName of robot controller applications in sync with
         * the master information published in the AndroidManifest.xml file of the FtcRobotController
         * module. This helps avoid confusion that might arise from having multiple versions of
         * a robot controller app simultaneously installed on a robot controller device.
         *
         * We accomplish this with the help of a funky little Groovy script that maintains that
         * correspondence automatically.
         *
         * @see <a href="http://developer.android.com/tools/building/configuring-gradle.html">Configure Your Build</a>
         * @see <a href="http://developer.android.com/tools/publishing/versioning.html">Versioning Your App</a>
         */
        def manifestFile = project(':FtcRobotController').file('src/main/AndroidManifest.xml');
        def manifestText = manifestFile.getText()
        //
        def vCodePattern = Pattern.compile("versionCode=\"(\\d+(\\.\\d+)*)\"")
        def matcher = vCodePattern.matcher(manifestText)
        matcher.find()
        def vCode = Integer.parseInt(matcher.group(1))
        //
        def vNamePattern = Pattern.compile("versionName=\"(.*)\"")
        matcher = vNamePattern.matcher(manifestText);
        matcher.find()
        def vName = matcher.group(1)
        //
        versionCode vCode
        versionName vName
    }

    // Advanced user code might just want to use Vuforia directly, so we set up the libs as needed
    // http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html
    buildTypes {
        release {
            // Disable debugging for release versions so it can be uploaded to Google Play.
            //debuggable true
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
        debug {
            debuggable true
            jniDebuggable true
            renderscriptDebuggable true
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir rootProject.file('libs')
    }
}

repositories {
    flatDir {
        dirs rootProject.file('libs')
    }
}
apply from: 'build.release.gradle'
