buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
        classpath 'io.v:gradle-plugin:1.4'
    }
}

repositories {
    jcenter()
    mavenCentral()
}

apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'io.v.vdl'

android {
    buildToolsVersion '23.0.1'
    compileSdkVersion 23

    defaultConfig {
        applicationId "io.v.rpcbench"
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
        exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
    }
}

dependencies {
    compile 'io.v:vanadium-android:1.6'
    compile 'com.android.support:appcompat-v7:23.1.0'
    androidTestCompile 'junit:junit:4.12'
}

vdl {
    inputPaths += 'src/main/java'
}
