
buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

apply plugin: 'com.android.application'

repositories {
    jcenter()
    maven {
        url 'https://maven.google.com'
    }
}

dependencies {
    compile "com.android.support:support-v4:26.1.0"
    compile "com.android.support:support-v13:26.1.0"
    compile "com.android.support:cardview-v7:26.1.0"
    compile "com.android.support:appcompat-v7:26.1.0"
    compile 'com.google.android.support:wearable:2.0.3'
    compile 'com.google.android.gms:play-services-wearable:11.4.0'
    compile 'com.android.support:support-v13:26.1.0'
    wearApp project(':Wearable')
}

// The sample build uses multiple directories to
// keep boilerplate and common code separate from
// the main sample code.
List<String> dirs = [
    'main',     // main sample code; look here for the interesting stuff.
    'common',   // components that are reused by multiple samples
    'template'] // boilerplate code that is generated by the sample template process

android {
    
        compileSdkVersion 26

    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 25
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    sourceSets {
        main {
            dirs.each { dir ->
                java.srcDirs "src/${dir}/java"
                res.srcDirs "src/${dir}/res"
            }
        }
        androidTest.setRoot('tests')
        androidTest.java.srcDirs = ['tests/src']

    }

}
