apply plugin: 'com.android.application'

repositories {
    jcenter()
}

dependencies {
    compile fileTree(include: '*.jar', dir: 'libs')
    compile project(':libringclient')

    compile 'com.android.support:support-v13:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:preference-v14:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.jayway.android.robotium:robotium-solo:5.4.1'

    // ORM
    compile 'com.j256.ormlite:ormlite-android:4.48'

    // Parsing, formatting, and validating international phone numbers
    compile 'com.googlecode.libphonenumber:libphonenumber:7.0.11'
    
    // Library for listview headers
    compile 'se.emilsjolander:stickylistheaders:2.7.0'

    // Barcode scanning
    compile 'com.google.zxing:core:3.2.1'
    compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
    
    // Butterknife
    compile 'com.jakewharton:butterknife:8.1.0'
    compile 'com.skyfishjy.ripplebackground:library:1.0.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0'

    // Dagger dependency injection
    annotationProcessor 'com.google.dagger:dagger-compiler:2.7'
    compile 'com.google.dagger:dagger:2.7'
    provided 'javax.annotation:jsr250-api:1.0'

    // Glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
    }

    sourceSets {
        main {
            aidl.srcDirs = ['src/main/java']
            jniLibs.srcDir 'src/main/libs'
            jni.srcDirs = []
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    signingConfigs {
        config {
            keyAlias 'ring'
            storeFile file('../keystore.bin')
        }
    }
    lintOptions {
        disable 'MissingTranslation'
    }
    splits {
        abi {
            enable true
            reset()
            def sp = archs.split(',')
            include(sp)
            universalApk true
        }
    }
}
