为每个Android版本使用不同的库模块

时间:2019-05-30 06:07:32

标签: android gradle android-gradle android-flavors

我想为每种口味使用不同的库模块。

例如:

  • 自由风味->我需要使用免费库模块
  • 付费风格->我需要使用付费库模块

我的口味

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

我尝试了

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

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

但我无法使用此编译错误

注意:这不是重复的问题。我已经尝试了一些StackOverflow问题。已经过时了(他们正在使用编译)

参考-Multi flavor app based on multi flavor library in Android Gradle

解决方案(摘自Gabriele Mariotti的评论)

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

1 个答案:

答案 0 :(得分:4)

如果您拥有一个具有多种产品口味的库,则可以在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')
}