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.android.support:leanback-v17:25.3.1'

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

    // Barcode scanning
    compile 'com.journeyapps:zxing-android-embedded:3.5.0@aar'

    // Butterknife
    compile 'com.jakewharton:butterknife:8.6.0'
    compile 'com.skyfishjy.ripplebackground:library:1.0.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'

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

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

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 18
        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
        }
    }
}
