반응형
개요
하나의 프로젝트로 비슷한 서비스를 만들시 기존앱을 복사해서 패키지명을 변경하는 작업은 번거롭기 때문에
BuildFlavor로 구분해 gradle설정만으로 앱을 만들려할때 용이하다.
Gradle 작성
flavorDimensions "office"
productFlavors {
sdm { // flavor 1
dimension "office"
buildConfigField 'int', 'PASEQ', 'qasdgag a'
buildConfigField 'String', 'PAID', '"12rweㅁㄷㄴㅇㅎㅁㄴㅇㄹㅁㄴㅇㄹ"'
}
sb { // flavor 2
dimension "office"
applicationId "com.audien.b2btablet_110"
versionCode 22101701
versionName "1.0.0"
buildConfigField 'int', 'PASEQ', 'asdadad'
buildConfigField 'String', 'PAID', '"123112124124214"'
}
}
BuildConfig.PAID
-> 빌드 구분에 따라 buildConfigField를 통해 실제 소스에서 BuildConfig.PAID 이런식으로 변수로 활용가능
서비스로직 , manifest 등.. 에서 변수가될 값을 코드상에서 제어 가능하다.
android {
...
buildTypes {
debug {...}
release {...}
}
// Specifies the flavor dimensions you want to use. The order in which you
// list each dimension determines its priority, from highest to lowest,
// when Gradle merges variant sources and configurations. You must assign
// each product flavor you configure to one of the flavor dimensions.
flavorDimensions "api", "mode"
productFlavors {
demo {
// Assigns this product flavor to the "mode" flavor dimension.
dimension "mode"
...
}
full {
dimension "mode"
...
}
// Configurations in the "api" product flavors override those in "mode"
// flavors and the defaultConfig block. Gradle determines the priority
// between flavor dimensions based on the order in which they appear next
// to the flavorDimensions property above--the first dimension has a higher
// priority than the second, and so on.
minApi24 {
dimension "api"
minSdkVersion 24
// To ensure the target device receives the version of the app with
// the highest compatible API level, assign version codes in increasing
// value with API level. To learn more about assigning version codes to
// support app updates and uploading to Google Play, read Multiple APK Support
versionCode 30000 + android.defaultConfig.versionCode
versionNameSuffix "-minApi24"
...
}
minApi23 {
dimension "api"
minSdkVersion 23
versionCode 20000 + android.defaultConfig.versionCode
versionNameSuffix "-minApi23"
...
}
minApi21 {
dimension "api"
minSdkVersion 21
versionCode 10000 + android.defaultConfig.versionCode
versionNameSuffix "-minApi21"
...
}
}
}
...
flavorDimensions 속성을 사용하여 'full' 및 'demo' 제품 버전을 그룹화하는 'mode' 버전 차원과 API 수준을 기반으로 제품 버전 구성을 그룹화하는 'api' 버전 차원을 생성합니다.
-> 빌드 flavor로 커스텀 이름에 따른 빌드구분 , API 버전에따른 빌드 구분 둘다 가능함을 보여준다.
빌드
- 빌드한후 왼쪽 build variants를 보면 build 방식이 내가 작성한 gradle에 따라 분리 되있는걸 볼 수 있다.
리소스
-> 기존 main 디렉토리가 존재, sb 라는 커스텀 디렉토리 생성으로 buildFlavor이름과 맞는 파일 생성후
기존에 사용하던 리소스 이름과 동일하게 명명하면 빌드시 해당 res를 찾아간다.
ic_launcher.jpg로 동일한 명을 사용하면 아이콘이 저 jpg를 찾아간다.
반응형