Zoeken…


Opmerkingen

De productaroma's ondersteunen dezelfde eigenschappen als defaultConfig Dit komt omdat defaultConfig eigenlijk tot de klasse ProductFlavor behoort. Dit betekent dat u de basisconfiguratie kunt defaultConfig {} voor alle smaken in het defaultConfig {} -blok, en elke smaak kan elk van deze standaardwaarden overschrijven, zoals de pplicationId .

Hoe het build.gradle-bestand te configureren

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

Smaakconstanten en bronnen in build.gradle

U kunt gradle gebruiken om BuildConfig constanten en res waarden per smaakbasis te hebben. Voeg gewoon de waarde toe aan de smaak die u wilt ondersteunen.

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 doet al het samenvoegen / opheffen voor u. Met de gegenereerde code kunt u ook zien waar de waarden vandaan komen, bijvoorbeeld

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

en

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

Smaakdimensie gebruiken

Wanneer de app op meer dan één criteria is gebaseerd, kunt u in plaats van veel smaken te creëren smaakdimensies definiëren.

De smaakafmetingen bepalen het cartesiaanse product dat zal worden gebruikt om varianten te produceren.

Voorbeeld:

flavorDimensions("dimA", "dimB")

productFlavors {

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

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

Deze configuratie zal 18 (3 3 2) varianten produceren (als je de 2 standaard build-types hebt: debug en release ). De volgende build-varianten worden gemaakt:

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

De volgorde van de dimensie wordt bepaald door android.flavorDimensions en drives die de andere smaak overschrijven , wat belangrijk is voor bronnen wanneer een waarde in een smaak een waarde vervangt die is gedefinieerd in een smaak met een lagere prioriteit.

De smaakdimensie wordt eerst gedefinieerd met een hogere prioriteit. Dus in dit geval:

dimA > dimB > defaultConfig

Er is ook een bronmap met "smaakcombinaties" beschikbaar wanneer meer dan één smaakdimensie wordt gebruikt. Bijvoorbeeld src/flavor1Flavor2/ .

  • Merk op dat dit voor alle combinaties van alle dimensies geldt.
  • De prioriteit is hoger dan single-flavour bronnen, maar lager dan build-types.

Voeg afhankelijkheden voor smaken toe

U kunt verschillende afhankelijkheden toevoegen voor een specifieke productsmaak.

Gebruik gewoon de <flavorName>Compile 'group:name:xyz' syntaxis:

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'
} 

Product smaken ontwikkelen en produceren

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow