도리안의 Android 개발 #3 - 한앱의 여러 버전으로 나누기 (예: 유료 버전과 무료 버전)
대문 제작: @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 항목 클릭하고 버전 선택 가능한지 확인
참고 포스트
스팀짱오픈카톡방 바로가기
0
0
0.000
0 comments