Obecnie przeprowadzam migrację aplikacji Eclipse do Android Studio. Ta aplikacja korzystała z rozliczeń w aplikacji.
Moim głównym problemem jest skompilowanie projektu i pliku pomocy (chyba wszyscy używacie tego pliku )
Otrzymuję ten komunikat o błędzie:
Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist
Tak więc, po kilku samouczkach, przenoszę ten plik z com.mypackage.billing do src / main / aidl (zobacz to odniesienie )
Ale gdy tylko to zrobię, otrzymuję wiadomość:
Gradle: nie powiodło się wykonanie zadania „: xxxxxxxxxxx: compileDebugAidl”.
Nie udało się uruchomić polecenia: (...) C: \ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl: 45 interfejs IInAppBillingService należy zadeklarować w pliku o nazwie com \ xxxxxxxx \ billing \ IInAppBillingService .aidl.
Wiadomość jest wyraźnie sprzeczna z postem ze strony błędów Google, do której linkowałem powyżej.
Czy ktoś zdołał sprawić, by ten plik pomocy działał i może mi pomóc?
Dla przypomnienia kilka linków, które poszedłem:
/src/main/aidl/com/android/vending/billing
?gradlew.bat assemble
i działa jak marzenie ... jesteś pewien, że folder to / src / main / aidl / com / android / vending / billing nie /src/main/aidl/com.android.vending.billing? AS 0.2.1? Gradle 0.5. +?Odpowiedzi:
Tak jak mówi komunikat o błędzie, musisz umieścić
IInAppBillingService.aidl
w odpowiednim katalogu podyktowanym przez jego pakiet (com.android.vending.billing).Wewnątrz
src/main/aidl/
folderu masz już, umieścić.aidl
plikcom/android/vending/billing/
.źródło
Dodając to jako odpowiedź, ponieważ wydawało się, że pomogło to wielu osobom.
Uwaga: upewnij się, że uwzględnisz niezbędny import, jeśli Twój plik referencyjny nie działa
https://issuetracker.google.com/issues/36973270
Edytuj z komentarza
Po wykonaniu tej czynności odwołania do IInAppBillingService w moim kodzie nadal były podświetlane jako błędy, ale po przebudowaniu aplikacji klasa została rozpoznana
źródło
Reszta postów tutaj nie działała, dopóki nie utworzyłem nowego folderu, jak pokazano tutaj.
źródło
src/main
nazwanymaidl
aidl
, wybierznew->add package
Wpisz nazwę pakietu
com.android.vending.billing
Skopiuj
IInAppBillingService.aidl
z kataloguAndroid/Sdk/extras/google/play_billing
do kataloguApp_name/app/src/main/aidl/com/android/vending/billing
can not resolve symbol IInAppBillingXXXXXX
Build
przejdź do menu studia Android, kliknijRebuild Project
. Spowoduje to wygenerowanieIInAppBillingService.java
pliku wewnątrzApp_Name/app/build/generated/source/aidl/debug/com/android/vending/billing
. To rozwiąże problem.źródło
Dodaj ten kod w pliku build.gradle
Przebuduj i zaimportuj klasę AIDL
źródło
Powyższe odpowiedzi koncentrują się na lokalizacji pliku, ale wydaje się, że masz już to ustawione poprawnie. Doświadczyłem tego samego problemu w Android Studio, ale żadna z wymienionych odpowiedzi go nie rozwiązała i przez godzinę waliłem w to głową. W końcu zdałem sobie sprawę, że brakuje mi oczywistego importu:
Kiedy dodałem, że rozwiązało ten komunikat o błędzie.
Ten import nie jest wspomniany w żadnym dokumencie rozliczeniowym Google ani w żadnym ze znalezionych przykładów kodu. Chociaż może to być oczywiste dla doświadczonych programistów Java, początkujący użytkownicy, którzy chcą się nauczyć swojego pierwszego projektu, mogą wymagać wyraźnego wskazania go.
źródło
Musimy dodać
utwórz folder - src / main / aidl / packagename i umieść pod nim plik aidl.
W pliku pomocy - podaj nazwę pakietu. nazwa pakietu
Teraz wyczyść projekt, odbuduj projekt - możemy odpowiadać plikowi java dla pomocy wygenerowanej w app \ build \ generated \ source \ aidl \ debug \ nazwa_pakietu \ youraidl.java
źródło
Wiem, że to brzmi tak łatwo, ale kopiuję wklej z google sample all folder
https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main
a następnie wyczyściłem i przebudowałem projekt i znalazłem odniesienie.
źródło
Wypróbowałem wszystkie rozwiązania, ale problem polegał na tym, że Android Studio skompilowało, z jakiegokolwiek wyraźnego powodu, w innym typie kompilacji modułu, który zawiera pakiety AIDL, niż określono w ustawieniach. Od debugowania do wydania , więc inne moduły nie widziały pakietu AIDL. Przełączenie się z debugowania na wydanie i odwrócenie rozwiązało mój problem.
źródło
ponowne uruchomienie Android Studio zadziałało dla mnie
druga głupia rzecz, która zajęła mi chwilę. Upuściłem kod w Android Studio, aby umożliwić mu utworzenie pliku, ale stworzył plik .java (zgodnie z oczekiwaniami) zamiast .aidl Jiji, głupi z mojej strony
źródło