【问题标题】:android - gradle multiproject include and exclude librariesandroid - gradle multiproject 包含和排除库
【发布时间】:2013-04-25 08:26:53
【问题描述】:

我正在尝试使用 Gradle 构建一个 Android 项目。

结构如下:

ProjectA----- MainProject,   
LibA     ---- Library project,   
LibB     ---- Library project,   
LibC     ---- Library project,   
LibD     ---- Library project,  
etc...

根据情况,我需要包含库,有时需要包含所有库、1 个库、2 个或 3 个等。 在设置文件中,我包含了所有项目。

有人知道如何根据风格包含/排除库吗?

我尝试过依赖块,但出现错误。
以下是示例代码

dependencies {
if (task.name.matches('compileFlovor1'){
  exclude module: 'LibD'
   }
}

错误是:找不到参数 [{module=LibD}] 的方法 exclude()。

请指导我解决这个问题

【问题讨论】:

    标签: android gradle multiple-projects


    【解决方案1】:

    添加风味特定的依赖项,您必须配置相应的配置。 假设你必须品尝“免费”和“付费”

    android {
        productFlavors {
            free
            paid
        }
    }
    

    那么您可以通过以下方式在依赖块中设置特定于风味的依赖项:

    dependencies {
        compile project(':library1')  //library1 used in free and paid flavour
        freeCompile project(':library2')
        paidCompile project(':library3')    
        paidCompile project(':library4')    
        paidCompile project(':library5')     
    }
    

    希望有所帮助,

    干杯, 勒内

    【讨论】:

    • 谢谢 Rene Grieschke... 它对我有用。非常感谢..排除也可以吗?
    • 我们以自定义方式处理依赖关系,不提供排除依赖关系的方法。我不确定这将如何工作。唯一的方法是删除顶级依赖项(及其所有可传递的 dep),因为其他任何东西都可能破坏构建。还不如只在需要它的风味中声明它。
    • 继续上述问题,如何将库作为 ProjectA 的主项目的 apk 的一部分包含在内。在 ProjectA/build/class/flavor/... 中,仅包含 ProjectA 在编译时需要的库项目类文件,并且只有该库在工作。我的东西是即插即用库..意味着库可以作为服务而不是在任何地方使用或导入到 ProjectA 中,并且只包含在 ProjectA 的清单文件中。在这种情况下,如何包含库。例如:在 Eclipse 中,它将捆绑在一起,但在我的情况下并没有发生同样的情况......提前致谢
    • 这不适用于纯 Java 项目。例如,如果 ':library2' 的 build.gradle 是: apply plugin: 'java' apply plugin: 'idea' apply plugin: 'eclipse' 那么 library1/src/main/resources/assets/ 中的文件不包含在 APK 中资产。还是我做错了什么?
    猜你喜欢
    • 2018-01-24
    • 2016-01-17
    • 2015-02-24
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2015-12-03
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多