Подтвердить что ты не робот

Как добавить ароматы в модуль с Android Studio?

У меня есть набор проектов, которые используют тот же модуль, который содержит почти весь фактический код. Проект настраивается следующим образом:

project/
  - app/
    - build.gradle
  - libraries/
    - module/
      - build.gradle
  - build.gradle
  - settings.gradle

Все настройки настроены правильно, и я могу создавать и запускать приложения отлично, но я могу только добавить ароматы в проект, что не является идеальным решением. settings.gradle содержит следующее:

include ':app', ':libraries:module'

В файле build.gradle каталога приложения я добавил следующий блок:

productFlavors {
    alpha
    production
}

Используя gradle 0.11, это синхронизирует и создает assembleAlphaDebug, assembleAlphaRelease, assembleProductionDebug, assembleProductionRelease. Когда я пытаюсь сделать это в модуле, я получаю сообщение об ошибке:

Ресурс не найден, который соответствует указанному имени (в 'теме' со значением '@style/MyCustomTheme')

в построенной app/src/main/AndroidManifest.xml. По какой-то причине модуль не строится, поэтому пользовательская тема не работает. Что я делаю неправильно?

4b9b3361

Ответ 1

В библиотечном модуле build.gradle вам понадобится пара дополнительных строк, чтобы сообщить об этом экспортировать ароматизаторы и какой вариант сборки использовать по умолчанию, если он не указан при добавлении из другого модуля:

android {
    defaultPublishConfig "productionRelease"
    publishNonDefault true

    productFlavors {
        alpha {
        }
        production {
        }
    }
}

Этот бит publishNonDefault необходим, только если кто-то захочет зависеть от чего-то другого, кроме варианта productionRelease. Предположительно, это так, если вы в первую очередь настроили мульти-ароматы в своей библиотеке.

Теперь, если вы добавите зависимость из другого модуля через это в свой build.gradle:

dependencies {
    compile project(':module')
}

он будет зависеть от варианта productionRelease по умолчанию. Если вы хотите зависеть от нестандартного варианта:

dependencies {
    compile project(path: ':module', configuration:'alphaDebug')
}