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.
Traté de agregarlo como un classpath al archivo build.gradle a nivel de proyecto, en este caso sigo recibiendo un error.
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
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
abuild.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 Kotlin
de 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
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
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 }