Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't make project in AndroidStudio with AndroidAnnotations library

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.

like image 318
loloof64 Avatar asked Oct 09 '14 16:10

loloof64


2 Answers

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>'
        }
    }
like image 72
brwngrldev Avatar answered Oct 12 '22 00:10

brwngrldev


Apply plugin inside your buid.gradle (Module level gradle) file it will get resolved

apply plugin: 'android-apt'
like image 32
sonal balekai Avatar answered Oct 12 '22 01:10

sonal balekai