如何检测 gradle 项目是应用程序还是库?

Fun*_*her 5 groovy android android-studio gradle-plugin

我正在编写 Android Studio Gradle 插件,我需要做的事情之一是迭代项目并检测它们是否属于 Android 应用程序或库类型(或非 Android 项目,如通用 java 库)。

我尝试使用以下代码,但它无法正常工作(检测应用程序但不检测库):

import com.android.build.gradle.AppPlugin
import com.android.build.gradle.LibraryPlugin

...

public void getVariants(){
...
    def hasApp = p.plugins.withType(AppPlugin)
    def hasLib = p.plugins.withType(LibraryPlugin) 
    
    ...
}
Run Code Online (Sandbox Code Playgroud)

Groovy 脚本中是否还有其他正确的方法来检测项目是否属于类型库?

1st*_*ell 8

project.afterEvaluate {
    plugins.withId('com.android.application') {
        println("==> module application")
    }
    plugins.withId('com.android.library') {
        println("==> module library")
    }
    plugins.withId('java') {
        println("==> module pure java")
    }
}
Run Code Online (Sandbox Code Playgroud)