Gradle插件3.0.0 beta 4: “buildTypeMatching已被移除。使用buildTypes.<name>.fallbacks”。

10

更新到Gradle插件3.0.0 beta 4之后,我们的构建失败,并出现以下消息:

buildTypeMatching已被删除。请使用buildTypes.<name>.fallbacks

我们的库有releasedebug buildType,但我们的应用程序有两个额外的buildType:'releaseWithLogs'和'debugMinified'。

我们应用程序 Gradle文件的片段:

android {
    // ...
    buildTypeMatching 'releaseWithLogs', 'release'
    buildTypeMatching 'debugMinified', 'debug'

    buildTypes {
        debug {
            // ...
        }
        debugMinified {
            // ...
        }
        release {
            // ...
        }
        releaseWithLogs {
            // ...
        }
    }
}
1个回答

26

经过一番调查,我们发现以下公告:Android Studio 3.0 Beta 4 已经发布。其中提到:

现在您可以使用matchingFallbacks(取代buildTypeMatchingproductFlavorMatching)为缺失的构建类型和风味提供后备方案。同时,使用missingDimensionStrategy(取代flavorSelection),您还可以为缺失的维度提供默认选择和后备方案。

因此,我们之前的应用程序 build.gradle 将转换为:

android {
    // ...
    //buildTypeMatching 'releaseWithLogs', 'release' // remove this
    //buildTypeMatching 'debugMinified', 'debug'     // remove this

    buildTypes {
        debug {
            // ...
        }
        debugMinified {
            // ...
            matchingFallbacks = ['debug']    // instead use this
        }
        release {
            // ...
        }
        releaseWithLogs {
            // ...
            matchingFallbacks = ['release']  // instead use this
        }
    }
}

注意,我们没有说 buildType releaseWithLogs 也将与 release 匹配( buildTypeMatching 'releaseWithLogs','release'),而是在buildType 本身中指定匹配。同样适用于 debugMinified 匹配 debug 。还要注意,没有必要将此包含在 release debug buildType 中,因为它们已经匹配。


1
文档中没有明确说明,但是 matchingFallbacks = ['...'] 是否需要作为 buildType 的最后一条指令呢?因为当我将其设置为第一条指令时,它并没有起作用。 - Eselfar
@Eselfar 我不这么认为。你能否打开一个新的问题,并提供更多信息,这样我可以尝试帮助你,并将链接作为评论粘贴在此处? - Xavier Rubio Jansana
@IgorGanapolsky 我并没有看到你提供的信息与此有关系。我猜你在 Stack Overflow 上搜索了一下,然后来到这里。你能否提供更多细节?或许开一个具体的问题,并引用这个答案会更好。 - Xavier Rubio Jansana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接