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'
}
