当你在Android studio中自定义插件时,往往会用到下面代码。
project.extensions.create("tinyPng", TinyPng::class.java)
//或者
project.tasks.create(
"tinyPng${variantName}",
TinyPngProcess::class.java
)
当你编译时可能会碰到下面的问题
遇到这问题时,很懵逼。一开始根本就没想到Kotlin Class与Java Class的区别。
解决方案也很简单,在TinyPng和TinyPngProcess类加上open关键字或者abstract。如下:
原因也很简单,那就是Kotlin创建的Class默认是final。如下:
加了open关键字
不加了open关键字
而当我们去create创建或者添加一个插件时,会走到如下代码:
发现无法实例化,也就报了如下错误。



