투케이2K

840. (Android/Build) 안드로이드 build.gradle 파일 buildTypes 앱 빌드 환경 debug , staging , release 모드 구분 방법 본문

Android

840. (Android/Build) 안드로이드 build.gradle 파일 buildTypes 앱 빌드 환경 debug , staging , release 모드 구분 방법

투케이2K 2024. 8. 16. 20:34

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[방법 설명]

 

# ------------------------------------------------------------------------------------------------
# [요약 설명]
# ------------------------------------------------------------------------------------------------

1. 안드로이드 build.gradle 파일 >> buildTypes 에는 기본 debug , release 모드 구분되어 있습니다.

2. 커스텀 staging 환경을 추가 하기 위해서는 build.gradle 파일 >> buildTypes 에서 staging 빌드 타입을 정의할 수 있습니다.

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [build.gradle : 소스 코드]
# ------------------------------------------------------------------------------------------------


// -----------------------------------------------------------------------------------------

// TODO [플러그인 적용 실시]
plugins {
    // [안드로이드 플러그인]
    id 'com.android.application'

    // [코틀린 플러그인]
    id 'kotlin-android'

    // [파이어베이스 및 구글 서비스]
    //id 'com.google.gms.google-services'
}

// -----------------------------------------------------------------------------------------

// TODO [애플리케이션 빌드 설정 지정 실시]
android {

    // TODO [컴파일 버전]
    compileSdk 33

    // [Config 셋팅]
    defaultConfig {
        // ----------------------------
        applicationId "com.example.javaproject" // 앱 아이디
        // ----------------------------
        versionCode 1 // 빌드 버전
        // ----------------------------
        versionName "1.0.1" // 빌드 네임
        // ----------------------------
        minSdk 21 // 최소 빌드 버전
        // ----------------------------
        targetSdk 33 // TODO 타겟 빌드 버전
        // ----------------------------
        buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" // TODO [빌드 시간 저장 위해 추가]
        // ----------------------------
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // ----------------------------

    }

    // [빌드 설정]
    buildTypes {
        debug { // [디버그]
            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // [프로가드 설정 파일 지정]
            manifestPlaceholders = [appLabel: "Twok App [Dev]"] // [AndroidManifest 앱 명칭 지정]

            applicationIdSuffix ".debug" // [applicationId 에 .debug 추가] : [앱 구분 설치]
            versionNameSuffix "-DEBUG" // [versionName 에 -DEBUG 표시 추가]

            buildConfigField("String", "STRING_BUILD_KEY", "\"DEBUG\"") // TODO [빌드 명칭]
        }

        staging { // [스테이징]
            initWith(buildTypes.debug)

            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // [프로가드 설정 파일 지정]
            manifestPlaceholders = [appLabel: "Twok App [Staging]"] // [AndroidManifest 앱 명칭 지정]

            applicationIdSuffix ".staging" // [applicationId 에 .staging 추가] : [앱 구분 설치]
            versionNameSuffix "-STAGING" // [versionName 에 -STAGING 표시 추가]

            buildConfigField("String", "STRING_BUILD_KEY", "\"STAGING\"") // TODO [빌드 명칭]
        }

        release { // [배포]
            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // [프로가드 설정 파일 지정]
            manifestPlaceholders = [appLabel: "Twok App [Release]"] // [AndroidManifest 앱 명칭 지정]

            buildConfigField("String", "STRING_BUILD_KEY", "\"RELEASE\"") // TODO [빌드 명칭]
        }
    }


    // [컴파일 자바 버전 지정]
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // [아파치 http 사용 설정]
    useLibrary ('org.apache.http.legacy')
    
}

// -----------------------------------------------------------------------------------------

// TODO [라이브러리 의존성 부여 실시]
dependencies {

}

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [실행 방법]
# ------------------------------------------------------------------------------------------------

1. 안드로이드 스튜디오 실행

2. 상단 [Build] 메뉴 클릭

3. [Select Build Variant] 메뉴 클릭

4. 좌측 표시된 Build Variants 메뉴에서 [app] 모듈에서 debug , staging 선택 수행

5. 휴대폰을 USB 디버깅 연결 후 앱 빌드 수행 실시

6. AndroidManifest.xml 파일에서 build.gradle 에 정의 된 동적 앱 명칭 지정 시 각 debug, staging 에서 앱 이름이 구분되어 설치 된 것 확인

  >> 빌드 환경 구분 (applicationId) dev , staging 각각 다르게 지정 했기에 다중 앱 설치 가능

7. 참고 : AndroidManifest.xml 파일 package 명칭과 project 패키지 명칭 값은 동일 필요 (소스 코드에서 package 찾기 에러가 발생하지 않음)

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.javaproject">
  </manifest>

# ------------------------------------------------------------------------------------------------

 

반응형
Comments