/*
 * Copyright 2018 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
apply plugin: 'com.android.application'

dependencies {
    implementation project("skottielib")
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.airbnb.android:lottie:3.4.1'
}

android {
    compileSdkVersion 28
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    flavorDimensions "tier"
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        signingConfig signingConfigs.debug
    }
    flavorDimensions "base"
    sourceSets.main.jni.srcDirs = [] //disable automatic ndk-build call
    sourceSets.main.jniLibs.srcDir "src/main/libs"

    //    When building from Android Studio, ensure that local variables are set:
    //    sdk.dir=[sdk file path]
    //    depot_tools.dir=[depot tools file path]
    //    x86.out.dir=[out file for x86]
    //    x64.out.dir=[out file for x64]
    //    arm64.out.dir=[out file for xarm64]
    //    arm.out.dir=[out file for arm]

    productFlavors { arm {}; arm64 {}; x86 {}; x64 {}; arm64vulkan {}; }

}
