¿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
- Android recyclerview desplazarse a la parte superior
- Causado por: java.lang.NoClassDefFoundError: Clase no encontrada usando el cargador de clase de arranque; No hay rastro de la pila disponible
- Android M onRequestPermissionsResult en no actividad
- Android: Administración de varias notificaciones
- gcm_defaultSenderId no se puede resolver
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?
- El cambio amplía la clase de actividad
- Org.json.JSONException: Cadena no terminada en el carácter 1834
- Ocultar puntero del mouse en Android
- Conector TLS-PSK de Java
- Coordenadas de Android onTouchEvent
- Atributo ya definido con formato incompatible
- MojoExecutionException: Maven con Android
- Preciso metrónomo para Android
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.