apply plugin: 'com.android.application'
apply plugin: 'com.facebook.testing.screenshot'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.1"
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 27
    versionName "2.3.1"
    testInstrumentationRunner "com.airbnb.lottie.TestRunner"
    vectorDrawables.useSupportLibrary = true
  }
  buildTypes {
    release {
      minifyEnabled false
    }
  }
  lintOptions {
    ignore 'InvalidPackage'
    textReport true
    textOutput 'stdout'
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
}

dependencies {
  compile project(':lottie')
  compile "com.android.support:appcompat-v7:$supportLibVersion"
  compile "com.android.support:recyclerview-v7:$supportLibVersion"
  compile "com.android.support:design:$supportLibVersion"
  compile 'com.jakewharton:butterknife:8.5.1'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
  compile 'com.squareup.okhttp3:okhttp:3.8.1'
  compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
  compile 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
  compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'

  debugCompile 'com.github.brianPlummer:tinydancer:0.0.9'

  testCompile 'junit:junit:4.12'

  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'org.hamcrest', module: 'hamcrest-integration'
  })
  androidTestCompile('com.android.support.test:runner:0.5', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  androidTestCompile('com.android.support.test:rules:0.5', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  compile 'com.android.support.constraint:constraint-layout:1.0.2'
  compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
}
repositories {
  mavenCentral()
}
