number last google dagger2 compiler annotationprocessor android gradle dagger

android - last - Cómo configurar dagger+gradle



dagger2 gradle (3)

Tengo un proyecto y migro a la dependencia de Gradle, pero me encuentro con un problema al intentar instalar Dagger con Gradle. La primera vez que compilo funciona perfectamente (o si limpio), pero si lo intento dos veces me da un error como :

Error: (13, 14) error: clase duplicada: com.myapp.android.application.InjectingApplication $ InjectingApplicationModule $$ ModuleAdapter

Intento usar el complemento de android-apt y lo he configurado como en la documentación, pero sigo recibiendo el mismo error ( https://bitbucket.org/hvisser/android-apt/overview )

También trato de usar la dependencia provista en lugar de este tutorial ( https://github.com/frankdu/android-gradle-dagger-tutorial ) de compilación pero no hay suerte hasta ahora.

¿Tienes alguna idea de cómo configurar dagger y gradle?

EDITAR

Mi build.gradle se parece a esto

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 de build.gradle se ve así

// 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() } }

EDICIÓN # 2:

Lo intenté nuevamente, ya que @Marco sugirió que no hubo suerte, no sé si hay una biblioteca o una versión de gradle que pueda estar causando este problema, actualmente estoy usando 1.10. En el lado positivo encontré una manera de hacer que funcionara, pero me encantaría hacerlo simplemente agregando la declaración provista. La forma en que lo hice es la forma antigua:

Definir la configuración de apt

configurations { apt }

añadir lib compilador lib

apt ''com.squareup.dagger:dagger-compiler:1.2.0''

E implemente este enlace 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() } }


Actualizar el complemento de Gradle a (root / gradle) classpath ''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''


Es un trabajo para mi.

Paso 1:
Añade este código a tu 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 puedes agregar este código a tu app/build.gradle ( src/main/java es tu carpeta de código central del proyecto)

sourceSets.main { java.srcDirs = [''src/main/java'', ''gen''] }


Estoy usando daga en este ejemplo de ejemplos de volley . No tengo ningún problema con Dagger y estoy incluyendo el compilador usando:

provided ''com.squareup.dagger:dagger-compiler:1.2.1''