반응형

 

개요

하나의 프로젝트로 비슷한 서비스를 만들시 기존앱을 복사해서 패키지명을 변경하는 작업은 번거롭기 때문에

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' 버전 차원을 생성합니다.

 

ProductFlavor  |  Android Developers

com.android.build.api.component Interfaces

developer.android.com

-> 빌드 flavor로 커스텀 이름에 따른 빌드구분 , API 버전에따른 빌드 구분 둘다 가능함을 보여준다.

 

빌드

- 빌드한후 왼쪽 build variants를 보면 build 방식이 내가 작성한 gradle에 따라 분리 되있는걸 볼 수 있다.

 

 

리소스

-> 기존 main 디렉토리가 존재, sb 라는 커스텀 디렉토리 생성으로 buildFlavor이름과 맞는 파일 생성후

기존에 사용하던 리소스 이름과 동일하게 명명하면 빌드시 해당 res를 찾아간다.

ic_launcher.jpg로 동일한 명을 사용하면 아이콘이 저 jpg를 찾아간다.

반응형

+ Recent posts