Android Aidl Compile Error: no se pudo encontrar la importación para la clase

( Sé que hay varias preguntas sobre stackoverflow y en otros lugares (como google group) sobre la adición de parcelable para NetworkInfo pero esto no es sobre eso. )

Mi trabajo está bajo $ (AOSP_ROOT) / device / e implica varios archivos de aidl . Una de ellas es como,

package com.example; parcelable SomeRequest; 

Y otra ayuda es como,

 package com.example; import com.example.SomeRequest; interface SomeService { SomeRequest getRequest(); } 

Y voy a obtener errores de compilación como,

 device/somedevice/sdk/libs/aidl/com/example/SomeService.aidl:9: couldn't find import for class com.example.SomeRequest 

Me pregunto si es la orden de procesar los archivos aidl. Mi Android.mk parece,

 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, aidl) LOCAL_AIDL_INCLUDES := $(call all-Iaidl-files-under, aidl) 

Este error de compilación se introduce después de mover los archivos aidl de src / folder a aidl / folder (por alguna razón tengo que hacerlo). Funcionó antes pero ahora incluso si lo moví de nuevo a src / carpeta que no funciona más. Traté de limpiar $ (AOSP_ROOT) / out / device / target pero no está ayudando.

¿Ideas?

Finalmente lo solucioné.

Si /build/core/base_rules.mk a /build/core/base_rules.mk , encontrará que LOCAL_AIDL_INCLUDES es en realidad las carpetas que se incluirán durante la fase de compilación de AIDL además de las carpetas predeterminadas como framework o algo así.

 $(aidl_java_sources): PRIVATE_AIDL_FLAGS := -b $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES)) 

En este caso específico, lo que quieres es en realidad,

 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, aidl) LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl 

Así que miré alrededor – la solución es poner los archivos AIDL sólo en su propio directorio llamado aidl, que creo que algunos otros han sugerido.

Resulta que Android Studio se ve allí, pero no sabe muy bien qué hacer con los archivos .aidl poner en el directorio src.

No lo entiendo. Simplemente no entiendo. Las importaciones de AIDL funcionaron perfectamente en Eclipse. Android Studio no está preparado para la producción. Este es un paso importante hacia atrás.

Estoy teniendo problemas para obtener el compilador AIDL para encontrar las importaciones, así, y estoy pensando que tiene que haber una manera mejor que la modificación de base_rules.mk, que la plataforma gestiona.

Arg!

Ok, por lo que estaba luchando durante días tratando de averiguar este mismo problema. Limpieza / Rebuilds no funcionaba para mí. Al final, me di cuenta de un error muy simple que estaba haciendo en Android Studio – Cuando hice clic con el botón derecho del ratón y creé un nuevo "AIDL", no estaba haciendo clic en la carpeta adecuada como mis clases de modelo original.

Por ejemplo, mi modelo estaba en un paquete java llamado com.example.model, pero no estaba haciendo clic con el botón derecho en esa carpeta cuando creé mi AIDL. Así que cuando Android Studio genera la carpeta AIDL para mí, haría referencia a la carpeta incorrecta, y acabaría con un error de compilación. Ojalá la documentación de Android dejara claro que necesitábamos hacer clic con el botón derecho del ratón en la carpeta adecuada antes de generar los archivos AIDL. Lo sé, suena tonto, pero espero que esta respuesta se aplica a algunos de ustedes!

Sólo necesita nombre el archivo .aidl para ser igual que el archivo. Java!

  • ¿Por qué AIDL / Messenger está enlazado a un Servicio?
  • No se puede sobrecargar el método en la interfaz AIDL
  • Cómo importar la clase de otro paquete de un proyecto diferente en el archivo AIDL?
  • AIDL vs Messenger
  • ¿Cómo utilizo la herramienta AIDL desde la línea de comandos con código de ejemplo de SDK?
  • ¿Se puede utilizar Messenger (alternativa ligera a AIDL) para la comunicación entre aplicaciones?
  • Ejemplo de uso de AIDL
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.