티스토리 뷰

안녕하세요.

 

앱 개발하시는 분들의 목적은 보통 출시하는 앱으로 인한 수익일 텐데요

 

수익을 내는 방법으로는 여러 가지가 있지만 기본적으로 

1. 광고(애드몹 등)

2. 유료 앱

3. 인앱 결제

로 간단하게 3가지를 바로 생각할 수 있습니다.

 

제목은 '안드로이드 Flavor 구성 방법, 사용 이유'인데 무슨 수익 창출에 대해 이야기를 하냐 라고 하실 수 있겠죠

 

알겠습니다.

본론으로 가겠습니다.

 

제가 위에 언급한 수익을 내는 방법으로 3가지를 소개해드렸는데요 3번 인앱 결제는 제외하고 1번과 2번을 예시로 들겠습니다.

아래와 같은 개발자 A와 B 가 있다고 봅시다.

 

개발자A : "나는 'KKK' 이라는 앱을 개발해서 광고만 삽입 후 무료 앱으로 출시할 거야"

 

개발자B : "나는 'KKK' 이라는 앱을 개발해서 무료 버전 앱과 유료 버전 앱으로 두 가지를 출시할 건데 무료 버전은 광고를 삽입하고 유료 버전은 광고 없이 앱 사용에만 몰두할 수 있도록 할 거야"

 

 

 

개발자A 같은 경우는 앱을 무료 버전 한 개만 내놓습니다. 이런 경우는 그냥 출시하시면 됩니다.

 

개발자B 같은 경우는 앱을 무료 버전, 유료 버전 두 개를 내놓습니다. 이럴 때 설정하는 게 Flavor 입니다.

 

말 그대로 'KKK' 라는 앱을 두 개로 내놓는 겁니다.

개발자B의 제작 의도로 봤을 때 다른 점은

 

무료 버전 앱 : 무료 다운로드가 가능하지만 광고가 나옴

유료 버전 앱 : 유료 다운로드이지만 광고가 없음

 

단지 차이점이라고는 위 두줄 언급한 게 끝이고 UI, 기능 다 똑같습니다.

 

여기서 Flavor 를 사용할 때 알 수 있는 가장 큰 이점은

한 마디로 하나의 소스코드로 두 개의 앱을 관리할 수 있다.

입니다.

 

 

간단히 위 무료 버전, 유료 버전 예시로 구성한 Flavor 예시입니다.

 

flavorDimensions "version"
    productFlavors {
        free {
            dimension "version"
            applicationIdSuffix ".free"
            buildConfigField 'boolean', 'ISFREE', "true"
        }
        paid {
            dimension "version"
            applicationIdSuffix ".paid"
            buildConfigField 'boolean', 'ISFREE', "false"
        }
    }

 

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

 

 

 

그리고 build.gradle (Module: app) 파일의 코드가 변경되는 즉시 오른쪽 상단에 sync now 버튼이 활성화되는데 클릭해주세요

 

 

 

그러고 나서 안드로이드 스튜디오 왼쪽 하단에 사진처럼 Build Variants 라고 옆으로 쓰인 탭이 있는데 클릭해주세요

 

 

 

 

클릭해주시면 아래처럼 나오게 되는데요.

동그라미 친 부분을 클릭하게 되면

 

 

아래처럼 4가지가 나오고 선택할 수 있게 됩니다.

freeDebug

freeRelease

paidDebug

paidRelease

 

 

"그런데 저는 free 버전과  paid 버전 이렇게 2개만 추가했는데 왜 4개가 뜨는 거죠?

그리고 Debug 와 Release 는 무엇인가요?"

 

라고 궁금해하실 수도 있는데요

 

안드로이드 스튜디오에서는 만들어지는 앱에 대해서는 (위에서는 free 버전과 paid 버전 총 2개)   

각각 기본적으로 빌드 타입이 Debug 타입, Release 타입 이렇게 자동으로 세팅되어있습니다.

그래서

Debug 타입에 free 버전과 paid 버전,

Release 타입에 free 버전과 paid 버전

이렇게 4개가 되는 겁니다.

 

안드로이드 스튜디오에서 프로젝트를 생성하면 자동으로 Debug 타입, Release 타입 이 생성되는 겁니다.

 

Debug 타입은 우리가 보통 에뮬레이터나 실제 디바이스로 앱을 테스트할 때 사용됩니다.

Release 타입은 테스트를 마치고 플레이스토어에 출시할 때 제출용으로 씁니다. 

 

근데 왜 이렇게 나누는 거냐!

 

저도 초보라 막 심도 있는 부분까지는 잘 모릅니다.

 

제가 사용하는 방법으로는 광고가 있는 앱일 때

Debug 타입 : 테스트 광고가 나오게

Release 타입 : 실제 광고가 나오게

 

이렇게 타입별로 분기시켜줬습니다.

 

일단 빌드 타입은 이 정도로 두고 다음 포스팅에서 제가 사용하는 방법으로 알려드리겠습니다.

 

 

 

다시 넘어와서

여기까지 하면 무료 버전, 유료 버전 나누는 것 까지는 완료했습니다.

이제 build variants 에서

freeDebug 로 빌드하고

paidDebug 로도 빌드해보세요

 

그러면 이름은 같지만 두 개의 앱이 생성되어있을 겁니다.

 

원하는 대로 무료 버전 앱, 유료 버전 앱 이렇게 2개가 생겨났는데

그 원리는 제가 위에 Flavor 나누는 예시용 코드를 올려놓은 것을 잘 보시면

 

applicationIdSuffix 을 보시면

 

free 괄호 안에는 applicationIdSuffix ".free"

paid 괄호 안에는 applicationIdSuffix ".paid"

 

이렇게 있습니다.

 

작업하고 계시는 프로젝트가 예를 들어 패키 지명이 "com.abcd.kkk" 이라고 한다면

build variants 에서

freeDebug 선택 후 빌드를 해서 생겨난 앱의 패키지명은 "com.abcd.kkk.free" 이고

paidDebug 선택 후 빌드를 해서 생겨난 앱의 패키지명은 "com.abcd.kkk.paid" 입니다.

 

이렇게 기존 패키 지명에 끝에 + 해서 붙는 겁니다.

그러므로 하나의 소스코드로 관리하면서 서로 다른 앱으로 만들 수 있는 겁니다.

 

앱의 이름은 중복되어도 상관없지만 앱의 패키 지명은 고유합니다.

패키지명이 다른 앱은 그냥 다른 앱이라는 거죠

 

이제 다음

코드에서 applicationIdSuffix ".free" 다음에 있는

 

buildConfigField 'boolean', 'ISFREE', "true" 

이 부분은 코드를 분기할 때 사용합니다.

 

의미는 

boolean 타입인 ISFREE 변수를 만들고 true 를 넣는다는 것입니다.

사용법은 아래와 같이 합니다.

if (BuildConfig.ISFREE) {
//광고 호출 코드
}

 

"저는 BuildConfig 라는게 빨간 줄 뜨고 안돼요" 

하시는 분들은 앱 빌드를 한 번 해주시고 하셔야 됩니다.

(저도 이거 때문에 2시간 정도 헤맨듯합니다...)

 

여기서 제 부족하기만 한 설명을 마치도록 하겠습니다.

혹시나 이해가 안 가는 부분이 있으시다면 댓글로 남겨주세요

확인하면 아는 한도 내에 답장드리겠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
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 31
글 보관함