在以下任何来源中均未找到插件 [id: 'dagger.hilt.android.plugin']

Has*_*cuk 67 android gradle android-studio gradle-kotlin-dsl dagger-hilt

当我想在我的项目中使用@AndroidEntryPoint(它是 hilt 的属性)时,我收到以下警告。

 Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (dagger.hilt.android.plugin)
Run Code Online (Sandbox Code Playgroud)

当我尝试将 id 'dagger.hilt.android.plugin' 添加到项目的模块级 build.gradle 文件中时,出现以下错误。

org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources:
Run Code Online (Sandbox Code Playgroud)

我尝试将其添加到项目模块级别的 build.gradle 文件中,如下所示。他们都给出了一个错误。

在此输入图像描述

我尝试将其作为类路径添加到项目级别的 build.gradle 文件中,在这种情况下我仍然收到错误。

在此输入图像描述

当我创建默认项目时,创建了一个settings.gradle结构,如下所示。这是我第一次使用这个版本。我的 Android Studio 版本 Android Studio - Bumblebee | 2021.1.1 金丝雀 13

在此输入图像描述

小智 132

我迟到了。由于用于在项目级别添加依赖项的新 Gradle 语法,我在 Android Studio Bumblebee 中也遇到了同样的问题。

要在项目级别添加 Dagger Hilt,您可以使用以下语法:

id 'com.google.dagger.hilt.android' version '2.41' apply false
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,最新版本是 2.41。它位于mavenCentral 存储库中。


Has*_*cuk 48

经过长时间的斗争,我解决了以下问题;

我在settings.gradle中添加了一个resolutionStrategy,如下所示。

 pluginManagement {
        repositories {...}
        plugins { ...}
     resolutionStrategy {
            eachPlugin {
                if( requested.id.id == 'dagger.hilt.android.plugin') {
                    useModule("com.google.dagger:hilt-android-gradle-plugin:2.39.1")
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后,当我将如下所示的 hilt 插件添加到模块级build.gradle文件中时,它已正确更新。

plugins{
...
id 'dagger.hilt.android.plugin'
}
Run Code Online (Sandbox Code Playgroud)

  • 但为什么?我还没有添加它,但仍然可以使用 Hilt。仅当我将 root `build.gradle` 转换为 `build.gradle.kts` 时,才会出现此错误(就我而言)。只是尝试一堆随机的东西并用一种巧合有效的随机方式粘贴到这里不会有助于错误的运行 (2认同)

Pra*_*een 23

用于添加dagger hilt到您的项目中。按着这些次序

将依赖项添加hilt到模块的build.gradle. 我假设你正在使用Kotlin,否则你必须使用annotationProcessor插件kapt

dependencies {
  //..
  implementation 'com.google.dagger:hilt-android:2.39.1'
  kapt 'com.google.dagger:hilt-compiler:2.39.1'
  //..
   }
Run Code Online (Sandbox Code Playgroud)

添加hilt gradle plugin到项目的build.gradle.

dependencies {
    //..
    classpath 'com.google.dagger:hilt-android-gradle-plugin:2.39.1'
  }
Run Code Online (Sandbox Code Playgroud)

应用kotlin-kapthilt插件到模块build.gradle

plugins {
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}
Run Code Online (Sandbox Code Playgroud)

  • 在 gradle 最新版本中,我不能像经典方法那样做到这一点。 (4认同)

Atu*_*pta 14

plugin{}根目录中的块build.gradle用于定义可应用于根目录build.gradle和所有(或部分)Gradle 子项目的 Gradle 插件。

使用插件块的一个警告是,它仅解析Gradle 插件门户中存在的插件(请参阅文档)或自定义 Maven 和 Ivy 插件存储库除了实际实现插件的工件之外还必须包含插件标记工件(请参阅文档))。对于 Android Gradle 插件和 Hilt 插件,他们尚未将这些插件发布到Gradle 插件门户,也没有发布其插件标记工件

由于上述缺少插件标记工件,您需要通过添加以下代码使用插件解析规则手动解析插件(settings.gradle是特定于 Hilt Gradle 插件的其他插件,您必须检查不同的内容requested.id.id

pluginManagement {
    repositories {
        // Your repo from where Gradle will search for Gradle plugins
    }
    plugins {
        // ...
    }
    resolutionStrategy {
        eachPlugin {
            if(requested.id.id == 'dagger.hilt.android.plugin') {
                    useModule("com.google.dagger:hilt-android-gradle-plugin:${requested.version}")
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)


Sam*_*der 11

我遇到了同样的问题,我解决了问题如下:

首先,将com.google.dagger.hilt.android插件添加到项目的根 build.gradle 文件中:

plugins {
    id 'com.android.application' version '7.2.0' apply false
    id 'com.android.library' version '7.2.0' apply false
    id 'com.google.dagger.hilt.android' version '2.42' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.0' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

然后,应用 Gradle 插件并在 app/build.gradle 文件中添加这些依赖项:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
    id 'com.google.dagger.hilt.android'
}

android {
    ....................
    // Enable java 8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {
    
    implementation 'com.google.dagger:hilt-android:2.38.1'
    kapt 'com.google.dagger:hilt-android-compiler:2.38.1'
  
}
Run Code Online (Sandbox Code Playgroud)


小智 7

只需将其添加到项目的根 build.gradle 文件中即可。

buildscript {
  repositories {
    // other repositories...
    mavenCentral()
  }
  dependencies {
    // other plugins...
    classpath 'com.google.dagger:hilt-android-gradle-plugin:2.40'
  }
}
Run Code Online (Sandbox Code Playgroud)