¿Cómo puedo agregar el archivo aidl a un estudio de 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 usaba la facturación de la aplicación integrada.

Mi principal problema es comstackr 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 

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

Pero tan pronto como hago eso, obtengo este mensaje:

Gradle: ejecución fallida para la tarea ‘: xxxxxxxxxxx: compileDebugAidl’.

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

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

¿Alguien acertó para hacer que este archivo de ayuda funcione y me puede ayudar?

enter image description here

Solo para informar, algunos enlaces seguí:

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

Tal como dice el mensaje de error, debe 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/ .

Agregar esto como una respuesta, ya que parecía ayudar a un buen número de personas.

  1. Cree un nuevo directorio llamado ‘aidl’ en ‘src / main /’. Debería verse como ‘ src / main / aidl ‘.
  2. Agregue un nuevo nombre de paquetecom.android.vending.billing ‘ al directorio ‘ src / main / aidl
  3. Ubique su ubicación de SDK y vaya a “sdk \ extras \ google \ play_billing”. La ubicación predeterminada para el SDK es “C: \ Archivos de progtwig (x86) \ Android \ android-sdk”. Si lo cambiaste a medida, deberás averiguar la ubicación a través del administrador de SDK.
  4. Copie ‘IInAppBillingService.aidl’ en el paquete creado arriba. Al final, debería verse similar a la imagen de abajo.

Captura de pantalla del resultado

  1. Reconstruye el proyecto y debería ser bueno ir.

Nota: asegúrese de incluir la importación necesaria si su referencia no está funcionando

 import com.android.vending.billing.IInAppBillingService; 

https://issuetracker.google.com/issues/36973270

Editar de un comentario

Después de hacer esto, las referencias a IInAppBillingService en mi código aún se resaltaron como errores, pero después de reconstruir la aplicación, se reconoció la clase

El rest de las publicaciones aquí no funcionaron para mí hasta que creé una nueva carpeta como la que se muestra aquí.

enter image description here

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

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

  • Ahora continúe con la encoding de facturación de InApp y mientras define los servicios relacionados con InApp obtendrá un error can not resolve symbol IInAppBillingXXXXXX
  • Ahora vaya a Build desde el menú de android studio, 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.

Agregue este código en build.gradle

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

Reconstruye e importa la clase de ayuda

Las respuestas anteriores se concentran en la ubicación del archivo, pero parece que ya lo hiciste correctamente. Experimenté este mismo problema en Android Studio, pero ninguna de las respuestas enumeradas lo resolvió, y me golpeé la cabeza 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 ni se incluye en ninguno de los ejemplos de código que encontré. Si bien puede ser obvio para los desarrolladores experimentados de Java, los principiantes que solo intenten aprender su primer proyecto pueden necesitarlo explícitamente señalado.

Necesitamos agregar

  1. crear carpeta – src / main / aidl / packagename y colocar el archivo aidl debajo de esto.

  2. En el archivo aidl, menciona el nombre del paquete. paquete nombredelpaquete

Ahora limpie el proyecto, reconstruya el proyecto – Podemos el archivo java correspondiente para la ayuda generada en la aplicación \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java

Sé que suena tan fácil, pero copio pegar de la carpeta de muestra de Google toda la carpeta

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main

aidl / com / android / vending / facturación

copiado en project helpl (yo había configurado la vista del proyecto en Android Studio)

y luego limpio y reconstruyo el proyecto y encontré una referencia.

Probé todas las soluciones, pero el problema fue que Android Studio compiló, por cualquier razón aparente, en un tipo de comstackción diferente del módulo que contiene los paquetes AIDL que los especificados en la configuración. De la depuración a la versión , por lo que los otros módulos no pudieron ver el paquete de AIDL. Pasando de la depuración a la versión y regresa, resolvió mi problema.

reiniciar Android Studio funcionó para mí

una segunda cosa tonta que me tomó un tiempo. Solté el código en Android Studio para permitirle crear el archivo, pero creó un .java (como se esperaba) en lugar de un .idj Jiji, estúpido de mí

    Intereting Posts