Extract application build setup to plugin
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||
import gq.kirmanak.mealient.Versions
|
||||
import gq.kirmanak.mealient.configureKotlinAndroid
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.configure
|
||||
|
||||
class AndroidApplicationConventionPlugin : Plugin<Project> {
|
||||
|
||||
override fun apply(target: Project) {
|
||||
with(target) {
|
||||
with(pluginManager) {
|
||||
apply("com.android.application")
|
||||
apply("org.jetbrains.kotlin.android")
|
||||
}
|
||||
|
||||
extensions.configure<BaseAppModuleExtension> {
|
||||
configureKotlinAndroid(this)
|
||||
defaultConfig.targetSdk = Versions.TARGET_SDK_VERSION
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
package gq.kirmanak.mealient
|
||||
|
||||
import com.android.build.api.dsl.CommonExtension
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.kotlin.dsl.dependencies
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
||||
|
||||
internal fun Project.configureKotlinAndroid(
|
||||
commonExtension: CommonExtension<*, *, *, *>,
|
||||
) {
|
||||
commonExtension.apply {
|
||||
compileSdk = Versions.COMPILE_SDK_VERSION
|
||||
|
||||
defaultConfig {
|
||||
minSdk = Versions.MIN_SDK_VERSION
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = freeCompilerArgs + listOf("-opt-in=kotlin.RequiresOptIn")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
add("coreLibraryDesugaring", libs.findLibrary("android-tools-desugar").get())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) {
|
||||
(this as ExtensionAware).extensions.configure("kotlinOptions", block)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package gq.kirmanak.mealient
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.VersionCatalog
|
||||
import org.gradle.api.artifacts.VersionCatalogsExtension
|
||||
import org.gradle.kotlin.dsl.getByType
|
||||
|
||||
object Versions {
|
||||
const val MIN_SDK_VERSION = 23
|
||||
const val TARGET_SDK_VERSION = 32
|
||||
const val COMPILE_SDK_VERSION = 32
|
||||
}
|
||||
|
||||
val Project.libs: VersionCatalog
|
||||
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||
Reference in New Issue
Block a user