我正在将graoannotations和gradle构建过程集成到一个通用的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
答案 0 :(得分:2)
看起来androidannotations插件应用了完整的Java gradle插件,该插件创建了一个与我们尝试创建的任务相冲突的processTestResources任务。
不幸的是我们使用了相同的名称,但实际上你并不想使用android插件将完整的Java插件应用于项目。 android插件只应用基础Java插件(它提供了创建Java编译任务的能力,但不创建完整Java插件创建的默认插件)。
老实说,我们的插件与常规Java的工作方式非常不同,而用于扩展Java项目的插件在Android项目中也不会起作用。(/ p>
你遇到的第一个错误看起来像是我们遇到过的问题(但很难再现),其中抛出了一些异常,但是Gradle忽略了它,跳过评估DSL的其余部分,并继续尝试构建。由于跳过了sourceSets重新映射,因此它正在寻找Manifest的错误位置。
答案 1 :(得分:2)
要将Android Annotations集成到您的项目中,请将以下内容添加到项目的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不作为插件应用但是' android-apt'在你的模块的build.gradle
中// 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 Annotations。 要保持基于eclipse的项目结构,您可以像以前一样调整文件夹:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
答案 2 :(得分:1)
答案 3 :(得分:0)
作为示例,您可以查看
中的build.gradle文件https://github.com/ealden/android-annotations-idea-test/blob/master/build.gradle