Skip to content

Commit 7b2ad15

Browse files
committed
[chore] build-logic 정의 및 feature, core 모듈 생성
1 parent 21a41f9 commit 7b2ad15

File tree

35 files changed

+414
-62
lines changed

35 files changed

+414
-62
lines changed

app/build.gradle.kts

Lines changed: 3 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,11 @@
11
plugins {
2-
alias(libs.plugins.android.application)
3-
alias(libs.plugins.kotlin.android)
4-
alias(libs.plugins.kotlin.compose)
2+
alias(libs.plugins.neki.android.application)
53
}
64

75
android {
8-
namespace = "com.neki.android"
9-
compileSdk = 36
10-
11-
defaultConfig {
12-
applicationId = "com.neki.android"
13-
minSdk = 31
14-
targetSdk = 36
15-
versionCode = 1
16-
versionName = "1.0"
17-
18-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
19-
}
20-
21-
buildTypes {
22-
release {
23-
isMinifyEnabled = false
24-
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
25-
}
26-
}
27-
compileOptions {
28-
sourceCompatibility = JavaVersion.VERSION_11
29-
targetCompatibility = JavaVersion.VERSION_11
30-
}
31-
kotlinOptions {
32-
jvmTarget = "11"
33-
}
34-
buildFeatures {
35-
compose = true
36-
}
6+
namespace = "com.neki.android.app"
377
}
388

399
dependencies {
40-
41-
implementation(libs.androidx.core.ktx)
42-
implementation(libs.androidx.lifecycle.runtime.ktx)
43-
implementation(libs.androidx.activity.compose)
44-
implementation(platform(libs.androidx.compose.bom))
45-
implementation(libs.androidx.compose.ui)
46-
implementation(libs.androidx.compose.ui.graphics)
47-
implementation(libs.androidx.compose.ui.tooling.preview)
48-
implementation(libs.androidx.compose.material3)
49-
testImplementation(libs.junit)
50-
androidTestImplementation(libs.androidx.junit)
51-
androidTestImplementation(libs.androidx.espresso.core)
52-
androidTestImplementation(platform(libs.androidx.compose.bom))
53-
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
54-
debugImplementation(libs.androidx.compose.ui.tooling)
55-
debugImplementation(libs.androidx.compose.ui.test.manifest)
10+
implementation(projects.feature.sample)
5611
}

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43

54
<application
5+
android:name="com.neki.android.NekiApplication"
66
android:allowBackup="true"
77
android:dataExtractionRules="@xml/data_extraction_rules"
88
android:fullBackupContent="@xml/backup_rules"
@@ -11,17 +11,17 @@
1111
android:roundIcon="@mipmap/ic_launcher_round"
1212
android:supportsRtl="true"
1313
android:theme="@style/Theme.Neki">
14+
1415
<activity
15-
android:name=".MainActivity"
16-
android:exported="true"
17-
android:label="@string/app_name"
18-
android:theme="@style/Theme.Neki">
16+
android:name="com.neki.android.MainActivity"
17+
android:exported="true">
1918
<intent-filter>
2019
<action android:name="android.intent.action.MAIN" />
21-
2220
<category android:name="android.intent.category.LAUNCHER" />
2321
</intent-filter>
2422
</activity>
23+
24+
2525
</application>
2626

2727
</manifest>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.neki.android
2+
3+
import android.app.Application
4+
5+
class NekiApplication: Application() {
6+
override fun onCreate() {
7+
super.onCreate()
8+
9+
}
10+
}

build-logic/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

build-logic/build.gradle.kts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
plugins {
2+
`kotlin-dsl`
3+
`kotlin-dsl-precompiled-script-plugins`
4+
}
5+
6+
dependencies {
7+
compileOnly(libs.android.gradle.plugin)
8+
compileOnly(libs.kotlin.gradle.plugin)
9+
compileOnly(libs.ksp.gradle.plugin)
10+
}
11+
12+
gradlePlugin {
13+
plugins {
14+
register("androidApplication") {
15+
id = "neki.android.application"
16+
implementationClass = "AndroidApplicationConventionPlugin"
17+
}
18+
register("androidApplicationCompose") {
19+
id = "neki.android.application.compose"
20+
implementationClass = "AndroidApplicationComposeConventionPlugin"
21+
}
22+
register("androidLibrary") {
23+
id = "neki.android.library"
24+
implementationClass = "AndroidLibraryConventionPlugin"
25+
}
26+
register("androidLibraryCompose") {
27+
id = "neki.android.library.compose"
28+
implementationClass = "AndroidLibraryComposeConventionPlugin"
29+
}
30+
register("jvmLibrary") {
31+
id = "neki.jvm.library"
32+
implementationClass = "JvmLibraryConventionPlugin"
33+
}
34+
register("androidFeatureCompose") {
35+
id = "neki.android.feature"
36+
implementationClass = "AndroidFeatureConventionPlugin"
37+
}
38+
}
39+
}

