group 'io.flutter.plugins.imagepicker'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.2'
    }
}

rootProject.allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 31

    defaultConfig {
        minSdkVersion 16
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    lintOptions {
        disable 'InvalidPackage'
        disable 'GradleDependency'
    }
    dependencies {
        implementation 'androidx.core:core:1.8.0'
        implementation 'androidx.annotation:annotation:1.3.0'
        implementation 'androidx.exifinterface:exifinterface:1.3.3'

        testImplementation 'junit:junit:4.13.2'
        testImplementation 'org.mockito:mockito-core:3.10.0'
        testImplementation 'androidx.test:core:1.4.0'
        testImplementation "org.robolectric:robolectric:4.8.1"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    testOptions {
        unitTests.includeAndroidResources = true
        unitTests.returnDefaultValues = true
        unitTests.all {
            testLogging {
               events "passed", "skipped", "failed", "standardOut", "standardError"
               outputs.upToDateWhen {false}
               showStandardStreams = true
            }
        }
    }
}
