前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API ‘variant.getAssemble()‘ is obsolete and has been replaced with ‘variant.getAssembleProvider()‘

API ‘variant.getAssemble()‘ is obsolete and has been replaced with ‘variant.getAssembleProvider()‘

作者头像
他叫自己MR.张
发布2023-04-27 15:04:53
6270
发布2023-04-27 15:04:53
举报
文章被收录于专栏:Android必知必会Android必知必会

Warning 日志

最近在做Android工程的架构升级,每次同步工程()都会报下面的告警信息:

  • API ‘variant.getAssemble()’ is obsolete and has been replaced with ‘variant.getAssembleProvider()’
  • 警告:'variant.getJavaCompile()‘接口已过时,请替换为’variant.getJavaCompileProvider()’
  • Android Studio 更新后:获取 API ‘variant.getAssemble()’ 已过时,已替换为 ‘variant.getAssembleProvider()’

查了一下资料,有部分让降级 Gradle 版本的,还有关闭告警信息的,但考虑到以后的升级,还是适配一下比较稳妥,我们不应该把风险转嫁给未来。

原因

告警信息其实已经非常明确了,variantgetAssemble() 方法已启用,Gradle 官方希望我们使用它的替代方法 getAssembleProvider()

至于如何查找使用 getAssemble() 方法的地方,需要全局搜索一下:

  1. getAssemble
  2. assemble

通常大家使用到此方法的地方是应用 module 内的 build.gradle 里:

代码语言:javascript
复制
android {
	variant.outputs.all { output ->
        variant.assemble.doLast {
            //....
        }
    }
}

可以看到 variant.assemble,不是告警信息里的 variant.getAssemble() ,这是 Gradle 使用的 Groovy 语言的特性造成的。

解决方案

假设旧的使用方式是:

代码语言:javascript
复制
variant.outputs.all { output ->
        variant.assemble.doLast {
            //....
        }
    }
}

把上述代码替换为(内含 2 种修改方法):

代码语言:javascript
复制
variant.outputs.all { output ->
    variant.getAssembleProvider().configure() {
        it.doLast { 
            //....
        }
    }
}
//或者
variant.outputs.all { output ->
        variant.assembleProvider.get().doLast {
            //....
        }
    }
}

根据自己的喜欢,可以选择上述修改方法之一。


本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Warning 日志
  • 原因
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com