Используйте разные модули библиотеки для каждого аромата Android - PullRequest
2 голосов
/ 30 мая 2019

Я хочу использовать разные библиотечные модули для каждого варианта.

Например:

  • бесплатный ароматизатор -> мне нужно использовать модуль бесплатной библиотеки
  • платный ароматизатор -> мне нужно использовать модуль платной библиотеки

Мои вкусы

productFlavors {
    free{
     ....... 
     }
    paid{
     ....... 
     }
   }

То, что я пробовал

freeImplementation  project(path:':freeLib', configuration: 'free')//for free

paidImplementation  project(path:':paidLib', configuration: 'paid')//for paid

Но я получил ошибку компиляции, не в состоянии использовать это

Примечание: это не повторяющийся вопрос.Я уже пробовал некоторые вопросы StackOverflow.Он устарел (они используют компиляцию)

Справочник - Приложение с несколькими ароматами на основе библиотеки мульти-ароматов в Android Gradle

Решение (от Габриэле Мариоттикомментарии)

 freeImplementation project(path:':freeLib')
 paidImplementation project(path:':paidLib')

1 Ответ

4 голосов
/ 30 мая 2019

Если у вас есть библиотека с несколькими вариантами продуктов, в вашем lib/build.gradle вы можете определить:

android {
    ...
    //flavorDimensions is mandatory with flavors.
    flavorDimensions "xxx"
    productFlavors {
        free{
            dimension "xxx"
        }
        paid{
            dimension "xxx"
        }
    }
    ...
}

В вашем app/build.gradle определите:

android {
    ...

    flavorDimensions "xxx"
    productFlavors {
        free{
            dimension "xxx"

            // App and library's flavor have the same name.
            // MatchingFallbacks can be omitted
            matchingFallbacks = ["free"]
        }
        paid{
            dimension "xxx"

            matchingFallbacks = ["paid"]
        }
    }
    ...
}
dependencies {
    implementation project(':mylib')
}

Вместо этого, еслиу вас есть отдельные библиотеки, которые вы можете просто использовать в вашем app/build.gradle что-то вроде:

dependencies {
    freeImplementation project(':freeLib')
    paidImplementation project(':paidLib')
}
...