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

dgenwo3n  于 2022-09-21  发布在  其他
关注(0)|答案(2)|浏览(155)

我正在编写一个Android Studio Gradle插件,我需要做的一件事是迭代项目,并检测它们是否属于Android应用程序或库(或像普通Java库那样的非Android项目)。

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

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) 

    ...
}

在Groovy脚本中,有没有其他合适的方法来检测项目的类型库?

arknldoa

arknldoa1#

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")
    }
}
mspsb9vt

mspsb9vt2#

我定义了一个flavor.gradle,它将被导入到应用程序和库模块中。我只需要添加应用程序风格的应用程序SuffixID。所以我就这样做了。

def isApplication = plugins.hasPlugin("com.android.application")

android {

    flavorDimensions "version"

    productFlavors {
        dev {
            dimension "version"
            if (isApplication) {
                applicationIdSuffix ".dev"
            }
        }
        qa {
            dimension "version"
            if (isApplication) {
                applicationIdSuffix ".qa"
            }
        }
        beta {
            dimension "version"
            if (isApplication) {
                applicationIdSuffix ".beta"
            }
        }
        prod {
            dimension "version"
        }
    }
}

相关问题