You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发MVVM IDE模板时调用applyPlugin添加Hilt插件报错求助

问题:Android IDE模板开发中添加Hilt插件报错的解决方法

问题背景

我正在开发一款MVVM架构的IDE模板,用于生成各类样板代码,目前已实现Activity、ViewModel及所需布局文件的生成。现在尝试向build.gradle文件中添加插件和依赖:

  • 添加依赖操作正常执行:
addDependency("com.google.dagger:hilt-android:2.44")

但调用以下代码添加插件时出现错误:

applyPlugin("dagger.hilt.android.plugin")

报错信息

java.lang.NoSuchMethodError: 'void com.android.tools.idea.wizard.template.RecipeExecutor.applyPlugin(java.lang.String)'
    at other.activity.VLibraryActivityRecipeKt.VLibraryActivityRecipe(VLibraryActivityRecipe.kt:173)
    at other.activity.VLibraryActivityTemplateKt$VLibraryActivityTemplate$1$2.invoke(VLibraryActivityTemplate.kt:104)
    at other.activity.VLibraryActivityTemplateKt$VLibraryActivityTemplate$1$2.invoke(VLibraryActivityTemplate.kt)
    at com.android.tools.idea.npw.model.NewTemplateRendererKt$doRender$1.run(NewTemplateRenderer.kt:98)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:150)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:947)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:148)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:184)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:157)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$run$0(WriteCommandAction.java:128)
    at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
    at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)

相关代码片段

RecipeExecutor接口定义

package com.android.tools.idea.wizard.template

public interface RecipeExecutor {
    public abstract fun addClasspathDependency(mavenCoordinate: kotlin.String, minRev: kotlin.String? /* = compiled code */): kotlin.Unit

    public abstract fun addDependency(mavenCoordinate: kotlin.String, configuration: kotlin.String /* = compiled code */, minRev: kotlin.String? /* = compiled code */, moduleDir: java.io.File? /* = compiled code */, toBase: kotlin.Boolean /* = compiled code */): kotlin.Unit

    // 省略其他方法...
    public abstract fun applyPlugin(plugin: kotlin.String): kotlin.Unit
    // 省略其他方法...
}

LibraryActivityRecipe.kt核心代码

// ...(省略其他代码)

    applyPlugin("kotlin-kapt")
    addDependency("com.android.support:support-media-compat:${appCompatVersion}.+")
    addDependency("com.google.dagger:hilt-android:2.44")

// ...(省略其他代码)

解决方法

1. 核心原因

报错的本质是:你在接口中定义的applyPlugin方法,当前Android Studio的模板API实现中并没有提供该方法的具体逻辑,导致运行时找不到对应实现。

2. 正确的插件添加方式

放弃直接调用applyPlugin,改为直接操作build.gradle文件,同时完整配置Hilt所需的依赖:

步骤1:添加项目级Hilt插件classpath依赖

首先需要在项目根目录的build.gradle中添加Hilt插件的classpath:

addClasspathDependency("com.google.dagger:hilt-android-gradle-plugin:2.44")

步骤2:修改模块级build.gradle添加插件

直接读取并修改模块的build.gradle文件,插入Hilt插件和kotlin-kapt的声明:

val moduleBuildGradle = moduleData.moduleDir.resolve("build.gradle")
var buildContent = moduleBuildGradle.readText()

// 插入Hilt插件和kotlin-kapt到plugins块中
if (!buildContent.contains("dagger.hilt.android.plugin")) {
    buildContent = buildContent.replace(
        Regex("plugins\\s*\\{([^}]+)\\}"),
        """plugins {
$1
    id 'dagger.hilt.android.plugin'
    id 'kotlin-kapt'
}"""
    )
}

// 保存修改后的文件
save(buildContent, moduleBuildGradle)

步骤3:添加Hilt注解处理器依赖

Hilt需要注解处理器支持,需添加对应的kapt依赖:

addDependency("com.google.dagger:hilt-android-compiler:2.44", configuration = "kapt")

3. 完整的Hilt配置代码示例

将上述步骤整合到你的Recipe中:

// ...(省略原有代码)

// 1. 添加项目级Hilt插件classpath
addClasspathDependency("com.google.dagger:hilt-android-gradle-plugin:2.44")

// 2. 修改模块build.gradle添加插件
val moduleBuildGradle = moduleData.moduleDir.resolve("build.gradle")
var buildContent = moduleBuildGradle.readText()

if (!buildContent.contains("dagger.hilt.android.plugin")) {
    buildContent = buildContent.replace(
        Regex("plugins\\s*\\{([^}]+)\\}"),
        """plugins {
$1
    id 'dagger.hilt.android.plugin'
    id 'kotlin-kapt'
}"""
    )
}
save(buildContent, moduleBuildGradle)

// 3. 添加Hilt相关依赖
addDependency("com.google.dagger:hilt-android:2.44")
addDependency("com.google.dagger:hilt-android-compiler:2.44", configuration = "kapt")
addDependency("com.android.support:support-media-compat:${appCompatVersion}.+")

// ...(省略原有代码)

内容的提问来源于stack exchange,提问作者Muhammad Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:30:50