获取Android项目构建源头Task

获取Android项目构建源头Task,第1张

概述一、背景项目开发中,有时候我们需要获取到Gradle源头Task,以做进一步的逻辑处理。如项目中存在多个组合变体的情况下,需要针对其中特定变体引入不同的plugin。这可能是基于如下考虑:1,如若所有变体都引入并集后的plugin,在逻辑上对某些变体确实是没必要的;2,如若plugin中如果有复杂的 一、背景

项目开发中,有时候我们需要获取到Gradle源头Task,以做进一步的逻辑处理。如项目中存在多个组合变体的情况下,需要针对其中特定变体引入不同的plugin。这可能是基于如下考虑:

1,如若所有变体都引入并集后的plugin,在逻辑上对某些变体确实是没必要的;
2,如若plugin中如果有复杂的逻辑,如其中涉及到tranform等,会导致不需要的变体代码逻辑出现问题;3,如若plugin涉及到配置信息,如华为推送服务接入时,需要针对变体单独配置文件agconnect-services.Json。所有变体组合都配置的话,需要新建很多新的不必要的变体目录,且对应申请产生各自的配置文件配置,比较麻烦。如若不然,则其他变体构建时,没法构建通过(因为不存在配置文件,且未提供开关设置)。

在复杂的项目现实需求中,类似上述的需求是可能存在的。此时,通过获取到源头Task,即可做好逻辑区分。


二、获取方式

Gradle API 实际上为我们提供了获取源头task信息的接口,具体调用路径为:

project.getGradle().getStartParameter()复制代码

获取到的StartParameter实例对应的是Gradle命令行选项及配置信息。进一步的,我们可以通过其提供的与Task相关的接口,如getTasknames()getTaskRequests()等获取到源头Task的信息。

最终,总体逻辑区分类似如下:

if (project.getGradle().getStartParameter().getTasknames().contains("DeBUGVip")) {    apply plugin: xxxxx    ....} else {    ....}复制代码

三、结语

Gradle/AGP 虽然只是AndroID项目开发的构件工具,但是事实上已经成为了我们项目开发中必不可少的一部分。通过Gradle/AGP提供给我们的丰富的接口能力,可以满足很多通常情况下不太好处理,但却能借此,很有技巧性的去处理好现实中的问题。


作者:HappyCorn
链接:https://juejin.im/post/5ed22562e51d457890602b96
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 总结

以上是内存溢出为你收集整理的获取Android项目构建源头Task全部内容,希望文章能够帮你解决获取Android项目构建源头Task所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1061406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存