【问题标题】:Use different library module for each android flavor为每个 android 风格使用不同的库模块
【发布时间】:2019-10-15 18:32:37
【问题描述】:

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

例如:

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

我的口味

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 cmets)

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

【问题讨论】:

    标签: android gradle android-gradle-plugin android-flavors


    【解决方案1】:

    如果您有一个包含多种产品风格的库,您可以在 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')
    }
    

    【讨论】:

    • 感谢您的回答.. 但我想为每种口味使用单独的库。有可能吗?
    • 在这种情况下,如果您的库具有产品风味,则配置是相同的。否则只需使用 freeImplementation project(':mylib1') 和paidImplementation
    • 是的为我工作.. 感谢您的回复.. freeImplementation project(path:':freeLib')paidImplementation project(path:':paidLib')
    • 刚刚在答案中添加了我的最后一条评论以支持这两种情况。
    • matchingFallbacks 拯救了我的一天。我本可以很容易地花一整天的时间来为自己解决这个问题。
    猜你喜欢
    • 2017-01-09
    • 2014-02-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多