¿cómo puedo agregar el archivo aidl a Android studio (desde el ejemplo de facturación en la aplicación)


Actualmente estoy migrando una aplicación Eclipse a Android Studio. Esta aplicación estaba utilizando la facturación en la aplicación.

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

Así que, siguiendo algunos tutoriales, muevo este archivo desde com.mi paquete.facturación a src/main / aidl (véase esta referencia )

Pero tan pronto como lo hago, recibo este mensaje:

Gradle: Ejecución error en la tarea': xxxxxxxxxxx: compileDebugAidl'.

No se pudo 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 error de Google que enlacé anteriormente.

Nadie tuvo éxito en hacer que este archivo aidl funcione y puede ayudarme?

introduzca la descripción de la imagen aquí

Solo para informar, algunos enlaces que seguí:

Author: Ahmad Aghazadeh, 2013-07-24

10 answers

Tal como dice el mensaje de error, necesita poner IInAppBillingService.aidl en el directorio correcto dictado por su paquete (com.androide.Vending.facturación).

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

 156
Author: Sam Dozor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-21 18:03:07

Añadiendo esto como una respuesta ya que parecía ayudar a un buen número de personas.

  1. Crea un nuevo directorio llamado 'aidl' bajo 'src/main/'. Debería parecerse a ' src/main/aidl'.
  2. Añadir un nuevo paquete nombre 'com.androide.Vending.facturación' al directorio 'src/main/aidl'
  3. Localice la ubicación de su sdk y vaya a "sdk\extras\google\play_billing". La ubicación predeterminada para el sdk es "C:\Program Files (x86) \ Android \ android-sdk". Si personalizado lo cambió, entonces usted tendrá que averiguar la ubicación a través del sdk manager.
  4. Copy 'IInAppBillingService.aidl ' en el paquete creado anteriormente. Al final, debería ser similar a la imagen de abajo.

Captura de pantalla del resultado

  1. Reconstruir el proyecto y debería estar listo.

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

import com.android.vending.billing.IInAppBillingService;

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

Editar Desde Comentario

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

 213
Author: Kalel Wade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-30 17:39:33

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

introduzca la descripción de la imagen aquí

 8
Author: zeeawan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 17:31:36
  • Crea un 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

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

  • Ahora siga adelante 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 android studio , haga clic en Rebuild Project. Esto generará un archivo IInAppBillingService.java dentro App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing. Esto resolverá el problema.
 7
Author: Praveena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-28 14:51:08

Agregue este código en la compilación.gradle

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

Reconstruir e importar la clase aidl

 5
Author: Ahmad Aghazadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-12 14:57:20

Las respuestas anteriores se concentran en la ubicación del archivo, pero parece que ya lo ha configurado correctamente. Experimenté este mismo problema en Android Studio, pero ninguna de las respuestas enumeradas lo resolvió, y me golpeé la cabeza contra él durante una hora. Finalmente, 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 encontrar. Si bien puede ser obvio para los desarrolladores de Java experimentados, los principiantes que solo intentan aprender su primer proyecto pueden necesitar que se indique explícitamente.

 2
Author: Nicholas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-19 15:10:42

Tenemos que añadir

  1. Cree la carpeta-src/main/aidl / packagename y coloque el archivo aidl debajo de esto.

  2. En el archivo aidl - mencione el nombre del paquete. paquete nombre del paquete

Ahora limpiar el proyecto, reconstruir el proyecto - Podemos el archivo java correspondiente para el aidl generado en app\build\generated\source\aidl\debug\packagename\youraidl.java

 1
Author: Aag1189,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-03 13:03:13

Sé que suena tan fácil, pero copio y pego desde Google sample all folder

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

Aidl/com/android/vending / billing

Copiado en project aidl (había configurado project view en Android Studio)

Y luego limpio y reconstruyo el proyecto y encontró una referencia.

 1
Author: Natalia Majkowska,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-03 16:00:26

He probado 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 de lo que se especificó en la configuración. De debug a release, por lo que los otros módulos no podían ver el pkg de AIDL. Cambiar de depuración a liberación y se vuelve atrás, resuelto mi problema.

 0
Author: Alessandro Borile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-08 16:12:10

Reiniciar Android Studio funcionó para mí

Una segunda tontería que me llevó un tiempo. Se me cayó el código en Android Studio para permitirle crear el archivo, pero creó un .java (como se esperaba) en su lugar a .aidl Jiji, estúpido de mi parte
 0
Author: pellyadolfo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-16 08:12:12