apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "io.v.todos"
        minSdkVersion 21
        multiDexEnabled true
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    productFlavors {
        firebase {
            applicationId "io.v.todos.firebase"
        }
        syncbase {
            applicationId "io.v.todos.syncbase"
        }
        mock {
            applicationId "io.v.todos.mock"
        }
    }
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
    }
}

repositories {
    mavenLocal()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

    // Additional testing libraries (mockito and espresso) for the mock flavor.
    androidTestMockCompile (
            'org.mockito:mockito-core:1.10.19',
            'com.google.dexmaker:dexmaker:1.2',
            'com.google.dexmaker:dexmaker-mockito:1.2'
    )

    androidTestMockCompile ('com.android.support.test.espresso:espresso-intents:2.2') {
            // Necessary to avoid version conflicts
            exclude group: 'com.android.support', module: 'appcompat'
            exclude group: 'com.android.support', module: 'support-v4'
            exclude group: 'com.android.support', module: 'support-annotations'
            exclude module: 'recyclerview-v7'
    }
    androidTestMockCompile('com.android.support.test.espresso:espresso-contrib:2.2') {
            // Necessary to avoid version conflicts
            exclude group: 'com.android.support', module: 'appcompat'
            exclude group: 'com.android.support', module: 'support-v4'
            exclude group: 'com.android.support', module: 'support-annotations'
            exclude module: 'recyclerview-v7'
    }

    compile (
            'com.android.support:appcompat-v7:23.1.1',
            'com.android.support:design:23.1.1',
            'com.android.support:cardview-v7:23.1.1',
            'com.android.support:recyclerview-v7:23.1.1',
            'com.google.guava:guava:19.0'
    )
    firebaseCompile 'com.firebase:firebase-client-android:2.5.2'
    syncbaseCompile 'io.v:vanadium-android:2.1.3'
}
