apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
androidExtensions {
  experimental = true
}

android {
  compileSdkVersion 27
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 63
    versionName "2.6.0-rc3"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    buildConfigField("String", "S3AccessKey", "\"" + System.getenv("LOTTIE_S3_API_KEY") + "\"")
    buildConfigField("String", "S3SecretKey", "\"" + System.getenv("LOTTIE_S3_SECRET_KEY") + "\"")
    buildConfigField("String", "HappoApiKey", "\"" + System.getenv("LOTTIE_HAPPO_API_KEY") + "\"")
    buildConfigField("String", "HappoSecretKey", "\"" + System.getenv("LOTTIE_HAPPO_SECRET_KEY") + "\"")
    buildConfigField("String", "TRAVIS_GIT_BRANCH", "\"" + System.getenv("TRAVIS_GIT_BRANCH") + "\"")
    buildConfigField("String", "GIT_SHA", "\"" + gitSha + "\"")
    buildConfigField("String", "GIT_BRANCH", "\"" + gitBranch + "\"")
  }
  buildTypes {
    release {
      minifyEnabled false
    }
  }
  lintOptions {
    ignore 'InvalidPackage'
    textReport true
    textOutput 'stdout'
    baseline file("lint-baseline.xml")
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
  packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
  }
}

dependencies {
  implementation project(':lottie')
  implementation "com.android.support:appcompat-v7:$supportLibVersion"
  implementation "com.android.support:recyclerview-v7:$supportLibVersion"
  implementation "com.android.support:design:$supportLibVersion"
  implementation "com.android.support:cardview-v7:$supportLibVersion"
  implementation 'com.android.support:multidex:1.0.1'
  implementation 'android.arch.lifecycle:extensions:1.1.0'
  kapt "android.arch.lifecycle:compiler:1.1.0"
  implementation "com.android.support:customtabs:$supportLibVersion"
  implementation 'com.airbnb.android:epoxy:2.16.4'
  kapt 'com.airbnb.android:epoxy-processor:2.16.4'
  implementation 'com.airbnb.android:mvrx:0.5.0'
  implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
  implementation 'androidx.core:core-ktx:0.2'
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
  implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
  implementation 'com.jakewharton:butterknife:8.8.1'
  kapt 'com.jakewharton:butterknife-compiler:8.8.1'
  implementation 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
  implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
  implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'com.airbnb.android:happo:0.0.15@aar'
  // TODO: figure out why transitive deps of happo are needed
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-idling-resource:3.0.1'
  androidTestImplementation 'io.reactivex.rxjava2:rxjava:2.1.5'
  androidTestImplementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
  androidTestImplementation 'com.squareup.okhttp3:okhttp:3.9.0'
  androidTestImplementation 'com.amazonaws:aws-android-sdk-core:2.6.5'
  androidTestImplementation 'com.amazonaws:aws-android-sdk-s3:2.6.5'
  androidTestImplementation 'io.jsonwebtoken:jjwt:0.8.0'
  androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'org.hamcrest', module: 'hamcrest-integration'
  })
  androidTestImplementation('com.android.support.test:runner:0.5', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  androidTestImplementation('com.android.support.test:rules:0.5', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  implementation 'com.google.code.gson:gson:2.8.2'
  implementation 'com.squareup.okhttp3:okhttp:3.10.0'
  implementation 'com.squareup.retrofit2:retrofit:2.3.0'
  implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
  implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
  implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
  implementation 'com.github.bumptech.glide:glide:4.6.1'
}
repositories {
  mavenCentral()
}
