Can't make project in AndroidStudio with AndroidAnnotations library

loloof64 picture loloof64 · Oct 9, 2014 · Viewed 12.3k times · Source

I've looked at several discussions and blogs about compiling Android Applications in Android Studio with AndroidAnnotations framework specially this one, but none of them helped me to get started.

I am using Android Studio 0.8.9 and I am pointing on a downloaded Gradle 2.1 binary. I am using Ubuntu 14.04 .

The gradle compilation process says that I am missing a copy of AndroidManifest.xml at a given location (please, see the output below) though I've found it when navigating into this folder with my file explorer.

Please also notice that in order to remove warnings, I replaced

variant.processResources.manifestFile

by

variant.outputs.processResources.manifestFile

in the gradle script.

Here my gradle build script :

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()
    }
}

Here my Gradle console output :

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  o.a.AndroidAnnotationProcessor: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  o.a.AndroidAnnotationProcessor:117 - Start processing for 1 annotations on 8 elements
Error:18:29:17.885 [Daemon Thread 16] ERROR o.a.h.AndroidManifestFinder: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  o.a.p.TimeStats:81 - Time measurements: [Whole Processing = 17 ms], [Extract Annotations = 13 ms], [Extract Manifest = 3 ms], 
Note: 18:29:17.887 [Daemon Thread 16] INFO  o.a.AndroidAnnotationProcessor:131 - Finish processing
Note: 18:29:17.954 [Daemon Thread 16] INFO  o.a.AndroidAnnotationProcessor:117 - Start processing for 0 annotations on 0 elements
Note: 18:29:17.954 [Daemon Thread 16] INFO  o.a.p.TimeStats:81 - Time measurements: [Whole Processing = 0 ms], 
Note: 18:29:17.955 [Daemon Thread 16] INFO  o.a.AndroidAnnotationProcessor: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

I would like to apologize if ever my error is too obvious, but I've been seeking for some hours, without success.

Answer

brwngrldev picture brwngrldev · Oct 9, 2014

Have you tried adding some config for apt:

    dependencies {
       ...
       classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    }

    apply plugin: 'android-apt'

    apt {
        arguments {
            androidManifestFile variant.processResources.manifestFile
            resourcePackageName '<your package>'
        }
    }