Konwertuję jedną z moich aplikacji na Gradle i chciałbym użyć funkcji nowej wersji kompilacji, aby mieć płatną i bezpłatną wersję opartą na reklamach.
Chcę, aby tylko wersja oparta na reklamach była zależna od pakietu AdMob SDK.
Mój plik kompilacji wygląda następująco:
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')
}
Czy istnieje sposób skonfigurowania zależności w wersji darmowego produktu tak, aby miała własny folder libs, który jest scalany z głównym folderem libs zawierającym biblioteki ogólne dla obu wersji?
Jeśli to możliwe, jak zdefiniowałbym ten folder?
android
gradle
android-build
Janusz
źródło
źródło
Odpowiedzi:
Aby zdefiniować zależność specyficzną dla smaku, możesz użyć
proCompile
zamiastcompile
w sekcji zależności. Po uruchomieniu właściwości gradle otrzymasz przegląd automatycznie utworzonych konfiguracji.Prawidłowy plik kompilacji wygląda następująco:
źródło
Error:(28, 0) Build script error, unsupported Gradle DSL method found: 'glassCompile()'!
(Smak, do którego próbuję dodać zależność, to „szkło”).dependencies
blok podandroid
blok. Jak intuicyjnie.xxxCompile
zamknięcia generowane przez Gradle nie będą działać, jeśli nazwa smaku zaczyna się od dużej litery.Przejdźmy do połowy 2018 roku. Będziesz musiał dodać
flavorDimensions
.Zwróć też uwagę:
źródło
Musisz ręcznie dodać konfigurację dla każdego smaku. Przykład
źródło
Edycja: polecam użycie jednej z pozostałych technik!
Alternatywą dla zaakceptowanej odpowiedzi jest:
źródło
Prosty:
Lub tylko:
źródło