도리안의 Android 개발 #3 - 한앱의 여러 버전으로 나누기 (예: 유료 버전과 무료 버전)

avatar



대문 제작: @imrahelk

고객사의 요청 사항이 있어 다음과 같이 처리하였습니다.

요청 사항

  • 플레이스토어를 사용할 수 없는 안드로이드 사용자를 위한 별도 버전을 만들어 달라.

별도 버전 만드는 방법

안드로이드 스튜디오에서는 build.gradle 파일에 productFlavors를 추가하여 두 종류 또는 그 이상의 다양한 버전들을 만들어낼 수 있습니다.

(1) 프로젝트에서 별도 버전을 만들 모듈 선택 (예: 자신의 프로젝트에서 app 모듈)

(2) build.gradle 파일의 android 블록에 productFlavors 블록 추가하고, flavorDimensions 추가

android {
    // ...

    flavorDimensions "version"
    productFlavors {
    }
}

(3) productFlavors 블록에 버전 블록 추가하고, 이들의 dimension은 (2)에서 설정한 flavorDimensions로 설정

예: 무료 버전을 뜻하는 free, 유료 버전을 뜻하는 paid 블록 추가

android {
    // ...

    flavorDimensions "version"
    productFlavors {
        free {
            dimension "version"
        }
        paid {
            dimension "version"
        }
    }
}

(4) 버전 구별 위해 applicationIdSuffix, versionNameSuffix 옵션 추가

android {
    // ...

    productFlavors {
        free {
            dimension "version"
            applicationIdSuffix ".free"    // defaultConfig에 정의한 applicationId에 ".free" 추가됨
            versionNameSuffix "-free"    // defaultConfig에 정의한 versionName에 "-free" 추가됨
        }
        paid {
            dimension "version"
            applicationIdSuffix ".paid"
            versionNameSuffix "-paid"
        }
    }
}

(5) 필요시 버전별로 버전 코드 분리 (명시하지 않으면, defaultConfig 블록의 versionCode 적용됨)

android {
    // ...

    flavorDimensions "version"
    productFlavors {
        free {
            // ...
            versionCode 1
        }
        paid {
            // ...
            versionCode 1
        }
    }
}

(6) 필요시 버전별로 필요한 상수 추가

예: 현재 버전이 유료인지 무료인지 구별하기 위한 문자열 상수 edition 추가

android {
    // ...

    productFlavors {
        free {
            // ...
            buildConfigField 'String', 'edition', '"free"'
        }
        paid {
            // ...
            buildConfigField 'String', 'edition', '"paid"'
        }
    }
}

(7) 에디터 상단의 노란 바의 오른쪽의 Sync 클릭

버전 설정 예

위 설명들을 종합한 예는 아래와 같습니다.

android {
    // ...

    flavorDimensions "version"
    productFlavors {
        free {
            dimension "version"
            applicationIdSuffix ".free"
            versionNameSuffix "-free"
            versionCode 1
            buildConfigField 'String', 'edition', '"free"'
        }
        paid {
            dimension "version"
            applicationIdSuffix ".paid"
            versionNameSuffix "-paid"
            versionCode 1
            buildConfigField 'String', 'edition', '"paid"'
        }
    }
}

별도 버전 설정 후 Build Variants 윈도우 확인

(1) 메뉴 View - Tool Window - Build Variants 선택

(2) Build Variants 윈도우가 떴는지 확인

(3) Build Variant 항목 클릭하고 버전 선택 가능한지 확인

참고 포스트

zzanbanner.jpg
스팀짱오픈카톡방 바로가기

aaronhong_banner.jpg



0
0
0.000
0 comments