Je suis en train de migrer une application Eclipse vers Android Studio . Cette application utilisait la facturation intégrée à l'application.
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
Ainsi, après quelques tutoriels, je déplace ce fichier de com.mypackage.billing vers src/main/aidl (Voir this reference )
Mais dès que je fais ça, je reçois ce message:
Titre: Échec de l'exécution pour la tâche ': xxxxxxxxxxx: compileDebugAidl'.
Échec de l'exécution de la commande: (...) C:\Utilisateurs\xxxx\AndroidStudioProjects\xxxxxxProject\xxxxxxx\src\main\aidl\IInAppBillingService.aidl: 45 L'interface IInAppBillingService doit être déclarée dans un fichier nommé com\xxxxxxxx\billing\IInAppBillingService.aidl.
Le message est clairement une contradiction avec le message de la page de bogue Google que j'ai liée ci-dessus.
Quelqu'un a réussi à faire fonctionner ce fichier et peut m'aider?
Juste pour informer, quelques liens que j'ai suivis:
Tout comme le message d'erreur le dit, vous devez mettre IInAppBillingService.aidl
dans le bon répertoire, dicté par son package (com.Android.vending.billing).
Dans le dossier src/main/aidl/
que vous avez déjà, placez le fichier .aidl
dans com/Android/vending/billing/
.
Ajouter cela comme une réponse, car cela semblait aider pas mal de gens.
Remarque: 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
Editer un commentaire
Après cela, les références à IInAppBillingService dans mon code étaient toujours signalées comme des erreurs, mais après la reconstruction de l'application, la classe était reconnue.
src/main
appelé aidl
aidl
, sélectionnez new->add package
Entrez le nom du paquet com.Android.vending.billing
Copiez IInAppBillingService.aidl
du répertoire Android/Sdk/extras/google/play_billing
dans le répertoire App_name/app/src/main/aidl/com/Android/vending/billing
can not resolve symbol IInAppBillingXXXXXX
Build
du menu du studio Android, cliquez sur Rebuild Project
. Cela générera un fichier IInAppBillingService.Java
dans App_Name/app/build/generated/source/aidl/debug/com/Android/vending/billing
. Cela résoudra le problème.Ajoutez ce code dans build.gradle
Android {
sourceSets {
main {
aidl.srcDirs = ['src']
}
}
}
Reconstruire et importer une classe d'aide
Les réponses ci-dessus se concentrent sur l'emplacement du fichier, mais il semble que vous l'avez déjà défini correctement. J'ai rencontré le même problème dans Android Studio, mais aucune des réponses répertoriées ne l'a résolu et je me suis cogné la tête pendant une heure. Finalement, j'ai réalisé qu'il me manquait une importation évidente:
import com.Android.vending.billing.IInAppBillingService;
Une fois que j'ai ajouté qu'il résolvait ce message d'erreur.
Cette importation n'est mentionnée dans aucune des documentations Google Billing ni dans les exemples de code que j'ai trouvés. Bien que cela puisse sembler évident aux développeurs Java expérimentés, les débutants qui souhaitent simplement apprendre leur premier projet peuvent avoir besoin de le mentionner explicitement.
Nous devons ajouter
créer un dossier - src/main/aidl/packagename et placer le fichier aidl sous celui-ci.
Dans le fichier aidl, indiquez le nom du package . Package nom_package
Maintenant, nettoyez le projet, reconstruisez-le. Nous pouvons trouver le fichier Java correspondant à l'aide générée dans app\build\généré\source\aidl\debug\nomdu paquet\nomaid.Java
Je sais que cela semble si facile, mais je copie coller de google sample all folder
https://github.com/googlesamples/Android-play-billing/tree/master/TrivialDrive/app/src/main
aidl/com/Android/distributeurs automatiques/facturation
copié dans project 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.
redémarrer Android Studio a fonctionné pour moi
une deuxième chose stupide qui m'a pris un certain temps. 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 d'un .aidl Jiji, stupide de ma part.
J'ai essayé toutes les solutions, mais le problème était qu'Android Studio avait compilé, sans aucune raison apparente, dans un type de version du module contenant les packages AIDL différent de celui spécifié par les paramètres . From debug pour libérer , afin que les autres modules ne puissent pas voir le paquet AIDL . Passer de debug à release et revenir en arrière, a résolu mon problème.