1.0.0 - Material you rework
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||
import com.atridad.mealient.configureAndroidCompose
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.configure
|
||||
|
||||
class AndroidApplicationComposeConventionPlugin : Plugin<Project> {
|
||||
|
||||
override fun apply(target: Project) {
|
||||
with(target) {
|
||||
pluginManager.apply("com.android.application")
|
||||
pluginManager.apply("org.jetbrains.kotlin.plugin.compose")
|
||||
|
||||
extensions.configure<BaseAppModuleExtension> {
|
||||
configureAndroidCompose(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||
import com.atridad.mealient.Versions
|
||||
import com.atridad.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")
|
||||
apply("org.jetbrains.kotlinx.kover")
|
||||
}
|
||||
|
||||
extensions.configure<BaseAppModuleExtension> {
|
||||
configureKotlinAndroid(this)
|
||||
defaultConfig.targetSdk = Versions.TARGET_SDK_VERSION
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import com.atridad.mealient.configureAndroidCompose
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.configure
|
||||
|
||||
class AndroidLibraryComposeConventionPlugin : Plugin<Project> {
|
||||
|
||||
override fun apply(target: Project) {
|
||||
with(target) {
|
||||
pluginManager.apply("org.jetbrains.kotlin.plugin.compose")
|
||||
|
||||
extensions.configure<LibraryExtension> {
|
||||
configureAndroidCompose(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import com.atridad.mealient.Versions
|
||||
import com.atridad.mealient.configureKotlinAndroid
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.configure
|
||||
|
||||
class AndroidLibraryConventionPlugin : Plugin<Project> {
|
||||
override fun apply(target: Project) {
|
||||
with(target) {
|
||||
with(pluginManager) {
|
||||
apply("com.android.library")
|
||||
apply("org.jetbrains.kotlin.android")
|
||||
apply("org.jetbrains.kotlinx.kover")
|
||||
}
|
||||
|
||||
extensions.configure<LibraryExtension> {
|
||||
configureKotlinAndroid(this)
|
||||
defaultConfig.targetSdk = Versions.TARGET_SDK_VERSION
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.atridad.mealient
|
||||
|
||||
import com.android.build.api.dsl.CommonExtension
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.dependencies
|
||||
|
||||
internal fun Project.configureAndroidCompose(
|
||||
commonExtension: CommonExtension<*, *, *, *, *, *>,
|
||||
) {
|
||||
val variants = when (commonExtension) {
|
||||
is BaseAppModuleExtension -> commonExtension.applicationVariants
|
||||
is LibraryExtension -> commonExtension.libraryVariants
|
||||
else -> error("Unsupported extension type")
|
||||
}
|
||||
|
||||
commonExtension.apply {
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
|
||||
// Add compose-destinations generated code to Gradle source sets
|
||||
variants.all {
|
||||
kotlin.sourceSets {
|
||||
getByName(name) {
|
||||
kotlin.srcDir("build/generated/ksp/$name/kotlin")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
val bom = library("androidx-compose-bom")
|
||||
add("implementation", platform(bom))
|
||||
add("androidTestImplementation", platform(bom))
|
||||
|
||||
add("implementation", library("androidx-compose-material3"))
|
||||
add("implementation", library("androidx-compose-ui-toolingPreview"))
|
||||
add("implementation", library("androidx-compose-runtime-livedata"))
|
||||
add("implementation", library("androidx-lifecycle-viewmodelCompose"))
|
||||
add("implementation", library("google-accompanist-themeadapter-material3"))
|
||||
add("debugImplementation", library("androidx-compose-ui-tooling"))
|
||||
add("debugImplementation", library("androidx-compose-ui-testManifest"))
|
||||
add("androidTestImplementation", library("androidx-compose-ui-testJunit"))
|
||||
add("implementation", library("composeDestinations-core"))
|
||||
add("ksp", library("composeDestinations-ksp"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.atridad.mealient
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.MinimalExternalModuleDependency
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
|
||||
internal val Project.kotlin: KotlinAndroidProjectExtension
|
||||
get() = (this as ExtensionAware).extensions.getByName("kotlin") as KotlinAndroidProjectExtension
|
||||
|
||||
internal fun Project.kotlin(configure: Action<KotlinAndroidProjectExtension>): Unit =
|
||||
(this as ExtensionAware).extensions.configure("kotlin", configure)
|
||||
|
||||
internal fun KotlinAndroidProjectExtension.sourceSets(configure: Action<NamedDomainObjectContainer<KotlinSourceSet>>): Unit =
|
||||
(this as ExtensionAware).extensions.configure("sourceSets", configure)
|
||||
|
||||
internal fun Project.library(name: String): Provider<MinimalExternalModuleDependency> {
|
||||
return libs.findLibrary(name).get()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
package com.atridad.mealient
|
||||
|
||||
import com.android.build.api.dsl.CommonExtension
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.dependencies
|
||||
|
||||
internal fun Project.configureKotlinAndroid(
|
||||
commonExtension: CommonExtension<*, *, *, *, *, *>,
|
||||
) {
|
||||
commonExtension.apply {
|
||||
compileSdk = Versions.COMPILE_SDK_VERSION
|
||||
|
||||
defaultConfig {
|
||||
minSdk = Versions.MIN_SDK_VERSION
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
}
|
||||
|
||||
lint {
|
||||
disable += listOf(
|
||||
"ObsoleteLintCustomCheck",
|
||||
"IconMissingDensityFolder",
|
||||
"MissingTranslation"
|
||||
)
|
||||
enable += listOf(
|
||||
"ConvertToWebp",
|
||||
"DuplicateStrings",
|
||||
"EasterEgg",
|
||||
"ExpensiveAssertion",
|
||||
"IconExpectedSize",
|
||||
"ImplicitSamInstance",
|
||||
"InvalidPackage",
|
||||
"KotlinPropertyAccess",
|
||||
"LambdaLast",
|
||||
"MinSdkTooLow",
|
||||
"NegativeMargin",
|
||||
"NoHardKeywords",
|
||||
"Registered",
|
||||
"RequiredSize",
|
||||
"UnknownNullness",
|
||||
"WrongThreadInterprocedural"
|
||||
)
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests {
|
||||
isIncludeAndroidResources = true
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
getByName("debug") {
|
||||
enableUnitTestCoverage = true
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
add("coreLibraryDesugaring", library("android-tools-desugar").get())
|
||||
}
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.atridad.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 = 26
|
||||
const val TARGET_SDK_VERSION = 34
|
||||
const val COMPILE_SDK_VERSION = 34
|
||||
}
|
||||
|
||||
val Project.libs: VersionCatalog
|
||||
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||
Reference in New Issue
Block a user