In a previous post about Gradle Flavors and Build Types, we mentioned that we can set different dependencies inside dependencies{} block by flavors, by build type or both combined. Below we will see an example for each situation.
By flavors
- <flavorName>Compile
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.diana.buildvariants" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } qa { applicationIdSuffix ".qa" // signingConfigs as debug key needed. Otherwise, the app won't run and it will ask // you to sign the apk signingConfig signingConfigs.debug } } productFlavors { free { applicationId "com.example.myapp.free" versionName "1.0-free" minSdkVersion 23 } paid { applicationId "com.example.myapp.paid" versionName "1.0-paid" } } } dependencies { paidCompile 'com.android.support:design:23.4.0' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha3' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support:support-annotations:23.4.0' }
By build type
- <buildTypeName>Compile>
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.diana.buildvariants" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } qa { applicationIdSuffix ".qa" // signingConfigs as debug key needed. Otherwise, the app won't run and it will ask // you to sign the apk signingConfig signingConfigs.debug } } productFlavors { free { applicationId "com.example.myapp.free" versionName "1.0-free" minSdkVersion 23 } paid { applicationId "com.example.myapp.paid" versionName "1.0-paid" } } } dependencies { qaCompile 'com.android.support:design:23.4.0' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha3' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support:support-annotations:23.4.0' }
By both flavor and build type
- <flavorName><BuildTypeName>Compile.
- In this case you have to define the custom compile in configurations{}Â block in order to be recognized in dependencies{} block.
configurations { paidQaCompile }
Final result:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.diana.buildvariants" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } qa { applicationIdSuffix ".qa" // signingConfigs as debug key needed. Otherwise, the app won't run and it will ask // you to sign the apk signingConfig signingConfigs.debug } } productFlavors { free { applicationId "com.example.myapp.free" versionName "1.0-free" minSdkVersion 23 } paid { applicationId "com.example.myapp.paid" versionName "1.0-paid" } } } configurations { paidQaCompile } dependencies { paidQaCompile 'com.android.support:design:23.4.0' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha3' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support:support-annotations:23.4.0' }