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

android {
  compileSdkVersion 29
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdkVersion 16
    targetSdkVersion 29
    versionCode 67
    versionName VERSION_NAME
    multiDexEnabled true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    buildConfigField("String", "BITRISE_GIT_BRANCH", "\"" + System.getenv("BITRISE_GIT_BRANCH") + "\"")
    buildConfigField("String", "GIT_SHA", "\"" + gitSha + "\"")
    buildConfigField("String", "GIT_BRANCH", "\"" + gitBranch + "\"")
  }
  buildTypes {
    debug {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
      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") + "\"")
    }
    release {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
      minifyEnabled false
    }
  }
  lintOptions {
    ignore 'InvalidPackage'
    textReport true
    textOutput 'stdout'
    baseline file("lint-baseline.xml")
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  kotlinOptions {
    jvmTarget = "1.8"
  }
  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 'androidx.multidex:multidex:2.0.1'

  implementation "androidx.fragment:fragment:1.2.0-rc04"
  implementation("androidx.appcompat:appcompat:1.1.0")
  implementation "androidx.recyclerview:recyclerview:1.0.0"
  implementation "androidx.cardview:cardview:1.0.0"
  implementation 'androidx.core:core-ktx:1.2.0-rc01'
  implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'
  implementation "androidx.browser:browser:1.0.0"
  implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-beta01'
  kapt "androidx.lifecycle:lifecycle-common-java8:2.1.0-beta01"
  implementation "com.google.android.material:material:1.0.0"

  implementation 'com.airbnb.android:epoxy:2.17.0'
  kapt 'com.airbnb.android:epoxy-processor:2.17.0'
  implementation 'com.airbnb.android:mvrx:0.5.0'
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
  implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0'
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.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'
  implementation 'com.amazonaws:aws-android-sdk-s3:2.7.+'
  implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.7.+@aar') { transitive = true }
  implementation ('com.amazonaws:aws-android-sdk-auth-userpools:2.7.+@aar') { transitive = true }
  implementation 'com.google.code.gson:gson:2.8.2'
  implementation 'com.squareup.okhttp3:okhttp:3.11.0'
  implementation 'com.squareup.retrofit2:retrofit:2.4.0'
  implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
  implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
  implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
  implementation 'io.reactivex.rxjava2:rxjava:2.2.1'
  implementation 'com.github.bumptech.glide:glide:4.8.0'

  debugImplementation("androidx.fragment:fragment-testing:1.2.0-rc04")

  testImplementation 'junit:junit:4.12'

  androidTestImplementation 'androidx.test:core:1.2.0'
  androidTestImplementation 'androidx.test.ext:junit:1.1.0'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
  androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.1.0-alpha4'
  androidTestImplementation "androidx.fragment:fragment-testing:1.2.0-rc04"
  androidTestImplementation 'androidx.test:rules:1.2.0'
  androidTestImplementation 'io.reactivex.rxjava2:rxjava:2.2.1'
  androidTestImplementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
  androidTestImplementation 'com.squareup.okhttp3:okhttp:3.11.0'
  androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.0'
  androidTestImplementation 'com.amazonaws:aws-android-sdk-core:2.6.31'
  androidTestImplementation 'com.amazonaws:aws-android-sdk-s3:2.6.31'
  androidTestImplementation "org.mockito:mockito-android:2.28.2"
  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0"
}
