android 如何在自定义Gradle插件中访问LibraryExtension

llycmphe  于 2023-02-06  发布在  Android
关注(0)|答案(2)|浏览(136)

我想编写一个自定义的gradle插件,用于操作com.android.build.gradle.AppExtension或com. android. build. gradle. LibraryExtension。该插件的基本形式为:

class AndroidLibrary : Plugin<Project> {
   override fun apply(project: Project) {

      var lib: LibraryExtension = project.extensions.getByName("android")  as LibraryExtension
      lib.minSdkVersion = "26"
   }
}

问题是无法解析类LibraryExtension。该类包含在“com.android.tools.build:gradle:7.1.2”中。请注意,在gradle.build.kts脚本文件中访问这两个类都没有问题。我只是无法从如上所示的自定义插件中访问这两个类。我尝试com.android.tools.build在构建脚本中添加对www.example.com .gradle 7.1.2的依赖关系,但不起作用。我还尝试将其添加为buildscript依赖关系,我还获取了com.android.tools.build:gradle jar文件,并将其添加为依赖项,但这也不起作用。
在我看来,期望一个能够操纵Android构建设置的自定义插件是合理的,但我就是找不到一种方法来解决自定义插件项目中的LibraryExtension或AppExtension。
如果有人知道我需要做什么来解决这两个类,那将非常感谢。我目前的印象是,这是android的gradle插件的架构限制,我真的无法从自定义插件和dsl使用LibraryExtension或AppExtension访问“android”构建部分。如果是这样的话,知道这一点也会很有用。

igsr9ssn

igsr9ssn1#

检查这个answer为您的问题,它会解决您的问题。

myzjeezk

myzjeezk2#

最初我使用IDEA构建插件,我可以使用“gradlew build”命令构建项目,我注意到每当我尝试同步项目时,都会收到以下消息:

This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2020.1.1 or newer

自从我可以使用gradle命令成功构建项目以来,我一直忽略了这个问题。以下链接解释了该消息的含义:https://intellij-support.jetbrains.com/hc/en-us/community/posts/4405168877202-This-version-of-the-Android-Support-plugin-for-IntelliJ-IDEA-or-Android-Studio-cannot-open-this-project-please-retry-with-version-2020-3-1-or-newer-
解决这个问题的建议之一是在Android Studio中构建项目,而不是等待IDEA整合以后的Android构建版本。我这样做了,这确实解决了这个问题。额外的副作用是,我现在可以构建插件。我能够为gradleApi和com.android.build.gradle添加依赖项,并能够解决LibraryExtension的AppExtension。我在使用IDEA IDE时添加了相同的依赖项。我习惯于使用IDEA构建我的自定义gradle插件。这是我第一个要操作“android”构建配置的自定义gradle插件。

相关问题