2016-04-19 3 views
2

Я знаю, что если я делаю библиотеку, которая использует ароматы продукта, а затем, когда я использую эту библиотеку в приложении, я могу сделать это в Gradle:Зависимость от конфигурации

dependencies { 
    flavor1Compile(path: '{path}', configuration: 'flavor1Config') 
    flavor2Compile(path: '{path}', configuration: 'flavor2Config') 
} 

Я также знаю, что я могу сделать это:

dependencies { 
    debugCompile(path: '{path}', configuration: 'debugConfig') 
    releaseCompile(path: '{path}', configuration: 'releaseConfig') 
} 

То, что я хочу сделать, это в основном это:

dependencies { 
    flavor1DebugCompile(path: '{path}', configuration: 'flavor1DebugConfig') 
    flavor1ReleaseCompile(path: '{path}', configuration: 'flavor1ReleaseConfig') 
    flavor2DebugCompile(path: '{path}', configuration: 'flavor2DebugConfig') 
    flavor2ReleaseCompile(path: '{path}', configuration: 'flavor2ReleaseConfig') 
} 

Но что код производит это:

Error:(30, 0) Gradle DSL method not found: 'flavor1DebugCompile()' Possible causes:

  • The project 'android' may be using a version of Gradle that does not contain the method. Open Gradle wrapper file
  • The build file may be missing a Gradle plugin. Apply Gradle plugin
  • Есть ли способ сделать это?

    +1

    Что именно ваши симптомы? IOW, что означает «не работает»? – CommonsWare

    +0

    См. Мое редактирование. – KairisCharm

    ответ

    1

    Существует an open bug on the Android issue tracker, чтобы поддержать это.

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

    configurations { 
        flavor1DebugCompile 
    } 
    
    dependencies { 
        flavor1DebugCompile(path: '{path}', configuration: 'flavor1DebugConfig') 
    } 
    
    +0

    Ну, это заставило меня пройти мимо ошибки, которую я описал, но это приводит к другой проблеме. У меня есть 1 основная библиотека, где я использую productFlavors, а затем другие библиотеки, которые используют это основное, и если я попытаюсь использовать эти другие библиотеки, используя этот метод, я больше не получаю эту ошибку, но я также не может получить доступ к пакетам внутри них. – KairisCharm

    +0

    [u2020] (https://github.com/JakeWharton/u2020) - хороший пример проекта, который использует это. Конфигурация «internalDebugCompile» использует этот шаблон. –

    +0

    Это не касается новой проблемы. Новая проблема заключается в том, что я не могу получить доступ к пакетам библиотеки, которая включает в себя библиотеку, которая использует вкусы продукта. – KairisCharm

    Смежные вопросы