plugins {
    id 'com.android.application'
}

android {
    compileSdk 30

    defaultConfig {
        applicationId "com.chip.casting"
        minSdk 24
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                targets "default"
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            packagingOptions{
                doNotStrip "**/*.so"
            }
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    testOptions {
        unitTests.returnDefaultValues = true
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs/jniLibs']
            java.srcDirs = [
                    'src/main/java',
                    'src/main/jni',
            ]

            // uncomment this code to debug
//            java.srcDirs = [
//                    'src/main/java',
//                    '../../third_party/connectedhomeip/src/setup_payload/java/src',
//                    '../../third_party/connectedhomeip/src/platform/android/java',
//                    '../../third_party/connectedhomeip/src/app/server/java/src/',
//                    '../../java/src',
//            ]
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar","*.so"])
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.+'
    testImplementation 'org.mockito:mockito-core:3.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.google.zxing:core:3.3.0'
}