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 {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation fileTree(dir: '../../androidapp/third_party/autobanh/lib', include: ['autobanh.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'org.webrtc:google-webrtc: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'
}
