【问题标题】:Android build variants: declare dependencies for all but one variantAndroid 构建变体:为除一个变体之外的所有变体声明依赖项
【发布时间】:2021-05-18 12:53:09
【问题描述】:

我有 5 个构建变体。需要一组给定 Gradle 依赖项的 4 个不同的构建变体(“内部”)和不需要的 1 个构建变体(“外部”)。引用这些依赖项的代码仅在内部构建变体的 /src 文件夹中。

我可以更简洁地声明“除了这个变体之外的所有”都需要一个给定的依赖列表吗?

这就是我们现在处理这个问题的方式app-level build.gradle file

internalDevelopmentImplementation(name:'MyGreatDependency-1.1.0', ext:'jar')
internalDevelopmentImplementation(name:"MyGreatDependency-logger-1.1.0", ext:'aar')
internalDevelopmentImplementation(name:"MyGreatDependency-android-2.0.0", ext:'aar')
internalDevelopmentImplementation(name:"MyGreatDependency-extension-android-1.1", ext:'aar')

internalReleaseImplementation(name:'MyGreatDependency-1.1.0', ext:'jar')
internalReleaseImplementation(name:"MyGreatDependency-logger-1.1.0", ext:'aar')
internalReleaseImplementation(name:"MyGreatDependency-android-2.0.0", ext:'aar')
internalReleaseImplementation(name:"MyGreatDependency-extension-android-1.1", ext:'aar')

internalStageImplementation(name:'MyGreatDependency-1.1.0', ext:'jar')
internalStageImplementation(name:"MyGreatDependency-logger-1.1.0", ext:'aar')
internalStageImplementation(name:"MyGreatDependency-android-2.0.0", ext:'aar')
internalStageImplementation(name:"MyGreatDependency-extension-android-1.1", ext:'aar')

internalProdImplementation(name:'MyGreatDependency-1.1.0', ext:'jar')
internalProdImplementation(name:"MyGreatDependency-logger-1.1.0", ext:'aar')
internalProdImplementation(name:"MyGreatDependency-android-2.0.0", ext:'aar')
internalProdImplementation(name:"MyGreatDependency-extension-android-1.1", ext:'aar')

然后,externalProd 变体根本不声明依赖项。

有什么办法可以改善吗?

【问题讨论】:

    标签: android gradle build-variant


    【解决方案1】:

    这里有个想法:使用配置继承。使用大多数配置共享的依赖项创建一个配置,在那里设置公共依赖项。让其他人从这个延伸。比如:

    configurations {
        // Add the bulk of dependencies to this one:
        commonImplementation {}
    
    internalDevelopmentImplementation.extendsFrom(commonImplementation)
        internalReleaseImplementation.extendsFrom(commonImplementation)
        // And so on
    
    

    免责声明:我尚未对此进行测试。 检查https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/ConfigurationContainer.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      相关资源
      最近更新 更多