apply plugin: 'com.android.library'

description = "gRPC: Cronet Android"

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            minifyEnabled false
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }
    lintOptions {
        disable 'InvalidPackage'
    }
}

dependencies {
    implementation 'io.grpc:grpc-core:1.11.0-SNAPSHOT' // CURRENT_GRPC_VERSION
    testImplementation 'io.grpc:grpc-testing:1.11.0-SNAPSHOT' // CURRENT_GRPC_VERSION

    implementation files('libs/cronet_api.jar')
    implementation files('libs/cronet_impl_common_java.jar')

    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:1.10.19'
    testImplementation "org.robolectric:robolectric:3.5.1"
}
