android 依赖代码修改,Gradle系列 (下篇) —在Android Library中依赖自定义Gradle插件并往class中注入代码...

本文介绍了如何在Android Library模块中应用自定义Gradle插件,解决在Library中使用插件时遇到的AppExtension不存在和Transforms作用范围问题,通过修改插件和配置,成功实现在Library的类中注入代码。
摘要由CSDN通过智能技术生成

在上一篇【Gradle系列(中篇)】中,我们已经完成了在自定义插件中对class文件代码的注入功能,只不过是在主项目app中使用自定义插件的,那么能不能在library中使用自定义插件呢?当然可以,这不是废话么,OK,那我们就来试一下,看看会不会踩坑~

首先,我们先来在项目中新建一个Android Library,名称暂且叫做“mylibrary”,如下:

8844e7392625

这里我新建了一个类叫做“ToastUtils”,包含了一个空方法showToasShort,后面我们就在showToasShort方法中注入一行代码,来弹出一个Toast提示。

Android Library已经创建好了,然后我们在app中去引用这个module,代码如下:

dependencies {

···

implementation project(':mylibrary')

···

}

之前我们依赖插件和传值是在app中进行的,也就是下面这段代码,现在我们从app的build.gradle中移除,然后放到mylibrary的build.gradle中(传值要对应修改)。

apply plugin: 'custom-gradle-plugin'

InjectCodeToClass {

className = "ToastUtils"//类名

packageName = "com.zhuyong.mylibrary"//类所在包名

methodName = "showToasShort"//方法名

injectCode = "android.widget.Toast.makeText(context,\"这是我在Library中插入的代码\",android.widget.Toast.LENGTH_SHORT).show();"//要注入的代码

}

接下来Sync一下,Build过程直接报错了,报错信息如下:

8844e7392625

我们重点看这几句:

Caused by: org.gradle.api.UnknownDomainObjectException: Extension of type 'AppExtension' does not exist. Currently registered extension types: [ExtraPropertiesExtension, DefaultArtifactPublicationSet, ReportingExtension, SourceSetContainer, JavaPluginExtension, NamedDomainObjectContainer, LibraryExtension]

其中 Extension of type 'AppExtension' does not exist.这句就是AppExtension类型不存在,后面的意思是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值