buildscript {
    repositories {
        mavenCentral()
        jcenter()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.3'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 30911
        versionName "3.9.1"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    lintOptions {
        abortOnError false
    }

    buildTypes {
        debug {
            minifyEnabled false
            applicationIdSuffix ".debug"
        }

        optimized {
            initWith debug
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
                    'proguard.flags'
        }

        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
                    'proguard.flags'
        }
    }

    productFlavors {
        aosp {
            applicationId 'amirz.rootless.nexuslauncher'
            testApplicationId 'amirz.rootless.nexuslauncher.tests'
            flavorDimensions 'default'
        }

        l3go {
            applicationId 'amirz.rootless.nexuslauncher'
            testApplicationId 'amirz.rootless.nexuslauncher.tests'
            flavorDimensions 'default'
        }
    }

    sourceSets {
        main {
            res.srcDirs = ['res']
            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            assets.srcDirs = ['assets']
            manifest.srcFile 'AndroidManifest-common.xml'
            proto {
                srcDir 'protos/'
                srcDir 'proto_overrides/'
                srcDir 'proto_pixel/'
            }
        }

        androidTest {
            res.srcDirs = ['tests/res']
            java.srcDirs = ['tests/src']
            manifest.srcFile "tests/AndroidManifest-common.xml"
        }

        aosp {
            java.srcDirs = ['src_flags']
            manifest.srcFile "AndroidManifest.xml"
        }

        androidTestAosp {
            manifest.srcFile "tests/AndroidManifest.xml"
        }

        l3go {
            res.srcDirs = ['go/res']
            java.srcDirs = ['go/src_flags']
            // Note: we are using the Launcher3 manifest here because the gradle manifest-merger uses
            // different attributes than the build system.
            manifest.srcFile "AndroidManifest.xml"
        }

        androidTestL3go {
            manifest.srcFile "tests/AndroidManifest.xml"
        }
    }
}

repositories {
    mavenCentral()
    jcenter()
    google()
}

final String SUPPORT_LIBS_VERSION = '27.1.1'
dependencies {
    implementation "com.android.support:support-v4:${SUPPORT_LIBS_VERSION}"
    implementation "com.android.support:support-dynamic-animation:${SUPPORT_LIBS_VERSION}"
    implementation "com.android.support:recyclerview-v7:${SUPPORT_LIBS_VERSION}"
    implementation "com.android.support:palette-v7:${SUPPORT_LIBS_VERSION}"
    implementation 'com.google.protobuf.nano:protobuf-javanano:3.2.0rc2'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation "org.mockito:mockito-core:1.10.19"
    androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
    androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
    androidTestImplementation "com.android.support:support-annotations:${SUPPORT_LIBS_VERSION}"
}

protobuf {
    // Configure the protoc executable
    protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'

        generateProtoTasks {
            all().each { task ->
                task.builtins {
                    remove java
                    javanano {
                        option "java_package=launcher_log_extension.proto|com.android.launcher3.userevent.nano"
                        option "java_package=launcher_log.proto|com.android.launcher3.userevent.nano"
                        option "java_package=launcher_dump.proto|com.android.launcher3.model.nano"
                        option "java_package=search.proto|com.google.android.apps.nexuslauncher.search.nano"
                        option "java_package=smartspace.proto|com.google.android.apps.nexuslauncher.smartspace.nano"
                        option "enum_style=java"
                    }
                }
            }
        }
    }
}
