[Hi-v2] - 2_기초 세팅하기

박성현·2023년 5월 10일
0

MSG_Hi-v2

목록 보기
2/5

소개

MSG라는 교내 동아리에서 Hi-v2(홈베이스 관리 시스템)을 만드면서 일어났던 일을 정리한 내용입니다.


작업내용

  • Kotlin-DSL + buildSrc 적용하기
  • 멀티모듈을 사용해서 패키징하기

주요 코드

  • Dependency.kt
class Dependency {
    object AndroidX {
        const val CORE_KTX = "androidx.core:core-ktx:${Versions.CORE_KTX}"
        const val LIFECYCLE = "androidx.lifecycle:lifecycle-runtime-ktx:${Versions.LIFECYCLE}"
        const val APPCOMPAT = "androidx.appcompat:appcompat:${Versions.APPCOMPAT}"
    }

    object Compose {
        const val ACTIVITY_COMPOSE = "androidx.activity:activity-compose:${Versions.ACTIVITY_COMPOSE}"
        const val COMPOSE = "androidx.compose.ui:ui:${Versions.COMPOSE}"
        const val COMPOSE_PREVIEW = "androidx.compose.ui:ui-tooling-preview:${Versions.COMPOSE}"
        const val COMPOSE_MATERIAL = "androidx.compose.material:material:${Versions.COMPOSE}"
        const val COMPOSE_MATERIAL3 = "androidx.compose.material3:material3:${Versions.MATERIAL3_COMPOSE}"
        const val COMPOSE_TOOLING = "androidx.compose.ui:ui-tooling:${Versions.COMPOSE}"
    }

    object Test {
        const val JUNIT = "junit:junit:${Versions.JUNIT}"
        const val ANDROID_JUNIT = "androidx.test.ext:junit:${Versions.ANDROID_JUNIT}"
        const val ESPRESSO = "androidx.test.espresso:espresso-core:${Versions.ESPRESSO}"
        const val COMPOSE_JUNIT = "androidx.compose.ui:ui-test-junit4:${Versions.COMPOSE}"
        const val COMPOSE_MANIFEST = "androidx.compose.ui:ui-test-manifest:${Versions.COMPOSE}"
    }

    object Google {
        const val MATERIAL = "com.google.android.material:material:${Versions.GOOGLE_MATERIAL}"
    }
}
  • ProjectProperties.kt
object ProjectProperties {
    object Gradle {
        const val APPLICATION = "com.android.application"
        const val LIBRARY = "com.android.library"
        const val KOTLIN = "org.jetbrains.kotlin.android"
        const val KTLINT = "org.jlleitschuh.gradle.ktlint"
    }
    object Test {
        const val TEST_RUNNER = "androidx.test.runner.AndroidJUnitRunner"
    }

    object Id {
        const val APPLICATION_ID = "team.msg.hi_v2"
    }

    object Files {
        const val CONSUMER_PROGUARDFILES = "consumer-rules.pro"
        const val DEFAULT_PROGUARDFILES = "proguard-android-optimize.txt"
        const val PROGUARDFILES = "proguard-rules.pro"
    }

    object Versions {
        const val COMPILE_SDK = 33
        const val MIN_SDK = 24
        const val TARGET_SDK = 33
        const val JVM_TARGET = "1.8"
        const val VERSION_CODE = 1
        const val VERSION_NAME = "1.0"
        val JAVA_VERSION = JavaVersion.VERSION_1_8
    }

    object NameSpace {
        const val PRESENTATION = "team.msg.presentation"
        const val DOMAIN = "team.msg.domain"
        const val DATA = "team.msg.data"
        const val APP = "team.msg.hi_v2"
    }

    object Action {
        const val EXCLUDES = "/META-INF/{AL2.0,LGPL2.1}"
    }
}
  • Versions.kt
object Versions {
    const val GRADLE = "7.4.2"
    const val KOTLIN = "1.8.10"
    const val KTLINT = "11.3.2"

    const val COMPOSE = "1.4.3"
    const val ACTIVITY_COMPOSE = "1.5.1"
    const val MATERIAL3_COMPOSE = "1.0.1"

    const val CORE_KTX = "1.8.0"
    const val LIFECYCLE = "2.3.1"
    const val APPCOMPAT = "1.4.1"

    const val JUNIT = "4.13.2"
    const val ANDROID_JUNIT = "1.1.5"
    const val ESPRESSO = "3.5.1"

    const val GOOGLE_MATERIAL = "1.5.0"
}

적용 중 일어났던 에러

  • File must end with a newline 에러
    • 파일이 끝날 때 한 줄을 공백으로 추가하였다.
plugins {
    id(ProjectProperties.Gradle.LIBRARY)
    id(ProjectProperties.Gradle.KOTLIN)
}

android {
    namespace = ProjectProperties.NameSpace.DOMAIN
    compileSdk = ProjectProperties.Versions.COMPILE_SDK

    defaultConfig {
        minSdk = ProjectProperties.Versions.MIN_SDK
        testInstrumentationRunner = ProjectProperties.Test.TEST_RUNNER
        consumerProguardFiles(ProjectProperties.Files.CONSUMER_PROGUARDFILES)
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile(ProjectProperties.Files.DEFAULT_PROGUARDFILES),
                ProjectProperties.Files.PROGUARDFILES
            )
        }
    }
    compileOptions {
        sourceCompatibility = ProjectProperties.Versions.JAVA_VERSION
        targetCompatibility = ProjectProperties.Versions.JAVA_VERSION
    }
    kotlinOptions {
        jvmTarget = ProjectProperties.Versions.JVM_TARGET
    }
}
// 공백인 줄 한줄 추가

MSG 깃허브

Hi-v2 Android 깃허브

작업한 PR

profile
성장하고 싶은 안드로이드 개발자입니다.

0개의 댓글

관련 채용 정보