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 58
    versionName "2.6.0-signed2"
    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.10.0'
  kapt 'com.airbnb.android:epoxy-processor:2.10.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()
}
