0

私はandoirdannotationsをグラドルビルドプロセスに統合して、一般的なAndroidプロジェクトにしています。を追加してプロジェクトをビルドしようとするとapply plugin: 'androidannotations、次のエラーが発生します。

$ gradle clean

FAILURE: Build failed with an exception.

* What went wrong:
Main Manifest missing from /tmp/RunTest/src/main/AndroidManifest.xml

注(1): 一般的な Android プロジェクト構造を維持したい。注(2): androidannotations プラグインを使用せずに、このプロジェクトを正常にビルド/クリーンアップしました

build.gradle ファイル:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:0.3'
    classpath 'net.ealden.gradle.plugins:gradle-androidannotations-plugin:0.3.0'
  }
}
apply plugin: 'android'
apply plugin: 'androidannotations'


repositories {
  mavenCentral()
}


android {
    def target = 'android-21'
    def androidAnnotationsVersion = '2.7.1'
    sourceSets {
        main {
            manifest {
                srcFile 'AndroidManifest.xml'
            }
            java {
                srcDir 'src'
            }
            res {
                srcDir 'res'
            }
            assets {
                srcDir 'assets'
            }
            resources {
                srcDir 'src'
            }
        }
        test {
            java {
                srcDir 'tests/src'
            }
        }
    }
}

そのため、一般的な Android プロジェクト構造を維持しようとして救済し、プロジェクト ディレクトリ構造をここに記載されている構造に強制しました: http://tools.android.com/tech-docs/new-build-system/using- the-new-build-system .

予想通り、これで解決しました が、Main Manifest missing from /tmp/RunTest/src/main/AndroidManifest.xmlまだ喜びがありません。

今私は得ています:

MyBox:RunTest $ gradle clean
Download http://repo1.maven.org/maven2/net/ealden/gradle/plugins/gradle-androidannotations-plugin/0.3.0/gradle-androidannotations-plugin-0.3.0.pom
Download http://repo1.maven.org/maven2/org/gradle/api/plugins/gradle-android-plugin/1.1.0/gradle-android-plugin-1.1.0.pom
Download http://repo1.maven.org/maven2/net/ealden/gradle/plugins/gradle-androidannotations-plugin/0.3.0/gradle-androidannotations-plugin-0.3.0.jar
Download http://repo1.maven.org/maven2/org/gradle/api/plugins/gradle-android-plugin/1.1.0/gradle-android-plugin-1.1.0.jar

FAILURE: Build failed with an exception.

* What went wrong:
Cannot add task ':processTestResources' as a task with that name already exists.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 9.28 secs
4

4 に答える 4

2

Android アノテーションをプロジェクトに統合するには、プロジェクトの build.gradle に以下を追加します。

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        // other classpathes like gradle here, in my case
        classpath 'com.android.tools.build:gradle:1.1.0'

        // APT Dependency for annotation processing
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    }
}

次に、androidannotation をプラグインとして適用するのではなく、モジュールの build.gradle に「android-apt」を適用します。

// apply apt plugin from global gradle file
apply plugin: 'android-apt'

また、ビルド ファイルに以下を追加します。

// Tell apt where to find sources
apt {
    arguments {
        androidManifestFile variant.outputs[0].processResources.manifestFile

        // adjust the path to your module here
        resourcePackageName 'de.company.app'
    }
}

dependencies {
    // Android Anotations for clean and readable code
    apt "org.androidannotations:androidannotations:3.2"
    compile 'org.androidannotations:androidannotations-api:3.2'
}

その後、プロジェクトで Android アノテーションを使用できるようになります。Eclipse ベースのプロジェクト構造を維持するには、既に行ったようにフォルダーを調整できます。

android {
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}
于 2014-12-23T13:52:00.503 に答える
2

androidannotations プラグインは、作成しようとしているタスクと衝突する processTestResources タスクを作成する完全な Java gradle プラグインを適用するようです。

同じ名前を使用したのは残念ですが、Android プラグインを使用するプロジェクトに完全な Java プラグインを適用することは望ましくありません。android プラグインは、ベース Java プラグインのみを適用します (Java コンパイル タスクを作成する機能を提供しますが、完全な Java プラグインによって作成されるデフォルトのタスクは作成しません)。

正直に言うと、私たちのプラグインは通常の Java とは非常に異なることを行い、Java プロジェクトを拡張するためのプラグインは (まだ) Android プロジェクトでは動作しません。

最初に発生したエラーは、いくつかの例外がスローされたが、Gradle がそれを無視し、残りの DSL の評価をスキップして、ビルドを試行し続けたという問題のように見えます (ただし、再現に問題があります)。sourceSets の再マッピングがスキップされたため、マニフェストの場所が間違っています。

于 2013-03-13T01:16:30.550 に答える
1
  1. 間違った gradle android プラグイン (Google が開発した com.google.tools プラグイン) を使用しています。
  2. androidannotations プラグインは com.jvoegele.gradle.plugins.android プラグインを使用します。androidannotations プラグイン自体が取得するため、build.gradle に追加する必要はありません。
  3. gradle-android-plugin は整数ではないバージョンを理解できないため、ADT 21 以前を使用してください (1.2.2-SNAPSHOT は可能です)。
于 2013-04-30T21:03:00.150 に答える
0

例として、build.gradle ファイルを見ることができます。

https://github.com/ealden/android-annotations-idea-test/blob/master/build.gradle

于 2013-05-06T13:08:51.413 に答える