gpt4 book ai didi

android - 'LibraryExtension' 类型的扩展不存在

转载 作者:行者123 更新时间:2023-12-05 04:19:55 26 4
gpt4 key购买 nike

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

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,....]

这是项目架构的概要图:
enter image description here

通用插件类:

    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
}

}
}

调用configure
时,androidConfig函数内部发生错误我的灵感来自 now android , dependencies 和 imports 相似但不构建。有人可以解锁它吗?

构建逻辑:约定build.gradle

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

最佳答案

我找到了解决方案,但和往常一样,这是一件愚蠢的事情。
应用扩展使用插件

apply("com.android.application")

库或模块使用插件

apply("com.android.library")

关于android - 'LibraryExtension' 类型的扩展不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74640407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com