137 votes

Comment puis-je ajouter le fichier aidl à Android studio (à partir de l'exemple de facturation in-app) ?

Je suis en train de migrer une application Eclipse vers Android Studio. Cette application utilisait la facturation in app.

Mon principal problème est de compiler le projet et le fichier aidl (je suppose que vous utilisez tous ce fichier )

Je reçois ce message d'erreur :

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

Donc, en suivant quelques tutoriels, je déplace ce fichier de com.mypackage.billing à src/main/aidl (voir cette référence )

Mais dès que je fais ça, j'ai ce message :

Gradle : L'exécution a échoué pour la tâche ':xxxxxxxxxxx:compileDebugAidl'.

Échec de l'exécution de la commande : (...) C:\Users\xxxx\AndroidStudioProjects\xxxxxxProject\xxxxxxx\src\main\aidl\IInAppBillingService.aidl :45 L'interface IInAppBillingService doit être déclarée dans un fichier appelé com \xxxxxxxx\billing\IInAppBillingService.aidl.

Le message est clairement en contradiction avec le message de la page de bogue de Google dont j'ai donné le lien ci-dessus.

Quelqu'un a réussi à faire fonctionner ce fichier aidl et peut m'aider ?

enter image description here

Juste pour informer, quelques liens que j'ai suivis :

0 votes

La question est ... ne devrait-il pas y avoir ce fichier aidl dans /src/main/aidl/com/android/vending/billing ?

1 votes

Gradle : L'exécution a échoué pour la tâche ':MyProject:compileDebugAidl'. > Échec de l'exécution de la commande : 45 L'interface IInAppBillingService doit être déclarée dans un fichier appelé com \android\vending\billing\IInAppBillingService.aidl.

1 votes

Quelque chose me dit que tu ne le mets toujours pas dans le dossier que Selvin et moi disons... ?

2voto

Nicholas Points 1512

Les réponses ci-dessus se concentrent sur l'emplacement du fichier, mais il semble que vous l'ayez déjà configuré correctement. J'ai rencontré ce même problème dans Android Studio, mais aucune des réponses listées ne l'a résolu, et je me suis cogné la tête pendant une heure. Finalement, j'ai réalisé que j'avais manqué une importation évidente :

 import com.android.vending.billing.IInAppBillingService;

Une fois que j'ai ajouté cela, le message d'erreur a été résolu.

Cette importation n'est pas mentionnée dans les documents de Google Billing ni incluse dans les exemples de code que j'ai trouvés. Bien que cela puisse être évident pour les développeurs Java expérimentés, les débutants qui essaient juste d'apprendre leur premier projet peuvent avoir besoin qu'on le leur indique explicitement.

1voto

Aag1189 Points 157

Nous devons ajouter

  1. créer un dossier - src/main/aidl/nom du paquet et y placer le fichier aidl.

  2. Dans le fichier aidl - mentionnez le nom du paquet. nom du paquet

Maintenant nettoyez le projet, reconstruisez le projet - Nous pouvons le fichier java correspondant pour l'aidl généré dans l'app \build\generated\source\aidl\debug\packagename\youraidl.java

1voto

Je sais que ça a l'air si facile, mais je fais un copier-coller de google sample all folder.

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

aidl/com/Android/vending/billing

copié dans le projet aidl ( j'avais défini la vue du projet dans Android Studio)

et ensuite j'ai nettoyé et reconstruit le projet et il a trouvé une référence.

0voto

Alessandro Borile Points 189

J'ai essayé toutes les solutions, mais le problème était qu'Android Studio avait compilé, sans raison apparente, dans un type de construction du module qui contient les paquets AIDL différent de celui qui était spécifié par les paramètres. Depuis de déboguer à libérer pour que les autres modules ne puissent pas voir le pkg AIDL. Passer de debug à release puis revenir en arrière, a résolu mon problème.

0voto

pellyadolfo Points 618

Le redémarrage d'Android Studio a fonctionné pour moi

une deuxième chose stupide qui m'a pris un certain temps. J'ai déposé le code dans Android Studio pour qu'il puisse créer le fichier, mais il a créé un .java (comme prévu) au lieu d'un .aidl Jiji, stupide de ma part.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X