수색…


비고

으로 제품의 맛은 동일한 속성을 지원 defaultConfig defaultConfig 실제로 ProductFlavor 클래스에 속하기 때문이다. 즉, defaultConfig {} 블록에서 모든 특성에 대한 기본 구성을 제공 할 수 있으며 각 특성은 pplicationId 와 같은 이러한 기본값 중 하나를 재정의 할 수 있음을 의미합니다.

build.gradle 파일을 구성하는 방법

android {
    ...
    defaultConfig {...}
    buildTypes {...}
    productFlavors {
        demo {
            applicationId "com.example.myapp.demo"
            versionName "1.0-demo"
        }
        full {
            applicationId "com.example.myapp.full"
            versionName "1.0-full"
        }
    }
}

build.gradle의 풍미 정수 및 자원

gradle을 사용하여 풍미를 기준으로 BuildConfig 상수 및 res 값을 가질 수 있습니다. 그냥 당신이 지원하고자하는 맛에 값을 추가하십시오.

android {
    defaultConfig {
        resValue "string", "app_name", "Full App"
        buildConfigField "boolean", "isDemo", "false"
    }
    productFlavors {
        demo {
            resValue "String", "app_name", "Demo App"
            buildConfigField "boolean", "isDemo", "true"
        }
        full {
            // use default values
        }
    }
}

Gradle이 모든 병합 / 덮어 쓰기를 수행합니다. 생성 된 코드를 통해 값의 출처를 확인할 수도 있습니다.

<!-- Values from default config. -->
<string name="app_name" translatable="false">Default Name</string>

public final class BuildConfig {
    public static final String VERSION_NAME = "1.0";
    // Fields from product flavor: demo
    public static final boolean isDemo = true;
}

Flavor 차원 사용

앱이 둘 이상의 기준을 기반으로하는 경우 많은 풍미를 만드는 대신 풍미 치수를 정의 할 수 있습니다.

flavor 차원은 변형 생성에 사용될 데카르트 곱을 정의합니다.

예:

flavorDimensions("dimA", "dimB")

productFlavors {

    row1 {
        ...
        dimension = "dimA"
    }
    row2 {
        ...
        dimension = "dimA"
    }
    row3 {
         ...
        dimension = "dimA"
    }

    col1 {
        ...
        dimension = "dimB"
    }
    col2 {
        ...
        dimension = "dimB"
    }
    col3 {
         ...
        dimension = "dimB"
    }
}

이 설정은 18 (3 3 2) 변형을 생성합니다 (2 개의 표준 빌드 유형이있는 경우 : debugrelease ). 다음 빌드 변형이 생성됩니다.

row1-col1-debug 
row1-col2-debug 
row1-col3-debug 
row1-col1-release
row1-col2-release
row1-col3-release

row2-col1-debug 
row2-col2-debug 
row2-col3-debug 
row2-col1-release
row2-col2-release
row2-col3-release

row3-col1-debug 
row3-col2-debug 
row3-col3-debug 
row3-col1-release
row3-col2-release
row3-col3-release

차원순서는 android.flavorDimensions 의해 정의되고 flavor가 다른 것을 재정의합니다 . flavor의 값이 우선 순위가 낮은 flavor에 정의 된 값을 대체 할 때 자원에 중요합니다.

flavor 차원은 더 높은 우선 순위로 먼저 정의됩니다. 그래서이 경우에 :

dimA > dimB > defaultConfig

둘 이상의 flavor 차원이 사용될 때 사용할 수있는 "flavor combination"소스 폴더도 있습니다. 예를 들어 src/flavor1Flavor2/ .

  • 이는 모든 차원의 모든 조합에 적용됩니다.
  • 우선 순위는 단일 소스 소스 셋보다 높지만 빌드 유형보다 낮습니다.

풍미에 대한 의존성 추가

특정 제품 풍미에 대해 서로 다른 종속성을 추가 할 수 있습니다.

<flavorName>Compile 'group:name:xyz' 구문을 사용하십시오.

android {
    ...    
    productFlavors {
        flavor1 {
           //.....
        }
        flavor2 {
           //.....
        }
    }
}

...
dependencies {

    compile 'com.android.support:appcompat-v7:24.2.0'
   
    // Add a dependency only for flavor1
    flavor1Compile 'group:name:x.y.z'

    // Add a dependency only for flavor2
    flavor2Compile 'group:name:x.y.z'
} 

제품 맛 내기 개발 및 생산 사례

productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 15
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow