¿Cómo puedo agregar el archivo aidl al estudio Android (desde el ejemplo de facturación en la aplicación)

Actualmente estoy migrando una aplicación de Eclipse a Android Studio. Esta aplicación utilizaba la facturación de la aplicación.

Mi problema principal es compilar el proyecto y el archivo aidl (supongo que todos usan este archivo )

Recibo este mensaje de error:

Gradle: error: cannot find symbol class IInAppBillingService Gradle: error: package IInAppBillingService does not exist 

Por lo tanto, siguiendo algunos tutoriales, muevo este archivo de com.mypackage.billing a src / main / aidl (ver esta referencia )

Pero tan pronto como lo hago, recibo este mensaje:

Gradle: Error de ejecución para la tarea ': xxxxxxxxxxx: compileDebugAidl'.

Error al ejecutar el comando: (…) Interfaz IInAppBillingService debe declararse en un archivo denominado com \ xxxxxxxx \ billing \ IInAppBillingService (C: \ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl: .aidl.

El mensaje es claramente una contradicción con el post de la página de errores de Google que he vinculado anteriormente.

¿Cualquier persona suceeded para hacer este archivo del aidl para trabajar y puede ayudarme?

Introduzca aquí la descripción de la imagen

Sólo para informar, algunos enlaces que seguí:

  • Http://tools.android.com/tech-docs/new-build-system/user-guide
  • Http://developer.android.com/guide/components/aidl.html

Así como el mensaje de error dice, es necesario poner IInAppBillingService.aidl en el directorio correcto dictado por su paquete (com.android.vending.billing).

Dentro de la carpeta src/main/aidl/ que ya tiene, coloque el archivo .aidl en com/android/vending/billing/ .

Añadiendo esto como una respuesta ya que parecía ayudar a bastantes personas.

  1. Cree un nuevo directorio llamado 'aidl' en 'src / main /'. Debería parecer ' src / main / aidl '.
  2. Añada un nuevo nombre de paquete ' com.android.vending.billing ' al directorio ' src / main / aidl '
  3. Busque su ubicación sdk y vaya a "sdk \ extras \ google \ play_billing". La ubicación predeterminada para el sdk es "C: \ Archivos de programa (x86) \ Android \ android-sdk". Si la costumbre cambió, entonces tendrá que averiguar la ubicación a través del gestor sdk.
  4. Copie 'IInAppBillingService.aidl' en el paquete creado anteriormente. En el extremo, debe parecer similar a la imagen abajo.

Captura de pantalla del resultado

  1. Reconstruir el proyecto y debe ser bueno para ir.

Nota: Asegúrese de incluir la importación necesaria si su referencia no funciona

 import com.android.vending.billing.IInAppBillingService; 

https://code.google.com/p/android/issues/detail?id=56755

  • Crear nuevo directorio bajo src/main llamado aidl
  • Haga clic derecho en el directorio aidl , seleccione new->add package
  • Introduzca el nombre del paquete com.android.vending.billing

  • Copie IInAppBillingService.aidl desde el directorio Android/Sdk/extras/google/play_billing al directorio App_name/app/src/main/aidl/com/android/vending/billing

  • Ahora continúe con la codificación de facturación InApp y al definir los servicios relacionados con InApp obtendrá un error can not resolve symbol IInAppBillingXXXXXX
  • Ahora vaya a Build desde el menú de estudio de Android, haga clic en Rebuild Project . Esto generará el archivo IInAppBillingService.java dentro de App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing . Esto resolverá el problema.

El resto de los mensajes aquí no funcionó para mí hasta que creé una nueva carpeta como se muestra aquí.

Introduzca aquí la descripción de la imagen

Las respuestas anteriores se concentran en la ubicación del archivo, pero parece que ya tenías que establecer correctamente. He experimentado este mismo problema en Android Studio, pero ninguna de las respuestas de la lista lo resolvió, y me golpeó la cabeza contra ella durante una hora. Eventualmente, me di cuenta de que me faltaba una importación obvia:

  import com.android.vending.billing.IInAppBillingService; 

Una vez que agregué que resolvió este mensaje de error.

Esta importación no se menciona en ninguno de los documentos de facturación de Google o se incluye en ninguno de los ejemplos de código que encontré. Si bien puede ser obvio para los desarrolladores de Java con experiencia, los principiantes sólo tratando de aprender su primer proyecto puede necesitar explicitamente señalado.

Añadir este código en build.gradle

 android { sourceSets { main { aidl.srcDirs = ['src'] } } } 

Reconstruir e importar la clase de ayuda

Necesitamos agregar

  1. Cree la carpeta – src / main / aidl / packagename y coloque el archivo aidl bajo este.

  2. En el archivo aidl – mencione el nombre del paquete. Nombre del paquete de paquete

Ahora limpiar el proyecto, reconstruir el proyecto – Podemos el correspondiente archivo java para el aidl generado en la aplicación \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java

He intentado todas las soluciones, pero el problema era que Android Studio había compilado, con cualquier razón aparente, en un tipo de compilación diferente del módulo que contiene los paquetes AIDL que fue especificado por la configuración. De la depuración a la liberación , por lo que los otros módulos no podía ver el pkg AIDL. Cambiar de depurar a liberar y se vuelve atrás, resolvió mi problema.

Reiniciar Android Studio funcionó para mí

Una segunda tontería que me llevó un tiempo. Dejé el código en Android Studio para permitirle crear el archivo, pero creó un .java (como se esperaba) en lugar de un .aidl Jiji, estúpido de mí

  • Dependencia de Gradle que causa error "Número mágico inválido"
  • UnsupportedMethodException Android Studio 0.8.9
  • Android / gradle: no puede utilizar el repositorio
  • EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: com.android.dex.DexIndexOverflowException dependencias de fusión
  • ¿Es posible probar contra la versión de lanzamiento de tu aplicación con el complemento Android Gradle?
  • No se pudo generar el proyecto de android utilizando gradle
  • Gradle de Android, libs nativas para diferentes arquitecturas
  • La red es inaccesible: connect
  • Android-Studio ActionBar sherlock error con gradle
  • Android java.exe terminado con valor de salida no nulo 1
  • Establecer valor constante con gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.