buildscript {
    repositories {
        mavenCentral()
        google()
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.10.1'
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4'
    }
}

ext {
    compileSdkVersion = 36
    targetSdkVersion = 36
    minSdkVersion = 21
    versionMajor = 2
    versionMinor = 5
    versionPatch = 3
}

private Integer generateVersionCode(Integer variant) {
    return ext.versionMajor * 10000 + ext.versionMinor * 1000 + ext.versionPatch * 100 + variant
}

private String generateVersionName() {
    String versionName = "${ext.versionMajor}.${ext.versionMinor}.${ext.versionPatch}"
    return versionName
}

final String FRAMEWORK_PREBUILTS_DIR = "prebuilts"

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

def props = new Properties()
File keystoreProperties = rootProject.file("keystore.properties")
if (keystoreProperties.exists()) {
    props.load(new FileInputStream(keystoreProperties))
} else {
    props['keystorefile'] = 'none';
}

android {
    compileSdk rootProject.ext.compileSdkVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    signingConfigs {
        release
    }
    buildTypes {
        debug {
            minifyEnabled false
            //applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
        }

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


    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    // The flavor dimensions for build variants (e.g. aospWithQuickstep, aospWithoutQuickstep)
    // See: https://developer.android.com/studio/build/build-variants#flavor-dimensions
    flavorDimensions "app", "recents", "default", "store"

    productFlavors {
//        aosp {
//            dimension "app"
//            applicationId 'com.android.launcher3'
//            testApplicationId 'com.android.launcher3.tests'
//        }

//        l3go {
//            dimension "app"
//            applicationId 'com.android.launcher3'
//            testApplicationId 'com.android.launcher3.tests'
//        }

//        withQuickstep {
//            dimension "recents"
//
//            minSdkVersion 28
//        }
//
//        withQuickstepIconRecents {
//            dimension "recents"
//
//            minSdkVersion 28
//        }

//        withoutQuickstep {
//            dimension "recents"
//        }
    }

    android.variantFilter { variant ->
        // Icon recents is Go only
        if (name.contains("WithQuickstepIconRecents") && !name.contains("l3go")) {
            variant.setIgnore(true)
        }
    }

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

        debug {
            manifest.srcFile "AndroidManifest.xml"
        }

        release {
            manifest.srcFile "AndroidManifest.xml"
        }

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

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

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

//        l3go {
//            res.srcDirs = ['go/res']
//            java.srcDirs = ['go/src']
//            manifest.srcFile "go/AndroidManifest.xml"
//        }

//        withoutQuickstep {
//            java.srcDirs = ['src_ui_overrides']
//        }

//        withQuickstep {
//            res.srcDirs = ['quickstep/res', 'quickstep/recents_ui_overrides/res']
//            java.srcDirs = ['quickstep/src', 'quickstep/recents_ui_overrides/src']
//            manifest.srcFile "quickstep/AndroidManifest.xml"
//        }
//
//        withQuickstepIconRecents {
//            res.srcDirs = ['quickstep/res', 'go/quickstep/res']
//            java.srcDirs = ['quickstep/src', 'go/quickstep/src']
//            manifest.srcFile "quickstep/AndroidManifest.xml"
//        }
    }
    lint {
        abortOnError false
    }
    buildFeatures {
        aidl true
    }
    namespace 'com.android.launcher3'//'dev.dworks.apps.alauncher'
}

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

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add("-Xbootclasspath/p:${FRAMEWORK_PREBUILTS_DIR}/libs/framework.jar")
        }
    }
}

configurations.all {
    exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'

    implementation "androidx.dynamicanimation:dynamicanimation:1.1.0"
    implementation "androidx.recyclerview:recyclerview:1.4.0"
    implementation "androidx.preference:preference:1.2.1"
    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
    implementation "androidx.annotation:annotation:1.9.1"

    implementation project(':IconLoader')
    implementation fileTree(dir: "${FRAMEWORK_PREBUILTS_DIR}/libs", include: 'launcher_protos.jar')

    // Recents lib dependency
    //withQuickstepImplementation fileTree(dir: "${FRAMEWORK_PREBUILTS_DIR}/quickstep/libs", include: 'sysui_shared.jar')

    // Recents lib dependency for Go
    //withQuickstepIconRecentsImplementation fileTree(dir: "${FRAMEWORK_PREBUILTS_DIR}/quickstep/libs", include: 'sysui_shared.jar')

    // Required for AOSP to compile. This is already included in the sysui_shared.jar
    //withoutQuickstepImplementation fileTree(dir: "${FRAMEWORK_PREBUILTS_DIR}/libs", include: 'plugin_core.jar')

    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'org.mockito:mockito-core:5.18.0'
    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:rules:1.0.2'
    androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
    androidTestImplementation 'androidx.annotation:annotation:1.9.1'
}

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

        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 "enum_style=java"
                    }
                }
            }
        }
    }
}

android.signingConfigs.release.storeFile file(props.keyStore)
android.signingConfigs.release.storePassword props.keyStorePassword
android.signingConfigs.release.keyAlias props.keyAlias
android.signingConfigs.release.keyPassword props.keyAliasPassword

apply from: 'shade/shade.gradle'
