build.gradle 4.4 KB
plugins {
    id "org.jetbrains.dokka"
    id 'com.android.library'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'kotlinx-serialization'
    id 'com.google.protobuf'
}

android {
    compileSdkVersion androidSdk.compileVersion
    buildToolsVersion "30.0.3"


    defaultConfig {
        minSdkVersion androidSdk.minVersion
        targetSdkVersion androidSdk.targetVersion

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'

        buildConfigField "String", "VERSION_NAME", "\"$VERSION_NAME\""
    }

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

    sourceSets {
        main.java.srcDirs += "${protobuf.generatedFilesBaseDir}/main/javalite"
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }
    compileOptions {
        sourceCompatibility java_version
        targetCompatibility java_version
    }
    kotlinOptions {
        freeCompilerArgs = ["-Xinline-classes", "-Xopt-in=kotlin.RequiresOptIn"]
        jvmTarget = java_version
    }
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:${versions.protobuf}"
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java {
                }
            }
        }
    }
}

dokkaHtml {
    moduleName.set("livekit-android-sdk")
    dokkaSourceSets {
        configureEach {
            skipEmptyPackages.set(true)
            includeNonPublic.set(false)
            includes.from("module.md")
            displayName.set("SDK")
            sourceLink {
                localDirectory.set(file("src/main/java"))

                // URL showing where the source code can be accessed through the web browser
                remoteUrl.set(new URL(
                        "https://github.com/livekit/client-sdk-android/tree/master/livekit-android-sdk/src/main/java"))
                // Suffix which is used to append the line number to the URL. Use #L for GitHub
                remoteLineSuffix.set("#L")
            }

            perPackageOption {
                matchingRegex.set(".*\\.dagger.*")
                suppress.set(true)
            }

            perPackageOption {
                matchingRegex.set(".*\\.util.*")
                suppress.set(true)
            }
        }
    }
}

dependencies {
    protobuf files(generated.protoSrc)
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation deps.kotlinx_coroutines
    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0'
    api 'com.github.webrtc-sdk:android:92.4515.02'
    api "com.squareup.okhttp3:okhttp:4.9.0"
    implementation "androidx.annotation:annotation:1.2.0"
    implementation "androidx.core:core:${versions.androidx_core}"
    implementation "com.google.protobuf:protobuf-java:${versions.protobuf}"
    implementation "com.google.protobuf:protobuf-java-util:${versions.protobuf}"
    implementation "androidx.compose.ui:ui:$compose_version"

    implementation 'com.google.dagger:dagger:2.38'
    kapt 'com.google.dagger:dagger-compiler:2.38'

    implementation deps.timber
    implementation 'com.vdurmont:semver4j:3.1.0'

    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.robolectric:robolectric:4.6'
    testImplementation 'org.mockito:mockito-core:4.0.0'
    testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0"
    testImplementation 'androidx.test:core:1.4.0'
    testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.0"
    kaptTest 'com.google.dagger:dagger-compiler:2.38'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

apply from: rootProject.file('gradle/gradle-mvn-push.gradle')

afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                // Applies the component for the release build variant.
                from components.release

                // You can then customize attributes of the publication as shown below.
                groupId = GROUP
                artifactId = POM_ARTIFACT_ID
                version = VERSION_NAME
            }
        }
    }
}