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?
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
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/
.
ajoutant ceci comme réponse car il semble aider un certain nombre de personnes.
- créez un nouveau répertoire nommé 'aidl' sous 'src/main/'. Il devrait ressembler à ' src/main/aidl ".
- Ajouter un nouveau paquet nom" com.Android.distributeur.facturation 'à l'annuaire ' src / main/aidl '
- 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.
- Copy' Iinappbilingservice.aidl ' dans le paquet créé ci-dessus. En fin de compte, il devrait ressembler à l'image ci-dessous.
- 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
le reste des messages ne fonctionnait pas pour moi jusqu'à ce que je crée un nouveau dossier comme montré ici.
- créer un nouveau répertoire sous
src/main
appeléaidl
- clic droit sur le répertoire
aidl
, sélectionneznew->add package
-
inscrire le nom du colis
com.android.vending.billing
-
Copie
IInAppBillingService.aidl
dans le répertoireAndroid/Sdk/extras/google/play_billing
vers le répertoireApp_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 surRebuild Project
. Cela généreraIInAppBillingService.java
fichier à l'intérieur deApp_Name/app/build/generated/source/aidl/debug/com/android/vending/billing
. Cela permettra de résoudre le problème.
ajouter ce code dans build.Grad
android {
sourceSets {
main {
aidl.srcDirs = ['src']
}
}
}
Reconstruire et à l'importation aidl classe
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.
il faut ajouter
-
créez le dossier - src/main/aidl/nom de paquet et placez le fichier aidl sous celui-ci.
-
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
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.
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.
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