У меня есть проект и переход на зависимость gradle, но я обнаруживаю, что проблема связана с настройкой кинжала с помощью gradle, когда я скомпилирую его, отлично (или если я чистку), но если я попробую дважды, то это дает мне ошибку, например:
Ошибка: (13, 14) error: duplicate class: com.myapp.android.application.InjectingApplication $InjectingApplicationModule $$ ModuleAdapter
Я пытаюсь использовать плагин android-apt и настроен как в документации, но я все равно получаю ту же ошибку (https://bitbucket.org/hvisser/android-apt/overview)
Я также пытаюсь использовать предоставленную зависимость вместо этого, как в этом уроке (https://github.com/frankdu/android-gradle-dagger-tutorial), но пока не повезло.
Есть ли у вас какие-либо идеи по настройке кинжала и gradle?
ИЗМЕНИТЬ
My build.gradle выглядит так
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'
}
И мой верхний уровень build.gradle выглядит так
// 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()
}
}
ИЗМЕНИТЬ № 2:
Я попробовал с предоставленным снова, поскольку @Marco не повезло, я не знаю, есть ли библиотека или версия gradle, которые могут вызвать эту проблему, я в настоящее время использую 1.10. С яркой стороны я нашел способ заставить его работать, но я хотел бы сделать это, просто добавив предоставленное выражение. То, как я это делал, - это старый способ:
Определить конфигурацию apt
configurations {
apt
}
добавить компилятор Dagger lib
apt 'com.squareup.dagger:dagger-compiler:1.2.0'
И реализовать этот hook для applicationVariant, который, насколько я знаю, android-apt делает что-то подобное. Имеет ли это смысл? почему?
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()
}
}