android - sirve - tesis sobre youtube pdf
Cómo definir diferentes dependencias para diferentes sabores de productos (3)
Estoy convirtiendo una de mis aplicaciones a Gradle y me gustaría utilizar las nuevas características de compilación para tener un sabor basado en anuncios pagados y gratuitos.
Solo quiero que la versión basada en anuncios dependa del admob SDK.
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 el sabor del producto libre para que tenga su propia carpeta libs fusionada con la carpeta libs principal que contiene bibliotecas generales para ambos sabores?
Si esto es posible, ¿cómo definiría esta carpeta?
Necesita agregar manualmente la configuración para cada sabor. Ejemplo
configurations {
proCompile
freeCompile
}
dependencies {
compile ''com.parse.bolts:bolts-tasks:1.3.0''
proCompile ''com.android.support:design:23.1.1''
freeCompile ''com.parse:parse-android:1.12.0''
}
Para definir una dependencia específica de sabor, puede usar proCompile
lugar de compile
en su sección de dependencia. Cuando ejecuta propiedades gradle, obtiene una descripción general de las configuraciones automáticas creadas.
El archivo de construcción correcto se ve así:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ''com.android.tools.build:gradle:1.2.3''
}
}
apply plugin: ''com.android.application''
repositories {
mavenCentral()
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 22
}
productFlavors {
pro {
packageName "de.janusz.journeyman.zinsrechner.pro"
}
free { }
}
}
dependencies {
compile ''com.android.support:support-v4:22.2.0''
freeCompile ''com.google.android.gms:play-services-ads:7.5.0''
}
Editar: ¡Recomiendo usar una de las otras técnicas!
Una alternativa a la respuesta aceptada es esta:
ext {
flavorType = ""
}
gradle.startParameter.getTaskNames().each { task ->
if(task.contains("flavor1")){
flavorType = "flavor1"
} else if (task.contains("flavor2")){
flavorType = "flavor2"
} else {
flavorType = "flavor3"
}
}
if(flavorType == ''flavor1'' || flavorType == ''flavor2'') {
compile ''com.android.support:support-v4:18.0.+''
}