Skip to content

Commit 95ce1d1

Browse files
author
eshc123
committed
FEAT: Application Compose Plugin 추가
1 parent 24a4e71 commit 95ce1d1

File tree

7 files changed

+66
-25
lines changed

7 files changed

+66
-25
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,13 @@ plugins {
33
alias(libs.plugins.org.jetbrains.kotlin.android)
44
alias(libs.plugins.jetpack.compose.compiler)
55
alias(libs.plugins.tuk.android.application)
6+
alias(libs.plugins.tuk.android.application.compose)
67
}
78

89
android {
910
namespace = "com.plottwist.tuk"
1011
}
1112

1213
dependencies {
13-
implementation(libs.core.ktx)
14-
implementation(libs.lifecycle.runtime.ktx)
15-
implementation(libs.activity.compose)
16-
implementation(platform(libs.compose.bom))
17-
implementation(libs.ui)
18-
implementation(libs.ui.graphics)
19-
implementation(libs.ui.tooling.preview)
20-
implementation(libs.material3)
2114
testImplementation(libs.junit)
22-
androidTestImplementation(libs.junit)
23-
androidTestImplementation(libs.espresso.core)
24-
androidTestImplementation(platform(libs.compose.bom))
25-
androidTestImplementation(libs.ui.test.junit4)
26-
debugImplementation(libs.ui.tooling)
27-
debugImplementation(libs.ui.test.manifest)
2815
}

build-logic/convention/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,9 @@ gradlePlugin {
1313
id = "tuk.android.application"
1414
implementationClass = "AndroidApplicationConventionPlugin"
1515
}
16+
register("androidApplicationComposeConventionPlugin") {
17+
id = "tuk.android.application.compose"
18+
implementationClass = "AndroidApplicationComposeConventionPlugin"
19+
}
1620
}
1721
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import com.android.build.api.dsl.ApplicationExtension
2+
import com.plottwist.tuk.configureAndroidCompose
3+
import com.plottwist.tuk.libs
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.gradle.kotlin.dsl.configure
7+
import org.gradle.kotlin.dsl.dependencies
8+
9+
class AndroidApplicationComposeConventionPlugin: Plugin<Project> {
10+
override fun apply(project: Project) {
11+
with(project) {
12+
project.pluginManager.apply("com.android.application")
13+
14+
extensions.configure<ApplicationExtension> {
15+
configureAndroidCompose(this)
16+
17+
dependencies {
18+
add("implementation", libs.findLibrary("activity.compose").get())
19+
}
20+
}
21+
}
22+
}
23+
}

build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ class AndroidApplicationConventionPlugin: Plugin<Project> {
2121

2222
buildFeatures {
2323
buildConfig = true
24-
compose = true
2524
}
2625

2726
buildTypes {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.plottwist.tuk
2+
3+
import com.android.build.api.dsl.CommonExtension
4+
import org.gradle.api.Project
5+
import org.gradle.kotlin.dsl.dependencies
6+
7+
internal fun Project.configureAndroidCompose (
8+
commonExtension: CommonExtension<*, *, *, *, *, *>,
9+
) {
10+
with(plugins) {
11+
apply("org.jetbrains.kotlin.plugin.compose")
12+
}
13+
14+
commonExtension.apply {
15+
buildFeatures {
16+
compose = true
17+
}
18+
}
19+
20+
dependencies {
21+
val composeBom = libs.findLibrary("compose.bom").get()
22+
add("implementation", platform(composeBom))
23+
add("implementation", libs.findLibrary("ui").get())
24+
add("implementation", libs.findLibrary("ui.tooling.preview").get())
25+
add("implementation", libs.findLibrary("material3").get())
26+
add("implementation", libs.findLibrary("ui.graphics").get())
27+
add("debugImplementation", libs.findLibrary("ui.tooling").get())
28+
add("debugImplementation", libs.findLibrary("ui.test.manifest").get())
29+
add("androidTestImplementation", platform(composeBom))
30+
add("androidTestImplementation", libs.findLibrary("ui.test.junit4").get())
31+
}
32+
}

build-logic/convention/src/main/kotlin/com/plottwist/tuk/Extension.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package com.plottwist.tuk
33
import com.android.build.api.dsl.ApplicationExtension
44
import com.android.build.api.dsl.CommonExtension
55
import org.gradle.api.JavaVersion
6+
import org.gradle.api.Project
7+
import org.gradle.api.artifacts.VersionCatalogsExtension
8+
import org.gradle.kotlin.dsl.getByType
69

710
fun ApplicationExtension.configureDefaultConfig() {
811
defaultConfig {
@@ -32,13 +35,5 @@ fun CommonExtension<*, *, *, *, *, *>.configureJavaCompatibility() {
3235
}
3336
}
3437

35-
fun CommonExtension<*, *, *, *, *, *>.configureBuildTypes() {
36-
buildTypes {
37-
getByName("release") {
38-
proguardFiles(
39-
getDefaultProguardFile("proguard-android-optimize.txt"),
40-
"proguard-rules.pro"
41-
)
42-
}
43-
}
44-
}
38+
val Project.libs
39+
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,4 @@ android-juni5 = { id = "de.mannodermaus.android-junit5", version.ref = "android-
112112
jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrainsKotlinJvm" }
113113

114114
tuk-android-application = { id = "tuk.android.application", version = "unspecified" }
115+
tuk-android-application-compose = { id = "tuk.android.application.compose", version = "unspecified" }

0 commit comments

Comments
 (0)