サーチ…


備考

製品の味はと同じプロパティをサポート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のフレーバ定数とリソース

BuildConfig使用すると、 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ディメンションの使用

アプリが複数の基準に基づいている場合、多くのフレーバーを作成するのではなく、フレーバーディメンションを定義することができます。

フレーバーディメンションは、バリアントを生成するために使用されるデカルト積を定義します。

例:

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で定義され、 フレーバがもう一方をオーバーライドします 。これは、フレーバの値が優先順位の低いフレーバで定義された値を置き換えるときにリソースにとって重要です。

フレーバーディメンションは、より高い優先順位で最初に定義されます。したがってこの場合:

dimA > dimB > defaultConfig

複数のフレーバーディメンションが使用されている場合は、「フレーバコンビネーション」ソースフォルダも使用できます。たとえば、 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