Добавить productFlavor в экспериментальную библиотеку плагинов Android gradle

У меня есть проект, который использует экспериментальный плагин gradle, то есть 0.2.0 . Когда у меня нет productFlavor , я могу полностью интегрировать библиотечный модуль в Android Studio, и все работает отлично. Но когда библиотека имеет productFlavor , основной проект не находит классы библиотеки.

Это исправление , похоже, не работает с экспериментальным плагином gradle. Кто-нибудь есть идеи, как сделать ароматы работать с новым плагином?

Библиотека:

 android.productFlavor { create ('flavor') { ... } } 

Проект:

 ... dependencies { compile project(':mylibrary') } 

Это может помочь?

Публикация библиотеки

По умолчанию библиотека публикует только свой вариант выпуска. Этот вариант будет использоваться всеми проектами, ссылающимися на библиотеку, независимо от того, какой вариант они сами создают. Это временное ограничение из-за ограничений Gradle, которые мы делаем для удаления.

Вы можете контролировать, какой вариант публикуется с помощью

 android { defaultPublishConfig "debug" } 

Обратите внимание, что это имя конфигурации публикации ссылается на полное имя варианта. Отпуск и отладка применимы только тогда, когда нет вкусов. Если вы хотите изменить опубликованный вариант по умолчанию при использовании ароматов, вы должны написать:

 android {defaultPublishConfig "flavor1Debug" } 

Также возможно опубликовать все варианты библиотеки. Мы планируем разрешить это, используя обычную зависимость между проектами (как показано выше), но это невозможно сейчас из-за ограничений в Gradle (мы также работаем над их исправлением). Публикация всех вариантов по умолчанию не включена. Чтобы включить их:

 android {publishNonDefault true } 

Важно понимать, что публикация нескольких вариантов означает публикацию нескольких файлов aar вместо одного aar, содержащего несколько вариантов. Каждая упаковка aar содержит один вариант. Публикация варианта означает, что этот аран доступен в качестве выходного артефакта проекта Gradle. Затем это можно использовать либо при публикации в репозитории maven, либо когда другой проект создает зависимость от проекта библиотеки.

Gradle имеет концепцию дефолтного артефакта. Это тот, который используется при написании:

 compile project(':libraries:lib2') 

Чтобы создать зависимость от другого опубликованного артефакта, вам необходимо указать, какой из них использовать:

 dependencies { flavor1Compile project(path: ':lib1', configuration: 'flavor1Release') flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') } 

Важно: обратите внимание, что опубликованная конфигурация представляет собой полный вариант, включая тип сборки, и должна быть указана как таковая. Важно: при включении публикации не по умолчанию плагин публикации Maven публикует эти дополнительные варианты в виде дополнительных пакетов (с классификатором). Это означает, что это несовместимо с публикацией в репозитории maven. Вы должны либо опубликовать один вариант в репозитории, либо разрешить публикацию всех конфигураций для межпроектных зависимостей.

Отсюда: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

Синтаксис неверен.

С экспериментальным плагином (0.2.1) ароматы определяются вне блока android а правый синтаксис – android.productFlavors

 model { android { } android.productFlavors { create("flavor") { } } } 

Все немного сложнее. Я тестировал на эксперименте градиента 0.8.0

В библиотеке, в которой вы нуждаетесь:

 model{ android { ... publishNonDefault true productFlavors { create("flavor1") { } create("flavor2") { } } } } 

На нужное приложение:

 model { android { ... publishNonDefault true productFlavors { create("flavor1") { } create("flavor2") { } } } } //after the model is closed !! configurations { flavor1DebugCompile flavor1ReleaseCompile flavor2DebugCompile flavor2ReleaseCompile } dependencies { ... flavor1DebugCompile project(path: ':mylibrary', configuration: 'flavor1Debug') flavor1ReleaseCompile project(path: ':mylibrary', configuration: 'flavor1Release') flavor2DebugCompile project(path: ':mylibrary', configuration: 'flavor2Debug') flavor2ReleaseCompile project(path: ':mylibrary', configuration: 'flavor2Release') } 

Надеюсь, если вы запустите полную сборку, вы получите 2 апка, по одному на каждый вкус. Я использовал «./gradlew build» из cmd и получил их. Обратите внимание, что для вашей библиотеки вы получите AAR для каждого