我创建了一个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,....]
这是项目架构的概要映像:
CommonPluginClass:
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
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
发布于 2022-12-03 13:55:00
我找到了解决方案,和往常一样,这是一个愚蠢的问题。
应用程序扩展使用插件
apply("com.android.application")
库或模块使用插件
apply("com.android.library")
https://stackoverflow.com/questions/74640407
复制相似问题