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"
        }
        syncbase2 {
            applicationId "io.v.todos.syncbase2"
        }
        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.2.1',
            'com.google.guava:guava:19.0'
    )
    firebaseCompile 'com.firebase:firebase-client-android:2.5.2'
    syncbaseCompile 'io.v:vanadium-android:2.2.+'
    syncbase2Compile 'io.v:syncbase:0.1.7'
}
