无法使用AndroidAnnotations库在AndroidStudio中创build项目

我已经看了几个关于在Android Studio中使用AndroidAnnotations框架编译Android应用程序的讨论和博客,但是没有一个帮助我开始。

我正在使用Android Studio 0.8.9,并且指向下载的Gradle 2.1二进制文件。 我正在使用Ubuntu 14.04。

Gradle编译过程说,我在给定的位置(请参见下面的输出)丢失了一个AndroidManifest.xml的副本,虽然我find它时,我的文件浏览器导航到这个文件夹。

另请注意,为了删除警告,我取而代之

variant.processResources.manifestFile 

通过

 variant.outputs.processResources.manifestFile 

gradle脚本中。

在这里我的gradle构build脚本:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.13.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.3' } } apply plugin: 'android' repositories { mavenCentral() } configurations { apt } dependencies { compile fileTree(include: '*.jar', dir: 'libs') compile files('libs/androidsvg-1.2.1.jar') compile 'com.android.support:appcompat-v7:20.0.0' compile 'org.androidannotations:androidannotations-api:3.0' apt 'org.androidannotations:androidannotations:3.0' } android { compileSdkVersion 20 buildToolsVersion "20.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 20 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } // Move the tests to tests/java, tests/res, etc... instrumentTest.setRoot('tests') // Move the build types to build-types/<type> // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... // This moves them out of them default location under src/<type>/... which would // conflict with src/ being used by the main source set. // Adding new build types or product flavors should be accompanied // by a similar customization. debug.setRoot('build-types/debug') release.setRoot('build-types/release') } } def getSourceSetName(variant) { return new File(variant.dirName).getName(); } android.applicationVariants.all { variant -> def aptOutputDir = project.file("${project.buildDir}/source/apt/") def aptOutput = new File(aptOutputDir, variant.dirName) println "****************************" println "variant: ${variant.name}" println "manifest: ${variant.outputs.processResources.manifestFile}" println "aptOutput: ${aptOutput}" println "****************************" android.sourceSets[getSourceSetName(variant)].java.srcDirs+= aptOutput.getPath() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-AandroidManifestFile=' + variant.outputs.processResources.manifestFile, '-s', aptOutput ] variant.javaCompile.source = variant.javaCompile.source.filter { p -> return !p.getPath().startsWith(aptOutputDir.getPath()) } variant.javaCompile.doFirst { aptOutput.mkdirs() } } 

在这里我的Gradle控制台输出:

 Information:Gradle tasks [:compileDebugSources] **************************** variant: debug manifest: [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml] aptOutput: <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/debug **************************** **************************** variant: release manifest: [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/release/AndroidManifest.xml] aptOutput: <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/release **************************** :preBuild :preDebugBuild :checkDebugManifest :preReleaseBuild :prepareComAndroidSupportAppcompatV72000Library UP-TO-DATE :prepareComAndroidSupportSupportV42000Library UP-TO-DATE :prepareDebugDependencies :compileDebugAidl UP-TO-DATE :compileDebugRenderscript UP-TO-DATE :generateDebugBuildConfig UP-TO-DATE :generateDebugAssets UP-TO-DATE :mergeDebugAssets UP-TO-DATE :generateDebugResValues UP-TO-DATE :generateDebugResources UP-TO-DATE :mergeDebugResources UP-TO-DATE :processDebugManifest UP-TO-DATE :processDebugResources UP-TO-DATE :generateDebugSources UP-TO-DATE :compileDebugJava Note: Resolve log file to <my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/source/apt/androidannotations.log Note: 18:29:17.724 [Daemon Thread 16] INFO oaAndroidAnnotationProcessor:86 - Initialize AndroidAnnotationProcessor with options {androidManifestFile=[<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml]} Note: 18:29:17.869 [Daemon Thread 16] INFO oaAndroidAnnotationProcessor:117 - Start processing for 1 annotations on 8 elements Error:18:29:17.885 [Daemon Thread 16] ERROR oahAndroidManifestFinder:95 - Could not find the AndroidManifest.xml file in specified path : [<my_home>/AndroidStudioProjects/ChessPositionManagerAndroid/build/intermediates/manifests/full/debug/AndroidManifest.xml] Note: 18:29:17.886 [Daemon Thread 16] INFO oapTimeStats:81 - Time measurements: [Whole Processing = 17 ms], [Extract Annotations = 13 ms], [Extract Manifest = 3 ms], Note: 18:29:17.887 [Daemon Thread 16] INFO oaAndroidAnnotationProcessor:131 - Finish processing Note: 18:29:17.954 [Daemon Thread 16] INFO oaAndroidAnnotationProcessor:117 - Start processing for 0 annotations on 0 elements Note: 18:29:17.954 [Daemon Thread 16] INFO oapTimeStats:81 - Time measurements: [Whole Processing = 0 ms], Note: 18:29:17.955 [Daemon Thread 16] INFO oaAndroidAnnotationProcessor:131 - Finish processing Warning:Unclosed files for the types '[dummy1412872157721]'; these types will not undergo annotation processing 1 warning Error:Execution failed for task ':compileDebugJava'. > Compilation failed; see the compiler error output for details. Information:BUILD FAILED Information:Total time: 3.981 secs Information:2 errors Information:1 warning Information:See complete output in console 

我想道歉,如果我的错误太明显,但我一直在寻找几个小时,没有成功。

Solutions Collecting From Web of "无法使用AndroidAnnotations库在AndroidStudio中创build项目"

你有没有试过为apt添加一些configuration:

  dependencies { ... classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' } apply plugin: 'android-apt' apt { arguments { androidManifestFile variant.processResources.manifestFile resourcePackageName '<your package>' } } 

在buid.gradle(模块级gradle)文件中应用插件,它将得到解决

 apply plugin: 'android-apt'