buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.2'
        classpath 'io.v:gradle-plugin:0.1'
        classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
    }
}
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'io.v.vdl'
apply plugin: 'wrapper'
repositories {
    mavenCentral()
}
android {
    compileSdkVersion 21
    buildToolsVersion "21.0.2"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
}
dependencies {
    compile 'io.v:vanadium-android:0.1'
}
vdl {
    inputPaths += 'src/main/java'
}
wrapper {
    gradleVersion '2.3'
}
