AndroidAnnotations Rien de généré, activité vide

J'essaie de créer un projet utilisant AndroidAnnotations dans Android Studio. Lorsque je crée et exécute le projet, tout semble se compiler bien, mais je n'ai qu'une activité vide pour l'application. En outre, il ne semble pas que quelque chose soit généré par AndroidAnnotations.

J'ai ajouté androidannotations-api-2.7.1.jar comme une dépendance pour mon projet et j'ai activé le traitement d'annotation avec le chemin du processeur, le chemin d'accès à androidannotations-2.7.1.jar , qui se trouve dans un dossier distinct de androidannotations-api-2.7.1.jar . J'ai vérifié les sources générées par les magasins par rapport à la racine du contenu du module et j'ai essayé de nombreux répertoires différents pour les sources – de generated , à gen/aa , à (actuellement) build/source/aa pour correspondre où il semble que les fichiers générés sont créés dans Android Studio. Rien n'a fonctionné. J'ai changé le nom de l'activité dans le manifeste dans Activity_ et définis la configuration pour lancer ceci lorsque le projet est exécuté.

  • Largeur et hauteur maximale pour ImageView dans Android
  • Android: Existe-t-il un moyen de montrer DialogPreference à partir du code?
  • Android Studio ne peut pas importer de projet: java.util.ArrayList ne peut pas être jeté sur java.util.Map
  • Android Volley error.getMessage () est vide
  • Publication de la bibliothèque Android (aar) vers Bintray avec les saveurs choisies
  • Comment analyser un flux RSS avec XmlPullParser?
  • Les seules autres dépendances que j'ai sont android-support-v4 et ActionBarSherlock. J'ai essayé avec ces deux handicapés, sans résultat. J'ai initialement prévu d'utiliser Roboguice en conjonction avec AndroidAnnotations, mais j'ai désactivé pour le moment d'essayer de me concentrer sur ce problème.

    J'utilise ou j'essaie d'utiliser Gradle. C'est actuellement mon build.gradle :

     buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android' dependencies { compile files('libs/android-support-v4.jar') compile files('libs/actionbarsherlock-4.3.1.jar') compile files('libs/androidannotations-api-2.7.1.jar') } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 17 } } 

    Cependant, je n'ai pas vraiment compris comment fonctionne Gradle, donc j'ai simplement ajouté les dépendances manuellement comme vous le feriez d'un projet normal, puis mettez les lignes de compilation à Gradle pour que le projet se compile correctement. Je sais que ce n'est probablement pas la bonne façon de l'utiliser.

    Mon activité et sa mise en page sont assez standard, je les ai simplement copiés à partir du guide officiel pour commencer avec AndroidAnnotations.

    MISE À JOUR: Je suis donc retourné à Maven pour tester la construction avec ça, et j'ai remarqué quelque chose d'étrange. Il semble que même avec la façon dont je l'ai mis en place dans Maven, rien n'est généré. Cependant, avec la compilation Maven, je peux exécuter le projet sans modifier le nom de l'activité dans le manifeste à Activity_ et le projet compile et s'exécute correctement. C'est très étrange et semble qu'il pourrait soit plus confondre le problème, soit le simplifier s'il est révélateur de quelque chose avec Gradle aussi.

  • Modification de la couleur du texte du titre pour ActionBar dans le thème AppCompatActivity
  • IOS SegmentedControl équivalent en Android
  • Décompresser le fichier dans les actifs d'Android
  • Comment optimiser l'image comme Facebook et WhatApp?
  • Bluetooth ne se connecte pas au 4.4.2
  • Android: la clé API ne peut être spécifiée qu'une fois que les métadonnées <meta-data>
  • 6 Solutions collect form web for “AndroidAnnotations Rien de généré, activité vide”

    Ceci est similaire à la réponse de robotoaster, mais il fonctionne en 0.4.1 et place les fichiers source java générés dans un nouveau répertoire (compatible avec les autres dossiers sources générés), ce qui permet à Android Studio de voir la source et d'arrêter de se plaindre. Il fonctionne également avec plus de processeurs d'annotations. Ajoutez simplement vos processeurs d'annotations à la configuration "apt".

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4.1' } } apply plugin: 'android' repositories { mavenCentral() } ext.daggerVersion = '1.0.0'; ext.androidAnnotationsVersion = '2.7.1'; configurations { apt } dependencies { apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}" compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}" apt "com.squareup.dagger:dagger-compiler:${daggerVersion}" compile "com.squareup.dagger:dagger:${daggerVersion}" } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 10 targetSdkVersion 17 } } android.applicationVariants.all { variant -> aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}") println "****************************" println "variant: ${variant.name}" println "manifest: ${variant.processResources.manifestFile}" println "aptOutput: ${aptOutput}" println "****************************" variant.javaCompile.doFirst { println "*** compile doFirst ${variant.name}" aptOutput.mkdirs() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-AandroidManifestFile=' + variant.processResources.manifestFile, '-s', aptOutput ] } } 

    MISE À JOUR : Cela fonctionne toujours pour compiler, mais avec Android Studio 0.1.1, vous ne pouvez plus éditer votre structure de projet avec l'interface utilisateur , de sorte que vous ne pouvez pas dire à AS de regarder le nouveau dossier source. J'aimerais ajouter le dossier à un sourceSet, mais les variantes ne semblent pas avoir leurs propres sources, de sorte que je ne suis pas sûr de savoir où le placer .

    MISE À JOUR 2 : Vous pouvez obtenir Android Studio 0.1.1 pour reconnaître les fichiers source générés par apt en cliquant avec le bouton droit de la souris sur build / source / apt_generated / debug dans le navigateur du projet et en sélectionnant Mark Directory As-> Source Root

    MISE À JOUR 3 : Depuis gradle plugin 0.5.5, le android.applicationVariants.each ne fonctionne plus. Utilisez plutôt android.applicationVariants.all place. Voir le changelog sur android.com : l' accès au conteneur des variantes ne force pas la création de la tâche. Cela signifie que Android. [Application | Library | Test] Les variantes seront vides pendant la phase d'évaluation. Pour l'utiliser, utilisez .all au lieu de .each

    Avec les réponses ici et l'aide de + Hugo Visser qui m'a répondu sur ma Question Google+, j'ai obtenu cette configuration build.grade, qui permet les builds gradew et ajoute aussi le chemin de sortie apt dans Android Studio en tant que directeur source.

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } } ext.androidAnnotationsVersion = '3.0-SNAPSHOT'; configurations { apt } dependencies { compile 'com.android.support:support-v4:13.0.+' apt "org.androidannotations:androidannotations:${androidAnnotationsVersion}" compile "org.androidannotations:androidannotations-api:${androidAnnotationsVersion}" } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 10 targetSdkVersion 17 } } def getSourceSetName(variant) { return new File(variant.dirName).getName(); } android.applicationVariants.all { variant -> def aptOutputDir = project.file("build/source/apt") def aptOutput = new File(aptOutputDir, variant.dirName) println "****************************" println "variant: ${variant.name}" println "manifest: ${variant.processResources.manifestFile}" println "aptOutput: ${aptOutput}" println "****************************" android.sourceSets[getSourceSetName(variant)].java.srcDirs+= aptOutput.getPath() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-AandroidManifestFile=' + variant.processResources.manifestFile, '-s', aptOutput ] variant.javaCompile.source = variant.javaCompile.source.filter { p -> return !p.getPath().startsWith(aptOutputDir.getPath()) } variant.javaCompile.doFirst { aptOutput.mkdirs() } } 

    MISE À JOUR: mise à jour pour gradle android plugin 0.5.5; A changé android.applicationVariants.each à android.applicationVariants.all

    Ajouter des dépendances ne fait rien. La tâche JavaCompile doit être notifiée au sujet du processeur d'annotation. Il était possible d'accéder à la tâche JavaCompile dans la version 0.3:

     configurations { compile androidannotations.extendsFrom(compile) } dependencies { compile 'org.androidannotations:androidannotations-api:3.0-SNAPSHOT' androidannotations 'org.androidannotations:androidannotations:3.0-SNAPSHOT' } android.buildVariants.each { variant -> variant.javaCompile.options.compilerArgs += [ '-classpath', configurations.compile.asPath, '-processorpath', configurations.androidannotations.asPath, '-processor', 'org.androidannotations.AndroidAnnotationProcessor', '-AandroidManifestFile=' + variant.processResources.manifestFile ] } 

    Pour le plugin gradle 0.4, les tâches de compilation doivent être ajoutées de manière différente. Merci à Artiom @ Android Project ici est de savoir comment tout build.gradle devrait ressembler

     buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android' repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } } configurations { compile androidannotations.extendsFrom(compile) } dependencies { compile files('libs/android-support-v4.jar') compile 'org.androidannotations:androidannotations-api:3.0-SNAPSHOT' androidannotations 'org.androidannotations:androidannotations:3.0-SNAPSHOT' } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 16 packageName "org.labaa.aa" testPackageName "org.labaa.aa.test" testInstrumentationRunner "org.labaa.aa.test.Runner" } } afterEvaluate { project -> android.applicationVariants.each { variant -> variant.javaCompile.options.compilerArgs += [ '-classpath', configurations.compile.asPath, '-processorpath', configurations.androidannotations.asPath, '-processor', 'org.androidannotations.AndroidAnnotationProcessor', '-AandroidManifestFile=' + variant.processResources.manifestFile ] } } 

    Cela ne mettra pas à jour les dépendances de Android Studio. Ajoutez androidannotations-api manuellement. Exécuter à partir de la ligne de commande gradle installDebug

    Lors de la compilation à partir d'Andoid Studio, désactiver l'activation de l'application, sinon le lanceur se plaignera de l'activité annotée manquante.

    Le projet dispose désormais d' une documentation à jour pour cette affaire. Un projet d'exemple complet existe également.

     buildscript { repositories { mavenCentral() } dependencies { // replace with the current version of the Android plugin classpath 'com.android.tools.build:gradle:0.7.3+' // the latest version of the android-apt plugin classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2+' } } apply plugin: 'android' apply plugin: 'android-apt' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } apt { arguments { androidManifestFile variant.processResources.manifestFile // If you're using Android NBS flavors you should use the following line instead of hard-coded packageName //resourcePackageName android.defaultConfig.packageName resourcePackageName "com.example.your.package.name" // You can set optional annotation processing options here, like these commented options: // logLevel 'INFO' // logFile '/var/log/aa.log' } } dependencies { apt "org.androidannotations:androidannotations:3.0+" compile "org.androidannotations:androidannotations-api:3.0+" } 

    Il s'agit d'une mise à jour de la réponse qui suit les éléments suivants:

    • Fonctionne avec Android Studio 0.1.9
    • Supprime les erreurs de syntaxe de l'IDE (même lors des reconstructions)
    • Utilise androidannotations sans poignard

    Pour y parvenir, je copie la sortie pour construire / source / r qui restera marquée comme source pendant les reconstructions.

     import groovy.io.FileType buildscript { } apply plugin: 'android' repositories { mavenCentral() } ext.androidAnnotationsVersion = '2.7.1'; configurations { apt } dependencies { apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}" compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}" } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 10 targetSdkVersion 16 } } android.applicationVariants.each { variant -> aptOutput = file("${project.buildDir}/source/r/${variant.dirName}") println "****************************" println "variant: ${variant.name}" println "manifest: ${variant.processResources.manifestFile}" println "aptOutput: ${aptOutput}" println "****************************" variant.javaCompile.doFirst { println "*** compile doFirst ${variant.name}" aptOutput.mkdirs() aptOutput.eachFileRecurse FileType.FILES, { if (it.name.equals('R.java')) { return } it.delete() } variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-AandroidManifestFile=' + variant.processResources.manifestFile, '-s', aptOutput ] } } 

    Encore des suggestions d'amélioration très douloureuses sont les bienvenues

    EDITEz la manière Android

    Récemment, un paquet appelé android-apt https://bitbucket.org/hvisser/android-apt/overview a été une version qui rend les choses beaucoup plus faciles (la version 1.1 a les besoins d'annotations Android compatibles)

    Il suffit de mettre à jour votre build.gradle comme suit:

     buildscript { repositories { mavenCentral() } dependencies { classpath "com.neenbedankt.gradle.plugins:android-apt:1.1" } } apply plugin: 'android-apt' apt { arguments { androidManifestFile variant.processResources.manifestFile } } dependencies { apt 'com.googlecode.androidannotations:androidannotations:2.7.+' } 

    Un grand merci à hvisser le créateur d'android-apt

    Un problème possible est que la classe R n'est pas trouvée. Android Studio ne place pas R.java dans le répertoire gen par défaut comme eclipse. La solution consiste à entrer dans les paramètres de projet -> Facettes -> Sélectionnez la facette Android pour votre projet -> onglet Compilateur, et modifiez les "fichiers R.java et Manifest.java" à partir de "Exécuter les ressources de processus Maven tâche avant de faire" à "Généré par IDE".

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.