build-logic/settings.gradle.kts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
dependencyResolutionManagement {
2+
repositories {
3+
google()
4+
mavenCentral()
5+
}
6+
7+
versionCatalogs {
8+
create("libs") {
9+
from(files("../gradle/libs.versions.toml"))
10+
}
11+
}
12+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.neki.android.buildlogic.const
2+
3+
import org.gradle.api.JavaVersion
4+
5+
object BuildConst {
6+
const val APPLICATION_ID = "com.neki.android"
7+
8+
const val VERSION_CODE = 1
9+
const val VERSION_NAME = "0.0.1"
10+
11+
const val MIN_SDK = 29
12+
const val TARGET_SDK = 35
13+
const val COMPILE_SDK = 35
14+
15+
const val JDK_VERSION = 17
16+
val JAVA_VERSION = JavaVersion.VERSION_17
17+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.neki.android.buildlogic.extensions
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.configureCompose(
8+
commonExtension: CommonExtension<*, *, *, *, *, *>
9+
) {
10+
commonExtension.apply {
11+
buildFeatures {
12+
compose = true
13+
}
14+
15+
dependencies {
16+
"implementation"(platform(libs.findLibrary("androidx-compose-bom").get()))
17+
"implementation"(libs.findLibrary("androidx-compose-ui-tooling-preview").get())
18+
"implementation"(libs.findLibrary("androidx-compose-material3").get())
19+
"implementation"(libs.findLibrary("androidx-compose-ui").get())
20+
21+
"debugImplementation"(libs.findLibrary("androidx-compose-ui-tooling-preview").get())
22+
"debugImplementation"(libs.findLibrary("androidx-compose-ui-tooling").get())
23+
}
24+
}
25+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.neki.android.buildlogic.extensions
2+
3+
import com.neki.android.buildlogic.const.BuildConst
4+
import com.android.build.api.dsl.CommonExtension
5+
import org.gradle.api.Project
6+
import org.gradle.api.plugins.ExtensionAware
7+
import org.gradle.kotlin.dsl.dependencies
8+
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
9+
10+
internal fun Project.configureKotlin(
11+
commonExtension: CommonExtension<*, *, *, *, *, *>
12+
) {
13+
commonExtension.apply {
14+
compileSdk = BuildConst.COMPILE_SDK
15+
16+
compileOptions {
17+
sourceCompatibility = BuildConst.JAVA_VERSION
18+
targetCompatibility = BuildConst.JAVA_VERSION
19+
}
20+
21+
configureKotlinOptions {
22+
jvmTarget = BuildConst.JDK_VERSION.toString()
23+
}
24+
25+
buildTypes {
26+
getByName("release") {
27+
isMinifyEnabled = true
28+
proguardFiles(
29+
getDefaultProguardFile("proguard-android.txt"),
30+
"proguard-rules.pro",
31+
)
32+
}
33+
}
34+
35+
dependencies {
36+
"implementation"(libs.findLibrary("kotlinx-serialization-json").get())
37+
}
38+
}
39+
}
40+
41+
internal fun CommonExtension<*, *, *, *, *, *>.configureKotlinOptions(
42+
block: KotlinJvmOptions.() -> Unit,
43+
) {
44+
(this as ExtensionAware).extensions.configure("kotlinOptions", block)
45+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.neki.android.buildlogic.extensions
2+
3+
import org.gradle.api.Project
4+
import org.gradle.api.artifacts.VersionCatalog
5+
import org.gradle.api.artifacts.VersionCatalogsExtension
6+
import org.gradle.kotlin.dsl.getByType
7+
8+
internal val Project.libs: VersionCatalog
9+
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")

0 commit comments

Comments
 (0)