apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "org.appspot.apprtc"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    sourceSets {
        main {
            manifest.srcFile "../../androidapp/AndroidManifest.xml"
            java.srcDirs = [
                    "../../androidapp/src"
            ]
            res.srcDirs = [
                    "../../androidapp/res"
            ]
        }
        androidTest {
            manifest.srcFile "../../androidtests/AndroidManifest.xml"
            java.srcDirs = [
                    "../../androidtests/src"
            ]
            // This test doesn't work in Android Studio.
            java.exclude('**/CallActivityStubbedInputOutputTest.java')
        }
    }
}

dependencies {
    if (project.hasProperty('aarDir')) {
        implementation fileTree(dir: project.aarDir, include: ['google-webrtc-*.aar'])
    }
    implementation fileTree(dir: '../../androidapp/third_party/autobanh/lib', include: ['autobanh.jar'])
    implementation 'com.android.support:support-annotations:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
