1

我已将 Eclipse Android 项目导入 Android Studio,但无法编译并出现以下错误:

Error:(7, 8) error: duplicate class: com.company.fragment.PrimaryFragment$$ViewInjector

我试过添加 apt 插件:

   apply plugin: 'android'
    apply plugin: 'apt'

    android {
        compileSdkVersion 19
        buildToolsVersion "20.0.0"

        defaultConfig {

            minSdkVersion 15
            targetSdkVersion 19
        }

        buildTypes {
            release {
                runProguard false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }

        lintOptions {
            disable 'InvalidPackage'
        }

        packagingOptions {
            exclude 'META-INF/services/javax.annotation.processing.Processor'
        }
    }


dependencies {
    compile project(':library')
    compile 'com.android.support:support-v4:+'
    apt "com.jakewharton:butterknife:5.1.1"
    compile 'com.jakewharton:butterknife:5.1.1'

}

我认为这与Butterknife 有关。但是当我用它做一个干净的项目时,一切都很好。

4

2 回答 2

3

如果您的构建目录中仍然有来自 eclipse 的目标/构建文件夹,那么删除这些文件夹可能是个好主意。

Project -> Clean 下的清理项目也可能会有所帮助。

此外,如果您从命令行运行 maven 或 gradle,最好运行:

maven clean

或者

gradle clean
于 2014-07-04T07:12:16.433 回答
2

您不需要 theaptcompile依赖项,只需要compile依赖项。

通过两次,注释处理器运行两次(具有两个不同的输出目录),这意味着生成的类被创建了两次。您看到的错误是因为为您的PrimaryFragment.

只有将apt运行时与注释处理器(有时称为编译器)分开的库才需要范围(和插件)。这方面的一个例子是 Dagger ,它有一个daggerdagger-compiler

于 2014-07-04T07:40:00.777 回答