Enchufar [id: ‘dagger.hilt.android.plugin’] no se encontró en ninguna de las siguientes fuentes

7 minutos de lectura

Recibo la siguiente advertencia cuando quiero usar @AndroidEntryPoint, que es una propiedad de empuñadura en mi proyecto.

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

Cuando trato de agregar id ‘dagger.hilt.android.plugin’ al archivo de nivel de módulo build.gradle de mi proyecto, aparece el siguiente error.

org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources:

Traté de agregarlo al archivo build.gradle en el nivel de módulo del proyecto de la siguiente manera. Todos dan error.

ingrese la descripción de la imagen aquí

Traté de agregarlo como un classpath al archivo build.gradle a nivel de proyecto, en este caso sigo recibiendo un error.

ingrese la descripción de la imagen aquí

Cuando creé el proyecto predeterminado, se creó una estructura settings.gradle de la siguiente manera. Esta es la primera vez que uso esta compilación. Mi versión de Android Studio Android Studio – Bumblebee | 2021.1.1 Canarias 13

ingrese la descripción de la imagen aquí

Llego tarde a la respuesta. También enfrentaba el mismo problema en Android Studio Bumblebee debido a la nueva sintaxis de Gradle para agregar dependencias a nivel de proyecto.

Para agregar Dagger Hilt en el nivel de proyecto, puede usar la siguiente sintaxis:

id 'com.google.dagger.hilt.android' version '2.41' apply false

Al momento de escribir esto, la última versión es la 2.41. Está dentro repositorio mavenCentral.

  • Genial, se resolvió mi problema.

    – Duong.Nguyen

    26 de marzo a las 6:14

  • Esto resolvió mi problema también. Primero probé esto: id(“dagger.hilt.android.plugin”) y no funcionó. Gracias

    – CAM-Dev

    5 de mayo a las 18:55

  • El número de versión es importante. Inicialmente tenía ‘2.40.5’ y no funcionaba. Cambiarlo a ‘2.41’ lo resolvió.

    – yaugenka

    7 de mayo a las 13:31

Después de una larga lucha, resolví el problema de la siguiente manera;

agregué un resoluciónEstrategia a configuración.gradle como a continuación.

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

Luego, cuando agregué el complemento de empuñadura como se muestra a continuación al nivel del módulo construir.gradle archivo, se actualizó correctamente.

plugins{
...
id 'dagger.hilt.android.plugin'
}

  • ¿Pero por qué? No lo he agregado y todavía puedo usar Hilt. Este error solo viene (en mi caso) cuando convierto root build.gradle a build.gradle.kts. Simplemente probar un montón de cosas aleatorias y pegarlas aquí con una forma aleatoria que coincidió que funcionó no ayudará en una ejecución incorrecta.

    – AndroidEngineX

    2 ene a las 10:34

  • @AtulGupta en mi caso, la última versión de gradle estaba haciendo definiciones en settings.gradle. Dado que classpath no se puede proporcionar en settings.gradle como build.gradle a nivel de proyecto, lo resolví con este método.

    – Hasan Kucuk

    2 de enero a las 11:17

  • Sí, de acuerdo… Que esta secuencia de cadenas en particular definitivamente resolvió su problema, pero claramente no explica la causa principal

    – AndroidEngineX

    2 de enero a las 12:57

  • También he agregado mi respuesta, lo que explica por qué se requiere esta configuración.

    – AndroidEngineX

    2 de enero a las 13:17

  • ¡Muchas gracias! He pasado las últimas 2 horas tratando de hacer que la dependencia funcione. ¡Tu solución funcionó perfectamente! 🙂

    – Óliver

    27 abr a las 9:10

Para añadir dagger hilt a tu proyecto. Sigue estos pasos

Agregar hilt dependencias a su módulo build.gradle. Supongo que estás usando Kotlinde lo contrario tienes que usar annotationProcessor en lugar de kapt enchufar.

dependencies {
  //..
  implementation 'com.google.dagger:hilt-android:2.39.1'
  kapt 'com.google.dagger:hilt-compiler:2.39.1'
  //..
   }

Agregar hilt gradle plugin al proyecto build.gradle.

dependencies {
    //..
    classpath 'com.google.dagger:hilt-android-gradle-plugin:2.39.1'
  }

Aplicar kotlin-kapt y hilt complementos al módulo build.gradle

