Cómo configurar dagger + gradle
Tengo un proyecto y la migración a la dependencia gradle, pero me encuentro con un problema tratando de configurar la daga con gradle, la primera vez que compilar funciona perfectamente (o si limpio), pero si lo intento dos veces, entonces me da error como :
Error: (13, 14) error: duplicate class: com.myapp.android.application.InjectingApplication $ InjectingApplicationModule $$ ModuleAdapter
- Error: Tiempo de espera esperando para bloquear caché de clase buildscript para el archivo de construcción cuando cambia minSdkVersion
- Android Gradle Adición de biblioteca estática
- Cómo configurar los sabores para android gradle proyecto? Misterioso error de clase duplicado
- Android / gradle: no puede utilizar el repositorio
- Dagger 2 y Android Data Binding conflict
Intento usar el complemento de android-apt y configurado como en la documentación pero todavía consigo el mismo error ( https://bitbucket.org/hvisser/android-apt/overview )
También intento usar dependencia proporcionada en lugar como en este tutorial ( https://github.com/frankdu/android-gradle-dagger-tutorial ) de compilar pero ninguna suerte hasta ahora.
¿Tienes alguna idea de cómo configurar la daga y gradle?
EDITAR
Mi build.gradle se ve así
apply plugin: 'android' apply plugin: 'android-apt' android { compileSdkVersion 19 buildToolsVersion "19.0.2" defaultConfig { minSdkVersion 9 targetSdkVersion 19 packageName "com.myapp.android" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile project(':volley') apt 'com.squareup.dagger:dagger-compiler:1.2.0' compile 'com.squareup.dagger:dagger:1.2.0' }
Y mi nivel superior build.gradle se parece a esto
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2' } } allprojects { repositories { mavenCentral() } }
EDIT # 2:
Intenté con proporcionado otra vez como @Marco sugirió ninguna suerte, no sé si hay una biblioteca o una versión de gradle que podría causar este problema, estoy utilizando actualmente 1.10. En el lado brillante he encontrado una manera de hacerlo funcionar, pero me encantaría hacerlo con sólo añadir la declaración proporcionada. La forma en que lo hice es la vieja manera:
Definir configuración apt
configurations { apt }
Add Dagger compilador lib
apt 'com.squareup.dagger:dagger-compiler:1.2.0'
Y poner en práctica este gancho a applicationVariant que por lo que sé android-apt hace algo similar. ¿Esto tiene sentido? ¿por qué?
def getSourceSetName(variant) { return new File(variant.dirName).getName(); } android.applicationVariants.each { variant -> def aptOutputDir = project.file("build/source/apt") def aptOutput = new File(aptOutputDir, variant.dirName) android.sourceSets[getSourceSetName(variant)].java.srcDirs+= aptOutput.getPath() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-s', aptOutput ] variant.javaCompile.source = variant.javaCompile.source.filter { p -> return !p.getPath().startsWith(aptOutputDir.getPath()) } variant.javaCompile.doFirst { aptOutput.mkdirs() } }
- ¿Cómo copiar o usar bibliotecas nativas con Android Studio Gradle?
- Android: cómo establecer un valor de gradle de un enum conocido
- Rebuild necesario después de cambiar los archivos de diseño xml en Android Studio
- Las dependencias de build.gradle se actualizan automáticamente
- Intellij Idea log GradleConnectionException: No se pudo ejecutar la compilación usando la instalación de Gradle mientras se construye
- Dependencias de Gradle no importadas en el proyecto de biblioteca
- React-native: La compilación falló con una excepción
- ¿Cómo hacer que runProguard funcione para el plugin Gradle de android-library?
Estoy usando daga en esta muestra Volley Ejemplos . No estoy experimentando ningún problema con la daga y estoy incluyendo el compilador usando:
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
Es trabajo para mí.
Paso 1:
Añadir este código a usted build.gradle
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
Paso 2:
Agregue la carpeta de código fuente app/gen
a su proyecto. Así que puede agregar este código a usted app/build.gradle
( src/main/java
es la carpeta de código del proyecto principal)
sourceSets.main { java.srcDirs = ['src/main/java', 'gen'] }
Actualizar el complemento de Gradle a (classpath de raíz / gradle) 'com.android.tools.build:gradle:2.2.0'
App / gradle
compile 'com.google.dagger:dagger:2.4' annotationProcessor 'com.google.dagger:dagger-compiler:2.4'
- Obtener la altura de la pantalla en Android
- ¿Esta advertencia es causada por mi aplicación? – "Las intenciones implícitas con startService no son seguras"