117 lines
3.6 KiB
Groovy
117 lines
3.6 KiB
Groovy
/* 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")
|
|
|
|
// This gitHash functionality is duplicated in publish.gradle.
|
|
def getGitHash = { ->
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine 'git', 'rev-parse', '--short', 'HEAD'
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
}
|
|
|
|
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", "\"" + Versions.mozilla_glean + "\"")
|
|
buildConfigField("String", "GIT_HASH", "\"dev build\"")
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
|
|
buildConfigField("String", "GIT_HASH", "\"" + getGitHash() + "\"")
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs += generatedSrcDir
|
|
}
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
buildConfig true
|
|
}
|
|
|
|
namespace 'mozilla.components.support.base'
|
|
|
|
}
|
|
|
|
dependencies {
|
|
implementation ComponentsDependencies.kotlin_coroutines
|
|
implementation ComponentsDependencies.androidx_lifecycle_viewmodel
|
|
|
|
api project(":concept-base")
|
|
// We expose the app-compat as API so that consumers get access to the Lifecycle classes automatically
|
|
api ComponentsDependencies.androidx_appcompat
|
|
|
|
testImplementation project(':support-test')
|
|
|
|
testImplementation ComponentsDependencies.testing_coroutines
|
|
testImplementation ComponentsDependencies.androidx_test_core
|
|
testImplementation ComponentsDependencies.androidx_test_junit
|
|
testImplementation ComponentsDependencies.testing_robolectric
|
|
}
|
|
|
|
|
|
preBuild.finalizedBy("generateComponentEnum")
|
|
|
|
|
|
/**
|
|
* Generates a "Components" enum listing all published components.
|
|
*/
|
|
tasks.register("generateComponentEnum") {
|
|
doLast {
|
|
generatedSrcDir.mkdirs()
|
|
|
|
def file = new File(generatedSrcDir, "Component.kt")
|
|
file.delete()
|
|
file.createNewFile()
|
|
|
|
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 << buildConfig.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, archivesBaseName, project.ext.description)
|