/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' def generatedSrcDir = new File(layout.buildDirectory.get().asFile, "generated/components/src/main/java") android { defaultConfig { minSdkVersion = config.minSdkVersion compileSdk = config.compileSdkVersion targetSdkVersion = config.targetSdkVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" def appServicesVersion = ApplicationServicesConfig.version if (gradle.hasProperty("localProperties.branchBuild.application-services.version")) { appServicesVersion = gradle["localProperties.branchBuild.application-services.version"] } buildConfigField("String", "LIBRARY_VERSION", "\"" + config.componentsVersion + "\"") buildConfigField("String", "APPLICATION_SERVICES_VERSION", "\"" + appServicesVersion + "\"") buildConfigField("String", "GLEAN_SDK_VERSION", "\"" + libs.versions.mozilla.glean.get() + "\"") if (gradle.mozconfig.substs.MOZ_INCLUDE_SOURCE_INFO) { buildConfigField("String", "VCS_HASH", "\"" + gradle.mozconfig.source_repo.MOZ_SOURCE_STAMP + "\"") } else { buildConfigField("String", "VCS_HASH", "\"\"") } } buildTypes { release { minifyEnabled = false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { java { srcDirs += generatedSrcDir } } } buildFeatures { viewBinding = true buildConfig = true } namespace = 'mozilla.components.support.base' } dependencies { implementation libs.kotlin.coroutines implementation libs.androidx.activity implementation libs.androidx.core.ktx implementation libs.androidx.lifecycle.viewmodel implementation project(':concept-fetch') api project(":concept-base") // We expose the app-compat as API so that consumers get access to the Lifecycle classes automatically api libs.androidx.appcompat testImplementation project(':support-test') testImplementation libs.testing.coroutines testImplementation libs.androidx.test.core testImplementation libs.androidx.test.junit testImplementation libs.testing.robolectric } preBuild.finalizedBy("generateComponentEnum") /** * Generates a "Components" enum listing all published components. */ tasks.register("generateComponentEnum") { def buildConfigCache = buildConfig doLast { generatedSrcDir.mkdirs() def file = new File(generatedSrcDir, "Component.kt") file.delete() file.createNewFile() file << "/* This Source Code Form is subject to the terms of the Mozilla Public\n" + " * License, v. 2.0. If a copy of the MPL was not distributed with this\n" + " * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n" file << "package mozilla.components.support.base" << "\n" file << "\n" file << "// Automatically generated file. DO NOT MODIFY" << "\n" file << "\n" file << "enum class Component {" << "\n" file << buildConfigCache.projects.findAll { project -> project.value.publish }.collect { project -> " " + project.key.replace("-", "_").toUpperCase(Locale.US) }.join(", \n") file << "\n" file << "}\n" file << "\n" } } apply from: '../../../android-lint.gradle' apply from: '../../../publish.gradle' ext.configurePublish(config.componentsGroupId, project.name, project.ext.description)