diff --git a/build.gradle.kts b/build.gradle.kts index b3722962cc..d369673aec 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -81,3 +81,4 @@ subprojects { } } } + diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 198e5ecf8f..0050b22a43 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -5,7 +5,7 @@ version = "1.0.0" plugins { `kotlin-dsl` - `kotlin-dsl-precompiled-script-plugins` + `java-gradle-plugin` } repositories { diff --git a/buildSrc/src/main/kotlin/embrace-prod-defaults.gradle.kts b/buildSrc/src/main/kotlin/embrace-prod-defaults.gradle.kts deleted file mode 100644 index b68354c2c4..0000000000 --- a/buildSrc/src/main/kotlin/embrace-prod-defaults.gradle.kts +++ /dev/null @@ -1,184 +0,0 @@ -import io.embrace.gradle.Versions -import org.gradle.api.tasks.testing.logging.TestExceptionFormat -import java.net.URI - -plugins { - id("embrace-test-defaults") - id("checkstyle") apply false - id("binary-compatibility-validator") apply false - id("org.jetbrains.kotlinx.kover") apply false - id("maven-publish") apply false - id("signing") apply false -} - -android { - useLibrary("android.test.runner") - useLibrary("android.test.base") - useLibrary("android.test.mock") - - defaultConfig { - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - - // The following argument makes the Android Test Orchestrator run its - // "pm clear" command after each test invocation. This command ensures - // that the app's state is completely cleared between tests. - testInstrumentationRunnerArguments["clearPackageData"] = "true" - - aarMetadata { - minCompileSdk = Versions.MIN_COMPILE_SDK - } - } - - testOptions { - // Calling Android logging methods will throw exceptions if this is false - // see: http://tools.android.com/tech-docs/unit-testing-support#TOC-Method-...-not-mocked.- - unitTests.isReturnDefaultValues = true - unitTests.isIncludeAndroidResources = true - - unitTests { - all { test -> - test.testLogging { - this.exceptionFormat = TestExceptionFormat.FULL - } - test.maxParallelForks = (Runtime.getRuntime().availableProcessors() / 3) + 1 - } - } - execution = "ANDROIDX_TEST_ORCHESTRATOR" - } - - buildTypes { - named("release") { - isMinifyEnabled = false - } - } - - publishing { - - // create component with single publication variant - // https://developer.android.com/studio/publish-library/configure-pub-variants#single-pub-var - singleVariant("release") { - withSourcesJar() - withJavadocJar() - } - } - - sourceSets { - getByName("test").java.srcDir("src/integrationTest/java") - getByName("test").kotlin.srcDir("src/integrationTest/kotlin") - getByName("test").resources.srcDir("src/integrationTest/resources") - } -} - -dependencies { - implementation(findLibrary("kotlin.stdlib")) - add("lintChecks", project.project(":embrace-lint")) - - testImplementation(findLibrary("junit")) - testImplementation(findLibrary("mockk")) - testImplementation(findLibrary("androidx.test.core")) - testImplementation(findLibrary("androidx.test.junit")) - testImplementation(findLibrary("robolectric")) - testImplementation(findLibrary("mockwebserver")) - testImplementation(project(":embrace-test-common")) - testImplementation(project(":embrace-test-fakes")) - - androidTestImplementation(findLibrary("androidx.test.core")) - androidTestImplementation(findLibrary("androidx.test.runner")) - androidTestUtil(findLibrary("androidx.test.orchestrator")) -} - -checkstyle { - toolVersion = "10.3.2" -} - -project.tasks.register("checkstyle", Checkstyle::class.java).configure { - configFile = project.rootProject.file("config/checkstyle/google_checks.xml") - ignoreFailures = false - isShowViolations = true - source("src") - include("**/*.java") - classpath = project.files() - maxWarnings = 0 -} - -fun addPublication(publication: MavenPublication, componentName: String) = with(publication) { - groupId = "io.embrace" - artifactId = project.name - version = project.version.toString() - - afterEvaluate { - from(components[componentName]) - } - - // append some license metadata to the POM. - pom { - name = project.name - description = "Embrace Android SDK" - url = "https://github.com/embrace-io/embrace-android-sdk" - licenses { - license { - name = "Embrace License" - url = "https://embrace.io/docs/terms-of-service/" - } - } - developers { - developer { - id = "dev1" - name = "Embrace" - email = "support@embrace.io" - } - } - scm { - connection = "scm:git:github.com/embrace-io/embrace-android-sdk.git" - developerConnection = "scm:git:ssh://github.com/embrace-io/embrace-android-sdk.git" - url = "https://github.com/embrace-io/embrace-android-sdk/tree/main" - } - } -} - -// https://developer.android.com/studio/publish-library/upload-library -publishing { - publications { - register("release") { - addPublication(this, "release") - } - } - - // configure repositories where the publication can be hosted - repositories { - // beta releases - maven { - credentials { - username = System.getenv("MAVEN_QA_USER") - password = System.getenv("MAVEN_QA_PASSWORD") - } - name = "Qa" - url = URI.create("https://repo.embrace.io/repository/beta") - } - // the android-testing maven repository is used for publishing snapshots - maven { - credentials { - username = System.getenv("MAVEN_QA_USER") - password = System.getenv("MAVEN_QA_PASSWORD") - } - name = "Snapshot" - url = URI.create("https://repo.embrace.io/repository/android-testing") - } - } -} - -signing { - val keyId = System.getenv("mavenSigningKeyId") - val key = System.getenv("mavenSigningKeyRingFileEncoded") - val password = System.getenv("mavenSigningKeyPassword") - useInMemoryPgpKeys(keyId, key, password) - sign(publishing.publications.getByName("release")) -} - -project.tasks.withType(Sign::class).configureEach { - enabled = !project.version.toString().endsWith("-SNAPSHOT") -} - -// workaround: see https://medium.com/@saulmm2/android-gradle-precompiled-scripts-tomls-kotlin-dsl-df3c27ea017c -private fun Project.findLibrary(alias: String) = - project.extensions.getByType().named("libs").findLibrary(alias).get() diff --git a/buildSrc/src/main/kotlin/embrace-test-defaults.gradle.kts b/buildSrc/src/main/kotlin/embrace-test-defaults.gradle.kts deleted file mode 100644 index eb9192e47f..0000000000 --- a/buildSrc/src/main/kotlin/embrace-test-defaults.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -import io.embrace.gradle.Versions -import io.gitlab.arturbosch.detekt.Detekt -import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - -plugins { - id("com.android.library") apply false - id("kotlin-android") apply false - id("io.gitlab.arturbosch.detekt") apply false -} - -dependencies { - add("detektPlugins", findLibrary("detekt.formatting")) -} - -detekt { - buildUponDefaultConfig = true - autoCorrect = true - config.from(project.files("${project.rootDir}/config/detekt/detekt.yml")) // overwrite default behaviour here - baseline = - project.file("${project.projectDir}/config/detekt/baseline.xml") // suppress pre-existing issues -} - -project.tasks.withType(Detekt::class.java).configureEach { - jvmTarget = "1.8" - reports { - html.required.set(true) - xml.required.set(false) - txt.required.set(true) - sarif.required.set(false) - md.required.set(false) - } -} - -project.tasks.withType(DetektCreateBaselineTask::class.java).configureEach { - jvmTarget = "1.8" -} - -project.tasks.withType(JavaCompile::class.java).configureEach { - options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation")) -} - -// workaround: see https://medium.com/@saulmm2/android-gradle-precompiled-scripts-tomls-kotlin-dsl-df3c27ea017c -private fun Project.findLibrary(alias: String) = - project.extensions.getByType().named("libs").findLibrary(alias).get() diff --git a/buildSrc/src/main/kotlin/io/embrace/internal/BuildPlugin.kt b/buildSrc/src/main/kotlin/io/embrace/internal/BuildPlugin.kt index 1cea3ed850..00c9b4e2cd 100644 --- a/buildSrc/src/main/kotlin/io/embrace/internal/BuildPlugin.kt +++ b/buildSrc/src/main/kotlin/io/embrace/internal/BuildPlugin.kt @@ -1,76 +1,123 @@ package io.embrace.internal -import gradle.kotlin.dsl.accessors._3413c52528fd46b4e275cc05d0f006bb.android -import gradle.kotlin.dsl.accessors._3413c52528fd46b4e275cc05d0f006bb.kotlin -import gradle.kotlin.dsl.accessors._3413c52528fd46b4e275cc05d0f006bb.kotlinOptions -import io.embrace.gradle.Versions +import com.android.build.api.dsl.LibraryExtension +import io.gitlab.arturbosch.detekt.Detekt +import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask +import io.gitlab.arturbosch.detekt.extensions.DetektExtension import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.assign +import org.gradle.api.tasks.compile.JavaCompile import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinVersion class BuildPlugin : Plugin { override fun apply(project: Project) { - val extension = project.extensions.create("embrace", EmbraceBuildLogicExtension::class.java) - project.configureAndroidExtension() + val module = project.extensions.create("embrace", EmbraceBuildLogicExtension::class.java) - if (extension.explicitApiMode.get()) { - project.configureExplicitApiMode() + with(project.pluginManager) { + apply("com.android.library") + apply("kotlin-android") + apply("io.gitlab.arturbosch.detekt") + } + + project.dependencies.add( + "detektPlugins", + "io.gitlab.arturbosch.detekt:detekt-formatting:1.23.7" + ) + configureJvmWarningsAsErrors(project) + configureDetekt(project) + + project.pluginManager.withPlugin("com.android.library") { + onAgpApplied(project, module) } -// project.logger.lifecycle(extension.printSomething.get()) -// } -// project.logger.lifecycle("Embrace Build Plugin applied!") -// -// // Example: Apply common settings to all subprojects -// project.subprojects { -// plugins.apply("java-library") -// -// // Configure dependencies -// dependencies.add("implementation", "org.jetbrains.kotlin:kotlin-stdlib") -// } } - - private fun Project.configureAndroidExtension() { - android { - compileSdk = Versions.COMPILE_SDK - defaultConfig { - minSdk = Versions.MIN_SDK - } + private fun onAgpApplied(project: Project, module: EmbraceBuildLogicExtension) { + val android = project.extensions.getByType(LibraryExtension::class.java) + android.configureAndroidExtension(project) - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } + val kotlin = project.extensions.getByType(KotlinAndroidProjectExtension::class.java) + kotlin.configureKotlinExtension() - lint { - abortOnError = true - warningsAsErrors = true - checkAllWarnings = true - checkReleaseBuilds = false // run on CI instead, speeds up release builds - baseline = project.file("lint-baseline.xml") - disable.addAll(mutableSetOf("GradleDependency", "NewerVersionAvailable")) + project.afterEvaluate { + if (module.containsPublicApi.get()) { + kotlin.configureExplicitApiMode() } + } - kotlin { - compilerOptions { - apiVersion.set(KotlinVersion.KOTLIN_1_8) - languageVersion.set(KotlinVersion.KOTLIN_1_8) - jvmTarget.set(JvmTarget.JVM_1_8) - allWarningsAsErrors = true - } - } + if (module.productionModule.get()) { + project.configureProductionModule(android, module) } } - private fun Project.configureExplicitApiMode() { - android { - kotlinOptions { - freeCompilerArgs = freeCompilerArgs + listOf("-Xexplicit-api=strict") + + private fun configureDetekt(project: Project) { + val detekt = project.extensions.getByType(DetektExtension::class.java) + + detekt.apply { + buildUponDefaultConfig = true + autoCorrect = true + config.from(project.files("${project.rootDir}/config/detekt/detekt.yml")) // overwrite default behaviour here + baseline = + project.file("${project.projectDir}/config/detekt/baseline.xml") // suppress pre-existing issues + } + project.tasks.withType(Detekt::class.java).configureEach { + jvmTarget = "1.8" + reports { + html.required.set(true) + xml.required.set(false) + txt.required.set(true) + sarif.required.set(false) + md.required.set(false) } } + project.tasks.withType(DetektCreateBaselineTask::class.java).configureEach { + jvmTarget = "1.8" + } } + private fun LibraryExtension.configureAndroidExtension(project: Project) { + compileSdk = Versions.COMPILE_SDK + + defaultConfig { + minSdk = Versions.MIN_SDK + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + lint { + abortOnError = true + warningsAsErrors = true + checkAllWarnings = true + checkReleaseBuilds = false // run on CI instead, speeds up release builds + baseline = project.file("lint-baseline.xml") + disable.addAll(setOf("GradleDependency", "NewerVersionAvailable")) + } + } + + private fun configureJvmWarningsAsErrors(project: Project) { + project.tasks.withType(JavaCompile::class.java).configureEach { + options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation")) + } + } + + private fun KotlinAndroidProjectExtension.configureKotlinExtension() { + compilerOptions { + apiVersion.set(KotlinVersion.KOTLIN_1_8) + languageVersion.set(KotlinVersion.KOTLIN_1_8) + jvmTarget.set(JvmTarget.JVM_1_8) + allWarningsAsErrors.set(true) + } + } + + private fun KotlinAndroidProjectExtension.configureExplicitApiMode() { + compilerOptions { + freeCompilerArgs.set(freeCompilerArgs.get().plus("-Xexplicit-api=strict")) + } + } } diff --git a/buildSrc/src/main/kotlin/io/embrace/internal/EmbraceBuildLogicExtension.kt b/buildSrc/src/main/kotlin/io/embrace/internal/EmbraceBuildLogicExtension.kt index 4a73e15c35..cb1c37d489 100644 --- a/buildSrc/src/main/kotlin/io/embrace/internal/EmbraceBuildLogicExtension.kt +++ b/buildSrc/src/main/kotlin/io/embrace/internal/EmbraceBuildLogicExtension.kt @@ -6,25 +6,19 @@ import org.gradle.api.provider.Property /** * Controls Embrace build logic for a given module. */ -abstract class EmbraceBuildLogicExtension(objectFactory: ObjectFactory) { // TODO: support Java modules +abstract class EmbraceBuildLogicExtension(objectFactory: ObjectFactory) { /** - * Whether binary compatibility checks should be enabled for this module to avoid adding - * unintentional API changes. + * Whether this module forms part of the SDK's public API or not. This enables binary compatibility checks, Kotlin's + * explicit API mode and Dokka generation. */ - val apiCompatChecks: Property = - objectFactory.property(Boolean::class.java).convention(false) // TODO: support - - /** - * Whether Kotlin's explicit API mode should be enabled. - */ - val explicitApiMode: Property = - objectFactory.property(Boolean::class.java).convention(false) // TODO: support + val containsPublicApi: Property = + objectFactory.property(Boolean::class.java).convention(false) /** * If this is false then the module will not be published & will be treated as something that * contains internal code used for testing. */ val productionModule: Property = - objectFactory.property(Boolean::class.java).convention(true) // TODO: support + objectFactory.property(Boolean::class.java).convention(true) } diff --git a/buildSrc/src/main/kotlin/io/embrace/internal/ProductionModuleConfig.kt b/buildSrc/src/main/kotlin/io/embrace/internal/ProductionModuleConfig.kt new file mode 100644 index 0000000000..01792c0f9b --- /dev/null +++ b/buildSrc/src/main/kotlin/io/embrace/internal/ProductionModuleConfig.kt @@ -0,0 +1,123 @@ +package io.embrace.internal + +import com.android.build.api.dsl.LibraryExtension +import kotlinx.validation.ApiValidationExtension +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.plugins.quality.Checkstyle +import org.gradle.api.plugins.quality.CheckstyleExtension +import org.gradle.api.tasks.testing.logging.TestExceptionFormat +import org.gradle.kotlin.dsl.getByType + +fun Project.configureProductionModule(android: LibraryExtension, module: EmbraceBuildLogicExtension) { + with(project.pluginManager) { + apply("checkstyle") + apply("org.jetbrains.kotlinx.kover") + apply("maven-publish") + apply("signing") + apply("binary-compatibility-validator") + } + + project.afterEvaluate { + val apiValidation = project.extensions.getByType(ApiValidationExtension::class.java) + apiValidation.validationDisabled = !module.containsPublicApi.get() + } + + android.apply { + useLibrary("android.test.runner") + useLibrary("android.test.base") + useLibrary("android.test.mock") + + defaultConfig { + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + aarMetadata { + minCompileSdk = Versions.MIN_COMPILE_SDK + } + } + + @Suppress("UnstableApiUsage") + testOptions { + // Calling Android logging methods will throw exceptions if this is false + // see: http://tools.android.com/tech-docs/unit-testing-support#TOC-Method-...-not-mocked.- + unitTests.isReturnDefaultValues = true + unitTests.isIncludeAndroidResources = true + + unitTests { + all { test -> + test.testLogging { + this.exceptionFormat = TestExceptionFormat.FULL + } + test.maxParallelForks = (Runtime.getRuntime().availableProcessors() / 3) + 1 + } + } + execution = "ANDROIDX_TEST_ORCHESTRATOR" + } + + buildTypes { + named("release") { + isMinifyEnabled = false + } + } + + publishing { + + // create component with single publication variant + // https://developer.android.com/studio/publish-library/configure-pub-variants#single-pub-var + singleVariant("release") { + withSourcesJar() + withJavadocJar() + } + } + + sourceSets { + getByName("test").java.srcDir("src/integrationTest/java") + getByName("test").kotlin.srcDir("src/integrationTest/kotlin") + getByName("test").resources.srcDir("src/integrationTest/resources") + } + } + + val checkstyle = project.extensions.getByType(CheckstyleExtension::class.java) + checkstyle.toolVersion = "10.3.2" + + @Suppress("UnstableApiUsage") + project.tasks.register("checkstyle", Checkstyle::class.java).configure { + configFile = project.rootProject.file("config/checkstyle/google_checks.xml") + ignoreFailures = false + isShowViolations = true + source("src") + include("**/*.java") + classpath = project.files() + maxWarnings = 0 + } + + project.dependencies.apply { + add("implementation", findLibrary("kotlin.stdlib")) + add("lintChecks", project.project(":embrace-lint")) + + add("testImplementation", findLibrary("junit")) + add("testImplementation", findLibrary("mockk")) + add("testImplementation", findLibrary("androidx.test.core")) + add("testImplementation", findLibrary("androidx.test.junit")) + add("testImplementation", findLibrary("robolectric")) + add("testImplementation", findLibrary("mockwebserver")) + add("testImplementation", project(":embrace-test-common")) + add("testImplementation", project(":embrace-test-fakes")) + + add("androidTestImplementation", findLibrary("androidx.test.core")) + add("androidTestImplementation", findLibrary("androidx.test.runner")) + add("androidTestUtil", findLibrary("androidx.test.orchestrator")) + + add("kover", project) + } + + project.afterEvaluate { + if (module.productionModule.get()) { + configurePublishing() + } + } +} + +// workaround: see https://medium.com/@saulmm2/android-gradle-precompiled-scripts-tomls-kotlin-dsl-df3c27ea017c +private fun Project.findLibrary(alias: String) = + project.extensions.getByType().named("libs").findLibrary(alias).get() diff --git a/buildSrc/src/main/kotlin/io/embrace/internal/PublishConfig.kt b/buildSrc/src/main/kotlin/io/embrace/internal/PublishConfig.kt new file mode 100644 index 0000000000..87653740d9 --- /dev/null +++ b/buildSrc/src/main/kotlin/io/embrace/internal/PublishConfig.kt @@ -0,0 +1,95 @@ +package io.embrace.internal + +import java.net.URI +import org.gradle.api.Project +import org.gradle.api.publish.PublishingExtension +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.withType +import org.gradle.plugins.signing.Sign +import org.gradle.plugins.signing.SigningExtension + +fun Project.configurePublishing() { + val publishing = project.extensions.getByType(PublishingExtension::class.java) + + // https://developer.android.com/studio/publish-library/upload-library + publishing.apply { + publications { + register("release") { + addPublication(this, "release") + } + } + + // configure repositories where the publication can be hosted + repositories { + // beta releases + maven { + credentials { + username = System.getenv("MAVEN_QA_USER") + password = System.getenv("MAVEN_QA_PASSWORD") + } + name = "Qa" + url = URI.create("https://repo.embrace.io/repository/beta") + } + // the android-testing maven repository is used for publishing snapshots + maven { + credentials { + username = System.getenv("MAVEN_QA_USER") + password = System.getenv("MAVEN_QA_PASSWORD") + } + name = "Snapshot" + url = URI.create("https://repo.embrace.io/repository/android-testing") + } + } + } + + val signing = project.extensions.getByType(SigningExtension::class.java) + + signing.apply { + val keyId = System.getenv("mavenSigningKeyId") + val key = System.getenv("mavenSigningKeyRingFileEncoded") + val password = System.getenv("mavenSigningKeyPassword") + useInMemoryPgpKeys(keyId, key, password) + sign(publishing.publications.getByName("release")) + } + + project.tasks.withType(Sign::class).configureEach { + enabled = !project.version.toString().endsWith("-SNAPSHOT") + } +} + +private fun Project.addPublication(publication: MavenPublication, componentName: String) = with(publication) { + groupId = "io.embrace" + artifactId = project.name + version = project.version.toString() + + afterEvaluate { + from(components[componentName]) + } + + // append some license metadata to the POM. + pom { + name.set(project.name) + description.set("Embrace Android SDK") + url.set("https://github.com/embrace-io/embrace-android-sdk") + licenses { + license { + name.set("Embrace License") + url.set("https://embrace.io/docs/terms-of-service/") + } + } + developers { + developer { + id.set("dev1") + name.set("Embrace") + email.set("support@embrace.io") + } + } + scm { + connection.set("scm:git:github.com/embrace-io/embrace-android-sdk.git") + developerConnection.set("scm:git:ssh://github.com/embrace-io/embrace-android-sdk.git") + url.set("https://github.com/embrace-io/embrace-android-sdk/tree/main") + } + } +} diff --git a/buildSrc/src/main/kotlin/io/embrace/gradle/Versions.kt b/buildSrc/src/main/kotlin/io/embrace/internal/Versions.kt similarity index 90% rename from buildSrc/src/main/kotlin/io/embrace/gradle/Versions.kt rename to buildSrc/src/main/kotlin/io/embrace/internal/Versions.kt index 66bb669b07..b8c8dbc589 100644 --- a/buildSrc/src/main/kotlin/io/embrace/gradle/Versions.kt +++ b/buildSrc/src/main/kotlin/io/embrace/internal/Versions.kt @@ -1,4 +1,4 @@ -package io.embrace.gradle +package io.embrace.internal /** * Defines dependency versions that are used in the project that cannot be defined in libs.versions.toml diff --git a/embrace-android-api/build.gradle.kts b/embrace-android-api/build.gradle.kts index 436892ddda..5f1828d27e 100644 --- a/embrace-android-api/build.gradle.kts +++ b/embrace-android-api/build.gradle.kts @@ -1,11 +1,9 @@ plugins { - id("embrace-prod-defaults") id("io.embrace.internal.build-logic") } embrace { - explicitApiMode.set(true) - apiCompatChecks.set(true) + containsPublicApi.set(true) } description = "Embrace Android SDK: API" diff --git a/embrace-android-compose/build.gradle.kts b/embrace-android-compose/build.gradle.kts index 6436e21f18..8386ea58ae 100644 --- a/embrace-android-compose/build.gradle.kts +++ b/embrace-android-compose/build.gradle.kts @@ -1,5 +1,4 @@ plugins { - id("embrace-prod-defaults") id("io.embrace.internal.build-logic") } diff --git a/embrace-android-core/build.gradle.kts b/embrace-android-core/build.gradle.kts index 1a43578733..27c04eefbd 100644 --- a/embrace-android-core/build.gradle.kts +++ b/embrace-android-core/build.gradle.kts @@ -1,10 +1,8 @@ plugins { - id("embrace-prod-defaults") id("io.embrace.internal.build-logic") } embrace { -// printSomething.set("Hello from Embrace!") } description = "Embrace Android SDK: Core" @@ -23,8 +21,6 @@ android { } } -apiValidation.validationDisabled = true - dependencies { implementation(project(":embrace-android-payload")) implementation(project(":embrace-android-delivery")) diff --git a/embrace-android-core/lint-baseline.xml b/embrace-android-core/lint-baseline.xml index a995be48d1..261092375e 100644 --- a/embrace-android-core/lint-baseline.xml +++ b/embrace-android-core/lint-baseline.xml @@ -1,5 +1,5 @@ - + + errorLine1="public final class WebViewChromeClientSwazzledHooks {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + column="20"/> - + @@ -19,7 +19,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> diff --git a/embrace-android-payload/build.gradle.kts b/embrace-android-payload/build.gradle.kts index c964aca277..353238faae 100644 --- a/embrace-android-payload/build.gradle.kts +++ b/embrace-android-payload/build.gradle.kts @@ -1,5 +1,4 @@ plugins { - id("embrace-prod-defaults") id("io.embrace.internal.build-logic") id("com.google.devtools.ksp") } @@ -10,8 +9,6 @@ android { namespace = "io.embrace.android.embracesdk.payload" } -apiValidation.validationDisabled = true - dependencies { implementation(libs.moshi) ksp(libs.moshi.kotlin.codegen) diff --git a/embrace-android-sdk/build.gradle.kts b/embrace-android-sdk/build.gradle.kts index aabc21397a..af1f44ae02 100644 --- a/embrace-android-sdk/build.gradle.kts +++ b/embrace-android-sdk/build.gradle.kts @@ -1,14 +1,12 @@ -import io.embrace.gradle.Versions +import io.embrace.internal.Versions plugins { - id("embrace-prod-defaults") id("io.embrace.internal.build-logic") id("com.google.devtools.ksp") } embrace { - explicitApiMode.set(true) - apiCompatChecks.set(true) + containsPublicApi.set(true) } description = "Embrace Android SDK: Core" @@ -31,13 +29,6 @@ android { } } -// include these projects in code coverage -rootProject.childProjects.forEach { (_, proj) -> - if (proj.plugins.hasPlugin("embrace-prod-defaults")) { - dependencies.add("kover", proj) - } -} - kover { reports { filters { diff --git a/embrace-android-sdk/lint-baseline.xml b/embrace-android-sdk/lint-baseline.xml index ad0e9e5a78..143e25e8df 100644 --- a/embrace-android-sdk/lint-baseline.xml +++ b/embrace-android-sdk/lint-baseline.xml @@ -1,15 +1,15 @@ - + + errorLine1="public final class ViewSwazzledHooks {" + errorLine2=" ~~~~~~~~~~~~~~~~~"> + column="20"/> + errorLine1="public final class WebViewClientSwazzledHooks {" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~"> + line="11" + column="20"/> - + + + + + diff --git a/embrace-test-fakes/build.gradle.kts b/embrace-test-fakes/build.gradle.kts index 09f6012fc9..252ea3e7c4 100644 --- a/embrace-test-fakes/build.gradle.kts +++ b/embrace-test-fakes/build.gradle.kts @@ -1,8 +1,11 @@ plugins { - id("embrace-test-defaults") id("io.embrace.internal.build-logic") } +embrace { + productionModule.set(false) +} + android { namespace = "io.embrace.android.embracesdk.test.fakes" } diff --git a/embrace-test-fakes/lint-baseline.xml b/embrace-test-fakes/lint-baseline.xml index 1f46440461..333f47a062 100644 --- a/embrace-test-fakes/lint-baseline.xml +++ b/embrace-test-fakes/lint-baseline.xml @@ -1,5 +1,5 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -797,7 +709,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -808,7 +720,7 @@ errorLine2=" ~~~~~~"> @@ -819,7 +731,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -830,7 +742,7 @@ errorLine2=" ~~~~~~"> @@ -841,7 +753,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -852,7 +764,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~">