Estoy convirtiendo una de mis aplicaciones a Gradle y me gustaría utilizar las nuevas funciones de creación de sabor para tener un sabor basado en anuncios pagos y gratuitos.
Solo quiero que la versión basada en anuncios dependa del SDK de admob.
Mi archivo de compilación se ve así:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
productFlavors {
Pro {
packageName "de.janusz.journeyman.zinsrechner.pro"
}
Free {
dependencies {
}
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile fileTree(dir: 'libs', include: '*.jar')
}
¿Hay alguna manera de configurar la dependencia en la versión gratuita del producto para tener su propia carpeta libs que se fusiona con la carpeta principal libs que contiene bibliotecas generales para ambas versiones?
Si esto es posible, ¿cómo definiría esta carpeta?
android
gradle
android-build
Janusz
fuente
fuente
Respuestas:
Para definir una dependencia específica de sabor, puede usarla en
proCompile
lugar decompile
en su sección de dependencia. Cuando ejecuta propiedades de gradle, obtiene una visión general de las configuraciones creadas automáticamente.El archivo de compilación correcto se ve así:
fuente
Error:(28, 0) Build script error, unsupported Gradle DSL method found: 'glassCompile()'!
(El sabor al que estoy tratando de agregar una dependencia es "vidrio".)dependencies
bloque debajo delandroid
bloque. Que intuitivo.xxxCompile
cierres que genera Gradle no funcionarán si el nombre del sabor comienza con una letra mayúscula.Avance rápido hasta mediados de 2018. Necesitarás agregar
flavorDimensions
.Además, tome nota:
fuente
Necesita agregar manualmente la configuración para cada sabor. Ejemplo
fuente
Editar: ¡Recomiendo usar una de las otras técnicas!
Una alternativa a la respuesta aceptada es esta:
fuente
Sencillo:
o solo:
fuente