首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“LibraryExtension”类型的扩展不存在

“LibraryExtension”类型的扩展不存在
EN

Stack Overflow用户
提问于 2022-12-01 10:29:07
回答 1查看 44关注 0票数 0

我创建了一个gradle插件来统一应用程序的各个模块之间的一些设置。错误的摘要如下:

代码语言:javascript
运行
复制
org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'common.plugin']
Caused by: org.gradle.api.UnknownDomainObjectException: Extension of type 'LibraryExtension' does not exist. Currently registered extension types: [ExtraPropertiesExtension,....]

这是项目架构的概要映像:

CommonPluginClass:

代码语言:javascript
运行
复制
    class CommonPluginClass : Plugin<Project> {

    private val consumerProguardFileName = "consumer-rules.pro"
    private val proguardFileName = "proguard-rules.pro"
    private val sdkToCompile = 33

    override fun apply(project: Project) {
        println(">>> Adding sugar to gradle files!")
        with(project)
        {
            applyPlugins(this)
            androidConfig(this)
        }
        println(">>> Sugar added for core Module!")
    }

    private fun applyPlugins(project: Project) {
        println(">>> apply plugins!")
        project.pluginManager.run {
            apply("com.android.application")
            apply("kotlin-android")
            apply("kotlin-kapt")
        }
        println(">>> end apply plugins!")
    }

    private fun androidConfig(project: Project) {
        project.extensions.configure<LibraryExtension>{
                defaultConfig.targetSdk = 33
        }

    }
 }

当调用androidConfig函数时,configure函数内部发生错误

我受到现在android的启发,依赖关系和导入是相似的,但不是构建的。有人能把它打开吗。

构建逻辑:约定build.gradle

代码语言:javascript
运行
复制
plugins {
    alias(libs.plugins.kotlin.jvm) apply false
    id "org.gradle.kotlin.kotlin-dsl" version "2.4.1"
}

dependencies {
    compileOnly(libs.android.pluginGradle)
    compileOnly(libs.kotlin.pluginGradle)
}

gradlePlugin {
    plugins {
        commonPlugin {
            id = "common.plugin"
            implementationClass = "CommonPluginClass"
        }
    }
}

很少更新:

我注意到,我输入的任何模块都会将其标识为ApplicationExtension

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-03 13:55:00

我找到了解决方案,和往常一样,这是一个愚蠢的问题。

应用程序扩展使用插件

代码语言:javascript
运行
复制
apply("com.android.application")

库或模块使用插件

代码语言:javascript
运行
复制
apply("com.android.library")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档