Skip to content
19 changes: 12 additions & 7 deletions firebase-dataconnect/androidTestutil/androidTestutil.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
id("com.android.library")
Expand All @@ -31,14 +31,16 @@ android {
compileSdk = compileSdkVersion
defaultConfig {
minSdk = minSdkVersion
targetSdk = targetSdkVersion
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions { jvmTarget = "1.8" }

@Suppress("UnstableApiUsage") testOptions { targetSdk = targetSdkVersion }

lint { targetSdk = targetSdkVersion }

packaging {
resources {
Expand All @@ -48,6 +50,13 @@ android {
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
optIn.add("kotlin.RequiresOptIn")
}
}

dependencies {
implementation(project(":firebase-dataconnect"))
implementation(project(":firebase-dataconnect:testutil"))
Expand All @@ -66,7 +75,3 @@ dependencies {
implementation(libs.truth)
implementation(libs.turbine)
}

tasks.withType<KotlinCompile>().all {
kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") }
}
26 changes: 15 additions & 11 deletions firebase-dataconnect/connectors/connectors.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
*/

import com.google.firebase.dataconnect.gradle.plugin.UpdateDataConnectExecutableVersionsTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile

plugins {
id("com.android.library")
Expand All @@ -33,23 +35,24 @@ android {
compileSdk = compileSdkVersion
defaultConfig {
minSdk = minSdkVersion
targetSdk = targetSdkVersion
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions { jvmTarget = "1.8" }

@Suppress("UnstableApiUsage")
testOptions {
targetSdk = targetSdkVersion
unitTests {
isIncludeAndroidResources = true
isReturnDefaultValues = true
}
}

lint { targetSdk = targetSdkVersion }

packaging {
resources {
excludes.add("META-INF/LICENSE.md")
Expand All @@ -63,6 +66,13 @@ android {
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
optIn.add("kotlin.RequiresOptIn")
}
}

dependencies {
implementation(project(":firebase-dataconnect"))
implementation(libs.kotlinx.coroutines.core)
Expand Down Expand Up @@ -92,21 +102,15 @@ dependencies {
androidTestImplementation(libs.turbine)
}

tasks.withType<KotlinCompile>().all {
kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") }
}

// Enable Kotlin "Explicit API Mode". This causes the Kotlin compiler to fail if any
// classes, methods, or properties have implicit `public` visibility. This check helps
// avoid accidentally leaking elements into the public API, requiring that any public
// element be explicitly declared as `public`.
// https://github.com/Kotlin/KEEP/blob/master/proposals/explicit-api-mode.md
// https://chao2zhang.medium.com/explicit-api-mode-for-kotlin-on-android-b8264fdd76d1
tasks.withType<KotlinCompile>().all {
tasks.withType<KotlinJvmCompile>().configureEach {
if (!name.contains("test", ignoreCase = true)) {
if (!kotlinOptions.freeCompilerArgs.contains("-Xexplicit-api=strict")) {
kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict"
}
compilerOptions.freeCompilerArgs.add("-Xexplicit-api=strict")
}
}

Expand Down
11 changes: 9 additions & 2 deletions firebase-dataconnect/demo/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import java.nio.charset.StandardCharsets
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
// Use whichever versions of these dependencies suit your application.
Expand Down Expand Up @@ -83,7 +84,13 @@ android {
isCoreLibraryDesugaringEnabled = true
}
buildFeatures.viewBinding = true
kotlinOptions.jvmTarget = "1.8"
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
optIn.add("kotlin.RequiresOptIn")
}
}

spotless {
Expand Down Expand Up @@ -115,7 +122,7 @@ spotless {
target("**/*.xml")
targetExclude("build/")
trimTrailingWhitespace()
indentWithSpaces(2)
leadingTabsToSpaces(2)
endWithNewline()
}
}
Expand Down
23 changes: 12 additions & 11 deletions firebase-dataconnect/firebase-dataconnect.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
* limitations under the License.
*/

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile

plugins {
id("firebase-library")
Expand Down Expand Up @@ -43,15 +45,13 @@ android {
compileSdk = compileSdkVersion
defaultConfig {
minSdk = minSdkVersion
targetSdk = targetSdkVersion
multiDexEnabled = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions { jvmTarget = "1.8" }

@Suppress("UnstableApiUsage")
testOptions {
Expand All @@ -72,6 +72,13 @@ android {
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
optIn.add("kotlin.RequiresOptIn")
}
}

protobuf {
protoc { artifact = "${libs.protoc.get()}" }
plugins {
Expand Down Expand Up @@ -144,20 +151,14 @@ dependencies {
androidTestImplementation(libs.turbine)
}

tasks.withType<KotlinCompile>().all {
kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") }
}

// Enable Kotlin "Explicit API Mode". This causes the Kotlin compiler to fail if any
// classes, methods, or properties have implicit `public` visibility. This check helps
// avoid accidentally leaking elements into the public API, requiring that any public
// element be explicitly declared as `public`.
// https://github.com/Kotlin/KEEP/blob/master/proposals/explicit-api-mode.md
// https://chao2zhang.medium.com/explicit-api-mode-for-kotlin-on-android-b8264fdd76d1
tasks.withType<KotlinCompile>().all {
tasks.withType<KotlinJvmCompile>().configureEach {
if (!name.contains("test", ignoreCase = true)) {
if (!kotlinOptions.freeCompilerArgs.contains("-Xexplicit-api=strict")) {
kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict"
}
compilerOptions.freeCompilerArgs.add("-Xexplicit-api=strict")
}
}
19 changes: 12 additions & 7 deletions firebase-dataconnect/testutil/testutil.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
id("com.android.library")
Expand All @@ -31,14 +31,16 @@ android {
compileSdk = compileSdkVersion
defaultConfig {
minSdk = minSdkVersion
targetSdk = targetSdkVersion
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions { jvmTarget = "1.8" }

@Suppress("UnstableApiUsage") testOptions { targetSdk = targetSdkVersion }

lint { targetSdk = targetSdkVersion }

packaging {
resources {
Expand All @@ -48,6 +50,13 @@ android {
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
optIn.add("kotlin.RequiresOptIn")
}
}

dependencies {
implementation(project(":firebase-dataconnect"))

Expand All @@ -68,7 +77,3 @@ dependencies {
implementation(libs.testonly.three.ten.abp)
implementation(libs.truth)
}

tasks.withType<KotlinCompile>().all {
kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") }
}
Loading