Я конвертирую одно из моих приложений в Gradle и хотел бы использовать новые возможности сборки, чтобы иметь платный и бесплатный рекламный вариант.
Я хочу, чтобы только рекламная версия зависела от admob SDK.
Мой файл сборки выглядит так:
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')
}
Есть ли способ настроить зависимость в бесплатной версии продукта, чтобы иметь свою собственную папку libs, которая объединена с основной папкой libs, содержащей общие библиотеки для обоих вариантов?
Если это возможно, как бы я определил эту папку?
Ответы:
Чтобы определить специфическую для вкуса зависимость, вы можете использовать
proCompile
ееcompile
в разделе зависимостей. Когда вы запускаете свойства gradle, вы получаете обзор автоматически созданных конфигураций.Правильный файл сборки выглядит так:
источник
Error:(28, 0) Build script error, unsupported Gradle DSL method found: 'glassCompile()'!
(Аромат, к которому я пытаюсь добавить зависимость - это «стекло».)dependencies
блок нижеandroid
блока. Как интуитивно понятно.xxxCompile
замыкания, которые генерирует Gradle, не будут работать, если имя аромата начинается с заглавной буквы.Перенесемся в середину 2018 года. Вам нужно будет добавить
flavorDimensions
.Также обратите внимание:
источник
Вам нужно вручную добавить конфигурацию для каждого аромата. пример
источник
Изменить: я рекомендую использовать один из других методов!
Альтернатива принятому ответу такова:
источник
Просто:
или просто:
источник