Skip to content

Commit ce229e2

Browse files
author
eshc123
committed
Merge branch 'feature/build-logic-library' into dev
2 parents 15bb2cc + 6f231a0 commit ce229e2

27 files changed

+180
-219
lines changed

app/build.gradle.kts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
plugins {
2-
alias(libs.plugins.com.android.application)
3-
alias(libs.plugins.org.jetbrains.kotlin.android)
4-
alias(libs.plugins.jetpack.compose.compiler)
52
alias(libs.plugins.tuk.android.application)
63
alias(libs.plugins.tuk.android.application.compose)
74
}

build-logic/convention/build.gradle.kts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
dependencies {
66
compileOnly(libs.android.gradle.plugin)
77
compileOnly(libs.kotlin.gradle.plugin)
8+
compileOnly(libs.ksp.gradle.plugin)
89
}
910

1011
gradlePlugin {
@@ -17,5 +18,17 @@ gradlePlugin {
1718
id = "tuk.android.application.compose"
1819
implementationClass = "AndroidApplicationComposeConventionPlugin"
1920
}
21+
register("AndroidLibraryConventionPlugin") {
22+
id = "tuk.android.library"
23+
implementationClass = "AndroidLibraryConventionPlugin"
24+
}
25+
register("FeatureConventionPlugin") {
26+
id = "tuk.feature"
27+
implementationClass = "FeatureConventionPlugin"
28+
}
29+
register("HiltConventionPlugin") {
30+
id = "tuk.hilt"
31+
implementationClass = "HiltConventionPlugin"
32+
}
2033
}
2134
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.gradle.kotlin.dsl.dependencies
99
class AndroidApplicationComposeConventionPlugin: Plugin<Project> {
1010
override fun apply(project: Project) {
1111
with(project) {
12-
project.pluginManager.apply("com.android.application")
12+
pluginManager.apply("com.android.application")
1313

1414
extensions.configure<ApplicationExtension> {
1515
configureAndroidCompose(this)

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,21 @@
11
import com.android.build.api.dsl.ApplicationExtension
2-
import com.plottwist.tuk.configureKotlinAndroid
3-
import com.plottwist.tuk.configurePackaging
42
import com.plottwist.tuk.configureDefaultConfig
3+
import com.plottwist.tuk.configureKotlinAndroid
54
import org.gradle.api.Plugin
65
import org.gradle.api.Project
76
import org.gradle.kotlin.dsl.configure
87

98
class AndroidApplicationConventionPlugin: Plugin<Project> {
109
override fun apply(project: Project) {
1110
with(project) {
12-
with(project.pluginManager) {
11+
with(pluginManager) {
1312
apply("com.android.application")
1413
apply("org.jetbrains.kotlin.android")
1514
}
1615

1716
extensions.configure<ApplicationExtension> {
1817
configureKotlinAndroid(this)
1918
configureDefaultConfig()
20-
configurePackaging()
21-
22-
buildFeatures {
23-
buildConfig = true
24-
}
2519

2620
buildTypes {
2721
getByName("release") {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import com.plottwist.tuk.configureKotlinAndroid
2+
import com.android.build.api.dsl.LibraryExtension
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.kotlin.dsl.configure
6+
7+
class AndroidLibraryConventionPlugin: Plugin<Project> {
8+
override fun apply(project: Project) {
9+
with(project) {
10+
with(pluginManager) {
11+
apply("com.android.library")
12+
apply("org.jetbrains.kotlin.android")
13+
}
14+
15+
extensions.configure<LibraryExtension> {
16+
configureKotlinAndroid(this)
17+
18+
buildTypes {
19+
getByName("release") {
20+
proguardFiles(
21+
getDefaultProguardFile("proguard-android-optimize.txt"),
22+
"proguard-rules.pro"
23+
)
24+
}
25+
}
26+
}
27+
}
28+
}
29+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import com.android.build.api.dsl.LibraryExtension
2+
import com.plottwist.tuk.configureAndroidCompose
3+
import com.plottwist.tuk.configureHilt
4+
import com.plottwist.tuk.configureUiNavigation
5+
import com.plottwist.tuk.configureOrbit
6+
import com.plottwist.tuk.libs
7+
import org.gradle.api.Plugin
8+
import org.gradle.api.Project
9+
import org.gradle.kotlin.dsl.configure
10+
import org.gradle.kotlin.dsl.dependencies
11+
12+
class FeatureConventionPlugin: Plugin<Project> {
13+
override fun apply(project: Project) {
14+
with(project) {
15+
with(pluginManager) {
16+
apply("tuk.android.library")
17+
}
18+
19+
extensions.configure<LibraryExtension> {
20+
configureAndroidCompose(this)
21+
configureOrbit(this)
22+
configureHilt(this)
23+
configureUiNavigation(this)
24+
}
25+
26+
dependencies {
27+
add("implementation", project(":core:domain"))
28+
add("implementation", project(":core:ui"))
29+
add("implementation", project(":core:designsystem"))
30+
31+
add("implementation", libs.findLibrary("core.ktx").get())
32+
add("implementation", libs.findLibrary("appcompat").get())
33+
add("implementation", libs.findLibrary("material").get())
34+
add("implementation", libs.findLibrary("lifecycle.runtime.ktx").get())
35+
add("implementation", libs.findLibrary("lifecycle.runtime.compose").get())
36+
}
37+
}
38+
}
39+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import com.android.build.api.dsl.LibraryExtension
2+
import com.plottwist.tuk.configureHilt
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.kotlin.dsl.configure
6+
7+
class HiltConventionPlugin: Plugin<Project> {
8+
override fun apply(project: Project) {
9+
with(project) {
10+
extensions.configure<LibraryExtension> { configureHilt(this) }
11+
}
12+
}
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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.configureHilt(
8+
commonExtension: CommonExtension<*, *, *, *, *, *>
9+
) {
10+
commonExtension.apply {
11+
with(pluginManager) {
12+
apply("dagger.hilt.android.plugin")
13+
apply("com.google.devtools.ksp")
14+
}
15+
16+
dependencies {
17+
add("implementation", libs.findLibrary("hilt.android").get())
18+
add("ksp", libs.findLibrary("hilt.compiler").get())
19+
}
20+
}
21+
}

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package com.plottwist.tuk
22

33
import com.android.build.api.dsl.CommonExtension
4-
import org.gradle.api.JavaVersion
54
import org.gradle.api.Project
65
import org.gradle.kotlin.dsl.withType
76
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_18
87
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
98

109
internal fun Project.configureKotlinAndroid(
11-
commonExtension: CommonExtension<*, *, *, * ,*, *>
10+
commonExtension: CommonExtension<*, *, *, *, *, *>
1211
) {
1312
commonExtension.apply {
1413
compileSdk = 36
@@ -19,8 +18,14 @@ internal fun Project.configureKotlinAndroid(
1918
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2019
}
2120

21+
buildFeatures {
22+
buildConfig = true
23+
}
24+
2225
configureJavaCompatibility()
2326

27+
configurePackaging()
28+
2429
configureKotlin()
2530
}
2631
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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.configureUiNavigation(
8+
commonExtension: CommonExtension<*, *, *, *, *, *>
9+
) {
10+
commonExtension.apply {
11+
dependencies {
12+
add("implementation", libs.findLibrary("navigation.runtime.ktx").get())
13+
add("implementation", libs.findLibrary("navigation.compose").get())
14+
add("implementation", libs.findLibrary("hilt.navigation.compose").get())
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)