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... ?

223voto

Kalel Wade Points 1006

J'ajoute cette réponse car elle semble avoir aidé pas mal de personnes.

  1. Créer un nouveau répertoire nommé 'aidl' sous 'src/main/'. Il devrait ressembler à ' src/main/aidl '.
  2. Ajouter un nouveau paquet nom com.Android.vending.billing ' vers le répertoire ' src/main/aidl '
  3. Localisez l'emplacement de votre sdk et allez dans "sdk". \extras\google\play_billing ". L'emplacement par défaut pour le sdk est " C:\Program Fichiers (x86) \Android\android -sdk". Si vous l'avez modifié, vous devrez trouver l'emplacement par le biais du gestionnaire de sdk.
  4. Copie de 'IInAppBillingService.aidl'. dans le paquet créé ci-dessus. Au final, il devrait ressembler à l'image ci-dessous.

Screenshot of result

  1. Reconstruire et il devrait être prêt à partir.

Note : Assurez-vous d'inclure l'importation nécessaire si votre référence ne fonctionne pas.

import com.android.vending.billing.IInAppBillingService;

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

Modifier à partir d'un commentaire

Après avoir effectué cette opération, les références à IInAppBillingService dans mon code étaient toujours signalées comme des erreurs, mais après avoir reconstruit l'application, la classe a été reconnue.

1 votes

Juste pour être clair : lisez bien ceci ! Je ne l'ai pas fait... pour le souligner à nouveau : C'est un bon ajout... Mettez le com.Android.vending.billing dans le nouveau répertoire 'main/aidl' !

6 votes

Après avoir fait cela, les références à IInAppBillingService dans mon code étaient toujours signalées comme des erreurs, mais après avoir reconstruit l'application, la classe a été reconnue.

0 votes

Cela a fonctionné, mais pourquoi tout cela n'est-il pas automatique, lorsque vous choisissez d'ajouter le module ?

163voto

Sam Dozor Points 5709

Comme le dit le message d'erreur, vous devez mettre IInAppBillingService.aidl dans le répertoire correct dicté par son paquetage (com.Android.vending.billing).

Dans le cadre de la src/main/aidl/ que vous avez déjà, mettez le .aidl dans com/android/vending/billing/ .

5 votes

Quand je fais ça, j'obtiens : Gradle : error : cannot find symbol class IInAppBillingService

9 votes

Donc c'est dans /src/main/aidl/com/Android/vending/billing ? Utilisez-vous gradle pour construire ? Si oui, appuyez sur le petit bouton gradle en haut à droite d'Android Studio pour que gradle recharge la configuration, ou fermez/ouvrez Android Studio.

0 votes

J'ai utilisé gradle pour construire, et la capture d'écran mise à jour vous montre le dossier en question

11voto

Praveen Points 577
  • Créez un nouveau répertoire sous src/main appelé aidl

  • Cliquez à droite sur le répertoire aidl , sélectionnez new->add package

  • Entrez le nom du paquet com.android.vending.billing

  • Copiar IInAppBillingService.aidl à partir du répertoire Android/Sdk/extras/google/play_billing dans le répertoire App_name/app/src/main/aidl/com/android/vending/billing

  • Maintenant, allez-y avec le codage de facturation InApp et lors de la définition des services liés à InApp, vous obtiendrez une erreur. can not resolve symbol IInAppBillingXXXXXX

  • Maintenant, allez à Build dans le menu Android studio, cliquez sur Rebuild Project . Cela va générer IInAppBillingService.java fichier à l'intérieur App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing . Cela résoudra le problème.

10voto

zeeawan Points 950

Le reste des messages ici ne fonctionnait pas pour moi jusqu'à ce que je crée un nouveau dossier comme celle présentée ici.

enter image description here

8voto

Ahmad Aghazadeh Points 8690

Ajoutez ce code dans build.gradle

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

Reconstruire et importer la classe aidl

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