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 l'application de facturation.

mon problème principal 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.facturation au src / main/aidl (voir cette référence )

mais dès que je le fais, je reçois ce message:

Gradle: échec de l'Exécution de la tâche:xxxxxxxxxxx:compileDebugAidl'.

N'a pas exécuté la commande: (...) C:UsersxxxxAndroidStudioProjectsxxxxxxProjectxxxxxxxsrcmainaidlIInAppBillingService.aidl: 45 interface IInAppBillingService doit être déclaré dans un fichier appelé com xxxxxxxx billingIInAppBillingService.aidl.

le message est clairement en contradiction avec le message de la page de bogue Google I liée 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 suivi:

  • http://tools.android.com/tech-docs/new-build-system/user-guide
  • http://developer.android.com/guide/components/aidl.html
130
demandé sur Ahmad Aghazadeh 2013-07-24 18:00:15

10 réponses

comme le dit le message d'erreur, vous devez mettre IInAppBillingService.aidl dans le répertoire correct dicté par son paquet (com.Android.distributeur.facturation.)

dans le dossier src/main/aidl/ que vous avez déjà, mettez le fichier .aidl dans com/android/vending/billing/ .

156
répondu Sam Dozor 2014-08-21 18:03:07

ajoutant ceci comme réponse car il semble aider un certain nombre de personnes.

  1. créez un nouveau répertoire nommé 'aidl' sous 'src/main/'. Il devrait ressembler à ' src/main/aidl ".
  2. Ajouter un nouveau paquet nom" com.Android.distributeur.facturation 'à l'annuaire ' src / main/aidl '
  3. Localisez votre sdk l'emplacement et aller à "sdk\extras\google\play_billing". L'emplacement par défaut du sdk est "C:\Program fichiers (x86)\Android\android-sdk". Si vous l'avez modifié sur mesure, vous devrez trouver l'emplacement par l'intermédiaire du gestionnaire sdk.
  4. Copy' Iinappbilingservice.aidl ' dans le paquet créé ci-dessus. En fin de compte, il devrait ressembler à l'image ci-dessous.

Screenshot of result

  1. reconstruire projet et il devrait être bon d'aller.

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 Du Commentaire

après avoir fait cela, les références à IInAppBillingService dans mon code étaient encore mis en évidence comme des erreurs, mais après la reconstruction de l'application, la classe a été reconnue

213
répondu Kalel Wade 2017-12-30 17:39:33

le reste des messages ne fonctionnait pas pour moi jusqu'à ce que je crée un nouveau dossier comme montré ici.

enter image description here

8
répondu zeeawan 2016-08-24 17:31:36
  • créer un nouveau répertoire sous src/main appelé aidl
  • clic droit sur le répertoire aidl , sélectionnez new->add package
  • inscrire le nom du colis com.android.vending.billing

  • Copie IInAppBillingService.aidl dans le répertoire Android/Sdk/extras/google/play_billing vers le répertoire App_name/app/src/main/aidl/com/android/vending/billing

  • maintenant, allez de l'avant avec le codage de facturation InApp et tout en définition des services liés à InApp vous obtiendrez une erreur can not resolve symbol IInAppBillingXXXXXX
  • maintenant allez à Build du menu android studio, cliquez sur Rebuild Project . Cela générera IInAppBillingService.java fichier à l'intérieur de App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing . Cela permettra de résoudre le problème.
7
répondu Praveena 2015-01-28 14:51:08

ajouter ce code dans build.Grad

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

Reconstruire et à l'importation aidl classe

5
répondu Ahmad Aghazadeh 2016-06-12 14:57:20

les réponses ci-dessus se concentrent sur l'emplacement du fichier, mais il semble que vous aviez déjà cet ensemble correctement. J'ai connu ce même problème dans Android Studio, mais aucune des réponses résolu, et je me suis cogné la tête contre elle pendant une heure. Finalement, j'ai réalisé que je manquais une importation évidente:

 import com.android.vending.billing.IInAppBillingService;

une fois que j'ai ajouté qu'il a résolu ce message d'erreur.

cette importation n'est mentionnée dans aucun des documents de facturation de Google ou inclus dans les exemples de code que j'ai trouvé. 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 de l'indiquer explicitement.

2
répondu Nicholas 2015-03-19 15:10:42

il faut ajouter

  1. créez le dossier - src/main/aidl/nom de paquet et placez le fichier aidl sous celui-ci.

  2. dans le fichier aidl - mentionner le nom du paquet. package nompackage

maintenant nettoyer le projet, reconstruire le projet - nous pouvons le fichier java correspondant pour l'aidl généré dans app\build\generated\source\aidl\debug\packagename\youraidl.Java

1
répondu Aag1189 2016-06-03 13:03:13

je sais que cela semble si facile, mais je copie pâte à partir de google échantillon tout le dossier

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

aidl/com/android/distributeurs automatiques/de facturation

copié dans project aidl (j'avais mis project view Dans Android Studio)

et ensuite je nettoyer et reconstruire le projet et il trouvé une référence.

1
répondu Natalia Majkowska 2017-12-03 16:00:26

j'ai essayé toutes les solutions, mais le problème était que Android Studio avait compilé, avec n'importe quelle raison apparente, dans un type de construction différent du module qui contient les paquets AIDL qu'il était spécifié par les paramètres. De debug à la version , donc les autres modules ne pouvaient pas voir L'AIDL pkg. Passer de debug à release et faire demi-tour a résolu mon problème.

0
répondu Alessandro Borile 2016-02-08 16:12:10

redémarrer Android Studio a fonctionné pour moi

une seconde bêtise qui m'a pris un moment. J'ai laissé tomber le code sur Android Studio pour lui permettre de créer le fichier, mais il a créé un .java (comme prévu) à la place A.aidl Jiji, stupide de moi

0
répondu pellyadolfo 2016-08-16 08:12:12