¿Cómo uso el procesador de anotación Java personalizado en Gradle?

He estado trabajando en un simple procesador de anotación java que extiende AbstractProcessor .

He podido probar esto con éxito usando javac -Processor MyProcessor mySource.java

El problema es integrar esto en una simple aplicación Hello World android con Android Studio.

Comencé haciendo un nuevo proyecto de Android, y después agregando un módulo separado donde coloco todo mi código del procesador de la anotación (la clase de MyProcessor así como la anotación de encargo que utiliza).

Luego agregé este nuevo módulo como una dependencia del proyecto HelloWorld android.

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':MyProcessorModule') } 

¿Cómo utilizo el procesador para generar código basado en todos los archivos de origen en la aplicación HelloWorld?

Hay un complemento para que funcione. Funciona perfectamente con los módulos que están en Maven, no está seguro acerca de los archivos .jar locales, pero seguro que intentarlo:

Aquí la página del complemento: https://bitbucket.org/hvisser/android-apt

Y aquí mi build.gradle con él:

 buildscript { repositories { mavenCentral() } dependencies { ... add this classpath to your buildscript dependencies classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' } } apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' << apply the plugin after the android plugin dependencies { // in dependencies you call it apt 'com.company.myAnnotation:plugin:1.0-SNAPSHOT' compile 'com.company.myAnnotation:api:1.0-SNAPSHOT' 

Y debería funcionar.

Usa el complemento de android-apt . Mejor aún, bifurca un proyecto de ejemplo que ya utiliza el complemento de android-apt para desarrollar procesadores de anotación locales.

Lea sobre el proyecto de ejemplo aquí .

Lo que estás haciendo es perfectamente correcto, he aquí un ejemplo de uno de mis proyectos que utilizo como una biblioteca:

 dependencies { compile project(':boundservice') } 

Por supuesto lo que debe hacer también es definir el módulo que agregó su biblioteca como

android-library plagin y no la aplicación.

Esto debería suceder automáticamente si lo haces usando la opción New Module -> Android Library , pero tal vez como este proyecto, como yo entiendo … no tiene nada que ver con Android debes elegir la opción de Java Library .

Cuando haces eso y sincronizar el archivo build.gradle (tal vez un poco de construcción limpia también debería ayudarte) deberías poder usar tus archivos de clase en el proyecto de Android.

  • Error al importar jar en un proyecto android
  • ¿Android con maven? Apk desconocido
  • Biblioteca de visor de PDF de Android o tutoriales de biblioteca de muPDF
  • Pasar un LinkedHashMap <Objeto, Cadena> de una actividad a otra
  • Cómo programar el MAC de un dispositivo Android
  • Cómo llamar a función Java desde c
  • Vista de cuadrícula personalizada con rango de fila y extensión de columna
  • ¿Solución anti-hack para una clave secreta en la aplicación para Android?
  • Cómo hacer que el arranque del emulador de Android sea más rápido
  • Encontrar el número total de API que se utilizan en un código fuente de la aplicación de Android?
  • Convertir RGB a HSV en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.