Gradle로 여러가지 버전 생성하기
- Gradle은 하나의 프로젝트에서 여러가지 버전의 APK를 생성할 수 있도록 지원한다.
Build Variants
= BuildType
+ Product Flavor
- Gradle을 이용하면
Build Variants
별로 각각 다른 APK를 한번에 생성할 수 있다.
BuildType
- 일반적으로 애플리케이션의 개발 과정에 따라 나뉠 수 있다.(
debug
, alpha
, beta
, release
등)
- 안드로이드 프로젝트를 처음 생성하면 Gradle은 기본적으로
debug
, release
의 빌드타입을 생성한다.
- 빌드타입에 따라 키스토어 적용 여부, 디버그모드 허용 여부, 프로가드 적용 여부 등을 다르게 설정할 수 있다.
- 빌드타입 별로 소스코드, 리소스를 다르게 적용할 수 있다.(이 후의
SourceSet
부분 참조)
- 모듈별 build.gradle 스크립트에
buildTypes
속성을 추가하고 원하는 빌드타입을 추가한다.
- 다음 예시는
alpha
, beta
, release
빌드타입을 추가한 것이다.
android {
...
buildTypes {
alpha {
applicationIdSuffix '.alpha'
debuggable true
minifyEnabled false
}
beta {
applicationIdSuffix '.beta'
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
applicationIdSuffix '.release'
debuggable false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
...
}
Product Flavor
- 동일한 앱의 서로 다른 버전을 의미(ex : free버전, paid버전 등)
- 안드로이드 프로젝트를 처음 생성하면 Product Flavor는 존재하지 않는다.
- 이 속성에 따라 applicationId, 버전코드, 버전명 등, 앱의 속성을 다르게 설정할 수 있다.
- 빌드타입과 마찬가지로 소스코드, 리소스를 다르게 적용할 수 있다.
- 모듈별
build.gradle
스크립트에 productFlavors
속성을 추가하고 원하는 flavor들을 추가한다.
- 다음 예시에서는
free
, paid
를 추가한 것이다.
android {
...
productFlavors {
free {
applicationId 'com.test.app.free'
versionCode 2
versionName '1.0.1'
}
paid {
applicationId 'com.test.app.paid'
versionCode 1
versionName '1.0.0'
}
}
...
}
Source Set
- Gradle은
Build Variants
의 소스코드, 리소스를 각각 다르게 설정할 수 있다.
- 지정하고자 하는 디렉터리들을 미리 생성해두어야 한다.
- BuildType과 ProductFlavor의 조합을 각각 지정할 수도 있고, 필요한 경우만 지정할 수도 있다.
- BuildType과 ProductFlavor를 조합하여 지정할 경우
ProductFlavor
+BuildType
의 순서로 작성한다.
- ex) debug & free => freeDebug
- 다음의 예시는 위의 Build Variants를 각각 지정하여 변경한 것이다.
android {
...
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
}
free {
manifest.srcFile 'src/free/AndroidManifest.xml'
java.srcDirs = ['src/free/java']
res.srcDirs = ['src/free/res']
}
paid {
manifest.srcFile 'src/paid/AndroidManifest.xml'
java.srcDirs = ['src/paid/java']
res.srcDirs = ['src/paid/res']
}
debug {
res.srcDirs = ['src/main/resDebug']
}
alpha {
res.srcDirs = ['src/main/resAlpha']
}
beta {
res.srcDirs = ['src/main/resBeta']
}
release {
res.srcDirs = ['src/main/resReal']
}
freeDebug {
res.srcDirs = ['src/free/resDebug']
}
freeAlpha {
res.srcDirs = ['src/free/resAlpha']
}
freeBeta {
res.srcDirs = ['src/free/resBeta']
}
freeRelease {
res.srcDirs = ['src/free/resReal']
}
paidDebug {
res.srcDirs = ['src/paid/resDebug']
}
paidAlpha {
res.srcDirs = ['src/paid/resAlpha']
}
paidBeta {
res.srcDirs = ['src/paid/resBeta']
}
paidRelease {
res.srcDirs = ['src/paid/resReal']
}
}
...
}
변경 내용 확인하기
- 안드로이드 스튜디오의 Project 인스펙터를 연다. (맥 단축키
cmd + 1
)
- 왼쪽 하단의
Build Variants
를 선택하면 Project 인스펙터 하단에 Build Variants 인스펙터가 열린다.
- 모듈별로 Variants를 선택할 수 있는데, variants를 선택하면 Project 인스펙터에서 선택된 폴더를 확인할 수 있다.
댓글 없음:
댓글 쓰기