Procesamiento de annotations con el estudio Android Kapt

Estoy tratando de usar kapt para usar mi procesador de anotación. Pero me encontré con algunos problemas.

El procesador de anotación está conectado de esta manera:

kapt files('libs/processor.jar') provided files('libs/processor.jar') 

1) Estoy usando JavaPoet para la generación de código. Y salvar mi class de esta manera

  JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build(); javaFile.writeTo(processingEnv.getFiler()); 

Pero siempre lo guarda en build \ generated \ source \ kapt \ release, y nunca depura la carpeta independientemente de la variante de compilation.

enter image description here

2) El segundo problema es que el file generado a veces no se actualiza, hasta que presiono Build-> Rebuild

El kotlin-kapt seleccionará automáticamente el directory de salida correcto en function de la variante de biblioteca / aplicación incorporada. Al crear un proyecto con un único module com.android.application , Android Studio utilizará la variante de la aplicación seleccionada en el menu "Variantes de compilation".

Variante de compilación ventana

Esto no es cierto para los modules de biblioteca, que, si no están configurados de otra manera, publicarán la variante de compilation de release , incluso cuando select "debugging" para esos modules dentro del menu "Variantes de compilation".

Para poner en marcha y ejecutar los modules de la biblioteca, tiene tres opciones:

  1. En la window "Variantes de compilation", select "liberar" para el module de la biblioteca que contiene su código anotado. Esto le indicará a Android Studio que recoja la salida de kapt dentro de generated/sources/kapt/release/ .

  2. En los modules de su biblioteca, build.gradle establece defaultPublishConfig para debug (y mantiene la variante seleccionada en la debugging también). Esto le indicará al complemento Android Gradle que compile la variante de la biblioteca de debug lugar de la release pnetworkingeterminada.

     android { defaultPublishConfig "debug" } 
  3. También puede elegir publicar las variantes de compilation de debug y release al mismo time, estableciendo publishNonDefaults en true . En el module de su aplicación principal, puede hacer reference al module de la biblioteca dos veces, para las configuraciones debugCompile y releaseCompile . Sin embargo, tenga en count que esto siempre generará ambos types, aunque solo necesite fonts de debugging en el momento de la creación, prácticamente duplicando los times de compilation.

  • Carga GIF usando la versión 4.2.0 de deslizamiento en Kotlin
  • cómo descartar DialogFragment de lambda especificado en el llamador Kotlin
  • Joda DateTime Timezone no aparece correctamente
  • Escriba desajuste en ArrayOfNulls con Kotlin
  • Comodines generics en Kotlin para variable
  • Nashorn, pase el object java a javascript para que sea JSON.stringified
  • ¿Cómo usar el delegado de injectLazy () de la biblioteca de Injekt con generics?
  • ¿Hay alguna manera de anular una propiedad setter en extender class en Kotlin?
  • Extensiones de Kotlin para Android, los packages no se pueden importar
  • Kotlin getParcelableArray del set de bashs no puede convertirlo en tipo personalizado
  • ¿Por qué este val, no es val?