有时候看到下面这种写法不知道什么意思,它其实就是一个PluginDependenciesSpec的扩展函数,我们在Android Studio中查看源码时会跳转到KotlinDependencyExtensionsKt.class中,但是找不到其源码文件,是因为该文件其实是编译时动态生成的,所以找不到源码。
plugins {
kotlin("android")
}
下面为通过StackOverflow找到的具体源码实现
/**
* Applies the given Kotlin plugin [module].
* For example: `plugins { kotlin("jvm") version "$embeddedKotlinVersion" }`
* Visit the [plugin portal](https://plugins.gradle.org/search?term=org.jetbrains.kotlin) to see the list of available plugins.
* @param module simple name of the Kotlin Gradle plugin module, for example "jvm", "android", "kapt", "plugin.allopen" etc...
*/
fun PluginDependenciesSpec.kotlin(module: String): PluginDependencySpec =
id("org.jetbrains.kotlin.${'$'}module")
通过源码发现,其实没有什么特别的,就是扩展封装了包了一层,和普通的id应用plugin没有区别,还有其他plugin也可以通过插件社区找到,下图为kotlin android插件在插件社区的说明。当然我们还可以搜到“kapt”,“jvm”等
参考: