Saya saat ini memigrasi aplikasi Eclipse ke Android Studio. Aplikasi ini menggunakan penagihan dalam aplikasi.
Masalah utama saya adalah mengkompilasi proyek dan file bantuan (saya kira Anda semua menggunakan file ini )
Saya mendapatkan pesan kesalahan ini:
Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist
Jadi, mengikuti beberapa tutorial, saya memindahkan file ini dari com.mypackage.billing ke src / main / aidl (lihat referensi ini )
Tetapi segera, setelah saya melakukannya, saya mendapatkan pesan ini:
Gradle: Eksekusi gagal untuk tugas ': xxxxxxxxxxx: compileDebugAidl'.
Gagal menjalankan perintah: (...) C: \ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl: 45 antarmuka IInAppBillingService harus dideklarasikan dalam file bernama com \ xxxxxxxx \ billing \ IInAppBillingService .aidl.
Pesan tersebut jelas bertentangan dengan kiriman dari halaman bug Google yang saya tautkan di atas.
Adakah yang berhasil membuat file bantuan ini berfungsi dan dapat membantu saya?
Sekadar informasi, beberapa tautan yang saya ikuti:
/src/main/aidl/com/android/vending/billing
?gradlew.bat assemble
dan berfungsi seperti pesona ... apakah Anda yakin folder itu adalah / src / main / aidl / com / android / vending / billing bukan /src/main/aidl/com.android.vending.billing? SEBAGAI 0.2.1? Gradle 0,5. +?Jawaban:
Seperti yang dikatakan pesan kesalahan, Anda harus memasukkan
IInAppBillingService.aidl
direktori yang benar yang ditentukan oleh paketnya (com.android.vending.billing).Di dalam
src/main/aidl/
folder yang sudah Anda miliki, masukkan.aidl
filecom/android/vending/billing/
.sumber
Menambahkan ini sebagai jawaban karena tampaknya membantu beberapa orang.
Catatan: Pastikan Anda menyertakan impor yang diperlukan jika referensi Anda tidak berfungsi
import com.android.vending.billing.IInAppBillingService;
https://issuetracker.google.com/issues/36973270
Edit Dari Komentar
Setelah saya melakukan ini, referensi ke IInAppBillingService dalam kode saya masih disorot sebagai kesalahan, tetapi setelah membangun kembali aplikasi, kelas tersebut dikenali
sumber
Sisa posting di sini tidak berfungsi untuk saya sampai saya membuat folder baru seperti yang ditunjukkan di sini.
sumber
src/main
panggilaidl
aidl
, pilihnew->add package
Masukkan Nama paket
com.android.vending.billing
Salin
IInAppBillingService.aidl
dari direktoriAndroid/Sdk/extras/google/play_billing
ke direktoriApp_name/app/src/main/aidl/com/android/vending/billing
can not resolve symbol IInAppBillingXXXXXX
Build
dari menu studio android, klikRebuild Project
. Ini akan menghasilkanIInAppBillingService.java
file di dalamnyaApp_Name/app/build/generated/source/aidl/debug/com/android/vending/billing
. Ini akan menyelesaikan masalah.sumber
Tambahkan kode ini di build.gradle
android { sourceSets { main { aidl.srcDirs = ['src'] } } }
Membangun kembali dan mengimpor kelas aidl
sumber
Jawaban di atas berkonsentrasi pada lokasi file, tetapi tampaknya Anda sudah mengaturnya dengan benar. Saya mengalami masalah yang sama ini di Android Studio, tetapi tidak ada jawaban yang tercantum yang menyelesaikannya, dan saya membenturkan kepala saya selama satu jam. Akhirnya, saya menyadari bahwa saya kehilangan impor yang jelas:
import com.android.vending.billing.IInAppBillingService;
Setelah saya menambahkan bahwa itu menyelesaikan pesan kesalahan ini.
Impor ini tidak disebutkan dalam dokumen Penagihan Google mana pun atau termasuk dalam contoh kode mana pun yang saya temukan. Meskipun mungkin terlihat jelas bagi pengembang Java yang berpengalaman, pemula yang hanya mencoba mempelajari proyek pertama mereka mungkin perlu disebutkan secara eksplisit.
sumber
Kami perlu menambahkan
buat folder - src / main / aidl / nama paket dan tempatkan file bantuan di bawah ini.
Di file bantuan - sebutkan nama paket. paket nama paket
Sekarang bersihkan proyek, bangun kembali proyek - Kita dapat file java yang sesuai untuk bantuan yang dihasilkan di app \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java
sumber
Saya tahu kedengarannya sangat mudah, tetapi saya menyalin tempel dari sampel google semua folder
https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main
dan selanjutnya saya membersihkan dan membangun kembali proyek dan menemukan referensi.
sumber
Saya telah mencoba setiap solusi, tetapi masalahnya adalah Android Studio telah mengompilasi, dengan alasan apa pun yang jelas, dalam tipe build modul yang berbeda yang berisi paket AIDL daripada yang ditentukan oleh pengaturan. Dari debug hingga rilis , sehingga modul lain tidak dapat melihat pkg AIDL. Beralih dari debug ke rilis dan kembali, memecahkan masalah saya.
sumber
memulai ulang Android Studio berhasil untuk saya
hal konyol kedua yang memakan waktu cukup lama. Saya menjatuhkan kode di Android Studio untuk mengizinkannya membuat file, tetapi dia membuat .java (seperti yang diharapkan), bukan .aidl Jiji, bodohnya saya
sumber