Programming/Android

[Android] gradle > buildType에서 release와 debug 버전을 분리하는 경우

코딩뽀시래기 2024. 6. 7. 19:28
728x90
android {
	
    ...
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    
    ...
}

 

보통 안드로이드 프로젝트를 생성해서 개발하면 build.gradle (:app) 파일에 위처럼 release 버전만 있게 된다. 그런데 운영앱과 개발앱이 따로 필요한 경우가 있기 때문에 debug 버전을 따로 두는 경우가 있다고 한다.


✅ release와 debug 버전 분리하는 이유

  • 운영앱과 개발앱을 분리해서 사용해야 할 경우 (테스터의 요청, 개발과정에서 필요)
  • Release에서는 최적화가 되어 있어 실행 속도가 빠르고, 메모리 사용량이 적다. 코드 난독화(Obfuscation) 및 최적화 도구(ProGuard 또는 R8)를 사용해서 코드 크기를 줄이고 성능을 향상시킨다.
  • Debug에서는 최적화는 덜 되어 있지만, 디버깅을 위한 추가 정보가 포함된다. 개발자가 문제를 쉽게 파악할 수 있도록 상세한 디버깅 정보과 로그가 포함된다.

 release와 debug 버전 분리하는 방법

android {
	
    ...
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            manifestPlaceholders = [
                    appName : "@string/app_name"
            ]
        }
        debug {
            applicationIdSuffix '.dev'
            manifestPlaceholders = [
                    appName : "@string/app_name_dev"
            ]
        }
    }
    
    ...
    
}

위처럼 release 버전 말고 debug 버전을 추가해주면 된다. 

 

manifestPlaceholders의 내용은 운영앱과 개발앱을 사용할 때 앱 아이콘이나 앱 이름을 다르게 해서 구분하기 위한 부분이다. 아직 앱 아이콘 안 만들어져서 앱 이름만 따로 두었다.

 

appIcon : "@mipmap/ic_icon_dev"

앱 아이콘도 따로 두고 싶다면 위와 같은 내용을 추가하면 된다.

 

android:label="${appName}"

그리고 AndroidManifest.xml 파일에서 label 내용을 위처럼 바꿔주면, 앱 이름이 manifestPlaceholders의 내용대로 설치된다.

 

android:icon="${appIcon}"

앱 아이콘의 경우 위와 같다.


✅ 참고

 

Build Type(debug, release)을 활용한 앱 빌드 구분하기

이번 포스팅은 Release/Debug 빌드 구분을 나누어서 관리 할 수 있도록  했습니다.

medium.com

 

 

[Android] buildTypes 를 이용한 운영/개발 빌드 분리

앱 개발을 하다보면 테스터들의 요청으로 앱을 분리 시켜야 할 때가 있습니다. 예를들면 ‘운영앱하고 개발앱하고 같이 설치할 수는 없나요?’같은 요청인데요. 개발하는 입장에서도 운영앱과

ldelight.tistory.com

 

 

debug <=> release 모드의 차이점과 배포

출처 : http://jiny2097.blog.me/30043517038 릴리즈 모드 (프로그램을 배포하기 위해 컴파일 하는 모드) - 초기화 하지 않습니다. - 같은 문자열 상수라도 서로 다른 공간에 할당됩니다. - 디버깅정보를 삽

killsia.tistory.com

 

728x90