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'

}

これはバターナイフと関係があると思います。しかし、それを使用してクリーンなプロジェクトを作成すると、すべて問題ありません。

4

2 に答える 2

3

ビルド ディレクトリに eclipse のターゲット/ビルド フォルダーがまだある場合は、それらを削除することをお勧めします。

Project -> Clean の下のプロジェクトをクリーニングすることも役立つかもしれません。

また、コマンド ラインから maven または gradle を実行している場合は、次を実行することをお勧めします。

maven clean

また

gradle clean
于 2014-07-04T07:12:16.433 に答える
2

aptと依存関係の両方は必要compileなく、依存関係のみが必要compileです。

2 回実行すると、アノテーション プロセッサが 2 回 (2 つの異なる出力ディレクトリで) 実行されます。つまり、生成されたクラスが 2 回作成されます。表示されているエラーは、 に対して生成されている 2 つの同一のクラスがあるためですPrimaryFragment

スコープ (およびプラグイン) は、aptランタイムをアノテーション プロセッサ (コンパイラと呼ばれることもあります) から分離するライブラリにのみ必要です。この例は、daggerとを持つ短剣dagger-compilerです。

于 2014-07-04T07:40:00.777 に答える