当前位置: 首页 > 知识库问答 >
问题:

Gradle:如何在项目中指定库的两个源集并添加依赖项

谭泳
2023-03-14

我尝试指定gradle库的两个不同的源集,并在项目中添加源集特定的依赖项。

这个想法是这样做的:

库build.gradle文件:

apply plugin: 'com.android.library'

android {
   ...
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'

            java {
                srcDir 'src'
            }
            res {
                srcDir 'res'
            }
        }

        exclude_fr_it{
            manifest.srcFile 'AndroidManifest.xml'

            java {
                srcDir 'src'
            }
            res {
                srcDir 'res'
                exclude 'res/values/values-fr'
                exclude 'res/values/values-it'
            }
        }
    }
...
}
...

在项目A中,我希望包括主源集:

dependencies {
    compile project(':explore_layout')
}
dependencies {
    compile project(':explore_layout') library 'exclude_fr_it'
}

医生

问题2

共有1个答案

万俟招
2023-03-14

这不是对sourceSets问题的直接回答。但是您可能根本不需要使用sourceSets特性。

如果您只是希望您的应用程序在您的自定义android库中包含一个资源子集,您可以通过在应用程序的构建中设置一个配置块来实现这一点。Gradle。(事实上,该库根本不需要那些用于'main'和'exclude_fr_it'源集的特殊配置块。)

这是可能的,因为'res configs'属性。

特别是,假设您的库具有三种语言的资源配置:'en'、'fr'和'it'。

然后,在包含库中所有语言的项目A中,您只需在Build中使用此代码。Gradle:

dependencies {
    compile project(':explore_layout')
}

但是,在项目B中,您希望排除自定义库的'fr'和'it'资源,您在配置闭包中使用'res configs'属性只包括如下所示的资源子集:

dependencies {
    compile project(':explore_layout') {
        android {
            defaultConfig {
                resConfigs 'en'
            }
        }
    }
}
 类似资料:
  • 问题内容: 假设我想在项目中添加guice-assistedinject作为依赖项。它将guice工件指定为依赖项本身。如何告诉它使用guice的no_aop版本? 我知道我可以执行以下操作,但是我可以一步完成而不排除guice模块吗? 问题答案: 没有更简单的解决方案。您可以使用简短的依赖性表示法(例如)来缩短代码。

  • 本文向大家介绍android-gradle 如何添加依赖项,包括了android-gradle 如何添加依赖项的使用技巧和注意事项,需要的朋友参考一下 示例 下面的示例描述了如何在app /模块的build.gradle文件中声明三种不同类型的直接依赖关系:            

  • 我面临着以下问题。我有两个Gradle项目(ProjectA和ProjectB)在同一个层次结构上,没有任何根项目。由于ProjectA依赖于ProjectB,我尝试将其建模如下: ProjectA的settings.gradle: ProjectA的build.gradle: 然而,当我在ProjectA上执行gradle build时,我得到了以下错误: 我必须在ProjectB中定义某种默认

  • 我无法在gradle项目中添加自定义源集。如何在这里初始化版本号?我的gradle文件看起来像:

  • 我是gradle的新手,我现有的大多数项目都在ant(netbeans项目)中。 我必须为我想重用的每个项目创建gradle项目吗? 我可以在gradle项目中直接声明现有的netbean项目为依赖项吗?如果是,如何? 谢谢。

  • eclipse插件似乎使用以下机制来实现这一点: 但是我找不到想法插件的相应选项。我错过了什么? 这是构建。gradle文件: