티스토리 뷰

안녕하세요

 

지난번 포스팅 안드로이드 Flavor 구성 방법, 사용 이유 에서 

간략하게 설명드렸던 부분입니다.

그래도 처음 오시는분들을 위해 다시 설명드리자면

 

프로젝트를 생성 하면 기본적으로 빌드 타입은

1. debug

2. release

이렇게 2개가 있습니다.

 

있는 그대로를 느낌적으로 보면....

1. debug : 버그찾기, 개발, 테스트 등

2. release : 풀어주는, 해제하다, 내놓다 등

이렇게 떠오릅니다.(그냥 개발하면서 저 단어들에 대한 느낌 입니다.)

 

안드로이드 스튜디오 안에서 buildType 을 설정하는 방법은 아래 사진처럼 좌측에 Build Variants 에서 합니다.

 

 

 

네 이렇게 우리들이 앱을 테스트해보고 버그 찾고 수정하고 하는 작업을 debug 타입에서 합니다.

그걸 우리가 어떻게 아냐구요?

왜냐하면 release 타입은 실행해보려하면 Keystore 비밀번호, alias 뭐 이런것들을 요구합니다.

(나중에 앱을 실제로 출시할때는 다들 만드셔야 합니다. 출시하는 앱은 release 타입으로 제출 하니까요)

 

여기서

"왜 buildType 을 알아야하죠?"

라고 하시면.. 음

 

궁극적으로 이야기드리면 

편리합니다.

(저는 다른 실력있는 개발자분들처럼 이 buildType 에 관해서 깊숙하게 이해하고있다고 생각하지 않습니다.

단순히 제가 사용한방법 토대로 알려드립니다.)

 

앱을 개발하시는분들

무료앱을 출시한다고 하면 보통 광고를 넣고 수익을 얻습니다.

(인앱구매도 있지만 여기서는 광고를 넣는다는 것만 다루겠습니다.)

 

대표적인 광고회사는 구글의 애드몹이 있습니다.

카카오의 애드핏도 있고,

페이스북의 audience network 도 있고 찾아보면 정말 많습니다.

그렇지만 보통 애드몹을 많이들 쓰십니다.

 

광고 회사들 정책상 개발중에는 반드시 테스트광고를 사용하라고 합니다.

구글애드몹 무효트래픽 안내

왜 개발중에는 테스트광고만을 사용하는게 좋은지 구글애드몹 링크를 해뒀습니다.

 

제가 편리하다고 말씀드린 부분은

개발중에는 테스트광고 호출 코드

앱 제출시에는 실제광고 호출 코드

이렇게 적용해줬는데요

 

그러면 앱 제출 시에도 안심할 수가 있었습니다.

개발중에는 테스트광고가 나오고

실제 플레이스토어에 올라갈 앱은 실제광고가 나올테니까요

(나중에는 신경쓸게 여러개가 있을텐데 한 가지라도 덜어내면 조금이라도 편하죠 ㅎㅎ)

 

예시 코드 올려드리겠습니다.


buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
            proguardFile 'proguard-rules.pro'

            applicationIdSuffix '.prod'
            resValue("string","BUILD_TYPE","release 타입 입니다.")
            buildConfigField "boolean","IS_DEBUG","false"
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            applicationIdSuffix '.dev'
            resValue("string","BUILD_TYPE","debug 타입 입니다.")
            buildConfigField "boolean","IS_DEBUG","true"
        }
    }

 

 

 

이 코드를 아래 사진에 코끼리 그림 있는 Gradle Scripts  -> build.gradle (Module: app) 안에 'android {   }' 여기 중괄호 안에 buildTypes {} 코드가 있는데 없애고 넣으셔도됩니다.

 

코드를 넣으면 왼쪽 상단에 Sync Now 버튼을 클릭해주세요

 

여기까지 하셨다면 앱 실행(Run)을 한번 해주세요

그래야 빌드 타입별로 사용 할 변수들이 정상적으로 등록됩니다.

 

눈 여겨보실 코드는 

applicationIdSuffix,

resValue

buildConfigField

이 세가지입니다.

 

release 와 debug 에 공통적으로 있는데요

빌드 타입별로 각각 다르게 쓰일 녀석들 입니다.

 

먼저 

applicationIdSuffix 는 앱의 패키지명 끝에 추가로 붙여주는 친구입니다.

Suffix 는 단어 뜻이 접미사로 말 그대로 앱ID 끝에 붙는거라고 생각하시면 됩니다.

예를들어 앱 패키지명이 "com.abcd.kkk" 이면 => "com.abcd.kkk.prod" 이런식으로 된다고 보시면 됩니다.

 

여기서잠깐!

Flavor 를 설정할때도 보면 applicationIdSuffix 옵션이 있습니다.

Flavor 안에서도 applicationIdSuffix 를 사용했다고 하면

예를들어 FlavorapplicationIdSuffix 는 free 라고 합니다.

그러면 앱 패키지명은 "com.abcd.kkk.free.prod" 가 됩니다.

앱 패키지명 + Flavor  applicationIdSuffix + 빌드 타입의 applicationIdSuffix 이 순서대로 됩니다.

 

applicationIdSuffix 를 사용하는 이유로는 다양할 수 있겠지만

저는 파이어베이스를 사용하면서 개발 버전용(debug) 스토리지, 실제 버전용(release) 스토리지 이렇게 나눠서 썼습니다.

 

그 다음으로

resValue 는 xml 파일에서 구분 가능하게 하는 코드입니다.


android:text="@string/BUILD_TYPE"

이렇게 사용합니다.

올려둔 코드대로면

debug 타입 : "debug 타입 입니다." 

release 타입 : "release 타입 입니다." 

이렇게 출력됩니다.

 

마지막으로 buildConfigField 입니다.

저는 테스트 광고, 실제 광고 분기를 buildConfigField 로 했습니다.


if (BuildConfig.IS_DEBUG) {
            // 테스트 광고 코드 넣기
        }else {
            // 실제 광고 코드 넣기
        }

 

사용 방법 예시입니다.

 

이상 포스팅 마치겠습니다.

추워진 날씨 감기 조심하세요~

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함