plugins {
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

  • En la última versión de Gradle, no puedo hacer esto como el método clásico.

    – Hasan Kucuk

    10 oct 2021 a las 9:27

  • Qué versión estás usando?

    – Praveen

    10 oct 2021 a las 13:20

  • ¿Estás seguro de que la versión 2.39.1 de dagger hilt está realmente disponible? al momento de escribir este comentario 2.31-alpha está disponible.

    – Gopal Singh Sirvi

    2 de febrero a las 7:54


  • @GopalSinghSirvi Actualmente, la última versión de la empuñadura es 2.40.5 que se lanzó el 7 de diciembre de 2021. github.com/google/dagger/releases/tag/dagger-2.40.5

    – Praveen

    2 de febrero a las 8:40

plugin{} bloque en la raiz build.gradle se utiliza para definir los complementos de Gradle que se pueden aplicar a la raíz build.gradle y todos (o algunos) los subproyectos de Gradle.

El único advertencia de usar el bloque de complementos es que solo resuelve el complemento que está presente en el Portal de complementos de Gradle(ver doc) o los repositorios de complementos Maven e Ivy personalizados deben contener artefactos de marcador de complemento además de los artefactos que realmente implementan el complemento (ver doc). En el caso del complemento Android Gradle y el complemento Hilt, no han publicado esos complementos para Portal de complementos de Gradle y tampoco han publicado su Artefactos de marcador de complemento

Debido a la falta anterior Artefactos de marcador de complemento necesita resolver manualmente el complemento usando Reglas de resolución de complementos a settings.gradle agregando el siguiente código (esto es específico del complemento Hilt Gradle para otros, debe verificar diferentes contra 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}")
            }
        }
    }
}

Solo necesita agregar esto al archivo root build.gradle del proyecto.

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

  • Esta es la solución correcta, sin necesidad de todas las cosas que AndroidEngineX le dice. Los documentos están aquí. dagger.dev/hilt/gradle-setup.html

    – D76X

    12 de enero a las 7:39

  • @ D76X Esta es una forma más antigua de hacerlo. En el último estudio de Android, debe hacerlo usando la forma en que AndroidEngineX y otros han sugerido.

    -Chirag Savsani

    4 de febrero a las 12:33

Avatar de usuario de Samad Talukder
Samad Talukder

Enfrenté el mismo problema, resolví el problema de la siguiente manera:

Primero, agregue el com.google.dagger.hilt.android complemento para el archivo root build.gradle de su proyecto:

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
}

Luego, aplique el complemento Gradle y agregue estas dependencias en su archivo 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'
  
}

  • Esta es la solución correcta, sin necesidad de todas las cosas que AndroidEngineX le dice. Los documentos están aquí. dagger.dev/hilt/gradle-setup.html

    – D76X

    12 de enero a las 7:39

  • @ D76X Esta es una forma más antigua de hacerlo. En el último estudio de Android, debe hacerlo usando la forma en que AndroidEngineX y otros han sugerido.

    -Chirag Savsani

    4 de febrero a las 12:33

Avatar de usuario de Mohammad Muddasir
Mohammad Muddasir

usa esta configuración en gradle root

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

       task clean(type: Delete) {
        delete rootProject.buildDir
         }

y en el segundo archivo gradle

   plugins {    id 'com.android.application'    id 
   'org.jetbrains.kotlin.android'    id 'kotlin-kapt'    id 
   'com.google.dagger.hilt.android' }
   android {    compileSdk 32
   defaultConfig {
   applicationId "com.example.hilttest"
   minSdk 21
   targetSdk 32
   versionCode 1
   versionName "1.0"

   testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }
   buildTypes {
   release {
       minifyEnabled false
       proguardFiles getDefaultProguardFile('proguard-android- 
   optimize.txt'),    'proguard-rules.pro'
   }    }    compileOptions {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8    }    kotlinOptions {
   jvmTarget="1.8"    } }
   dependencies {
   implementation 'androidx.core:core-ktx:1.7.0'    implementation 
   'androidx.appcompat:appcompat:1.4.1'    implementation 
     `enter code here`'com.google.android.material:material:1.6.0'    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'    testImplementation 'junit:junit:4.13.2'    androidTestImplementation 'androidx.test.ext:junit:1.1.3'    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'    implementation 'com.google.dagger:hilt-android:2.42'    kapt 'com.google.dagger:hilt-compiler:2.42'
   // For instrumentation tests    androidTestImplementation  'com.google.dagger:hilt-android-testing:2.42'    kaptAndroidTest 'com.google.dagger:hilt-compiler:2.42'
   // For local unit tests    testImplementation 'com.google.dagger:hilt-android-testing:2.42'    kaptTest 'com.google.dagger:hilt-compiler:2.42' } kapt {    correctErrorTypes = true }

¿Ha sido útil esta solución?