bagaimana cara menambahkan file bantuan ke studio Android (dari contoh penagihan dalam aplikasi)

136

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?

masukkan deskripsi gambar di sini

Sekadar informasi, beberapa tautan yang saya ikuti:

Waza_Be
sumber
Pertanyaannya adalah ... bukankah seharusnya file bantuan ini masuk /src/main/aidl/com/android/vending/billing?
Selvin
1
Gradle: Eksekusi gagal untuk tugas ': MyProject: compileDebugAidl'. > Gagal menjalankan perintah: 45 antarmuka IInAppBillingService harus dideklarasikan dalam file bernama com \ android \ vending \ billing \ IInAppBillingService.aidl.
Waza_Be
1
sesuatu memberitahuku bahwa kamu masih belum memasukkannya ke folder yang Selvin dan aku katakan ...?
Sam Dozor
baru saja menambahkan tangkapan layar baru, sepertinya saya meletakkannya di folder yang Anda beri tahu ..
Waza_Be
selvin.pl/TrivialDriveProject.Gradle.zip (ubah dir sdk di local.properties) ... gradlew.bat assembledan 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. +?
Selvin

Jawaban:

163

Seperti yang dikatakan pesan kesalahan, Anda harus memasukkan IInAppBillingService.aidldirektori yang benar yang ditentukan oleh paketnya (com.android.vending.billing).

Di dalam src/main/aidl/folder yang sudah Anda miliki, masukkan .aidlfile com/android/vending/billing/.

Sam Dozor
sumber
5
Ketika saya melakukan ini, saya mendapatkan: Gradle: error: tidak dapat menemukan kelas simbol IInAppBillingService
Waza_Be
9
jadi ada di / src / main / aidl / com / android / vending / billing? Apakah Anda menggunakan gradle untuk membangun? Jika demikian, tekan tombol gradle kecil di kanan atas Android Studio untuk memiliki konfigurasi pemuatan ulang gradle, atau tutup / buka Android Studio.
Sam Dozor
80
Hanya untuk mengklarifikasi. Buat bantuan direktori di bawah src / main /. Kemudian tambahkan paket baru com.android.vending.billing. Kemudian salin file bantuan ke dalam paket baru. Lihat code.google.com/p/android/issues/detail?id=56755
Kalel Wade
2
@Kalel Wade Ini adalah solusi untuk saya, Anda harus menambahkannya sebagai jawaban.
eski
3
Jika Anda tidak memiliki src / main, buat direktori aidl di mana saja dan tentukan di build.gradle: android {sourceSets {main {aidl {srcDirs 'actual_path ..'
aleb
222

Menambahkan ini sebagai jawaban karena tampaknya membantu beberapa orang.

  1. Buat direktori baru bernama 'aidl' di bawah 'src / main /'. Ini harus terlihat seperti ' src / main / aidl '.
  2. Tambahkan nama paket baru ' com.android.vending.billing ' ke direktori ' src / main / aidl '
  3. Temukan lokasi sdk Anda dan buka "sdk \ extras \ google \ play_billing". Lokasi default untuk sdk adalah "C: \ Program Files (x86) \ Android \ android-sdk". Jika Anda mengubahnya secara kustom, Anda harus mencari tahu lokasinya melalui sdk manager.
  4. Salin 'IInAppBillingService.aidl' ke dalam paket yang dibuat di atas. Pada akhirnya, akan terlihat seperti gambar di bawah ini.

Tangkapan layar hasil

  1. Bangun kembali proyek dan itu harus dilakukan.

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

Kalel Wade
sumber
1
Hanya untuk memperjelas: baca ini dengan saksama! Saya tidak ... untuk menekankan lagi: Ini ADALAH tambahan yang bagus ... Taruh com.android.vending.billing DI direktori 'main / aidl' BARU!
Boy
5
Setelah saya melakukan ini, referensi ke IInAppBillingService dalam kode saya masih disorot sebagai kesalahan, tetapi setelah membangun kembali aplikasi, kelas tersebut dikenali.
arlomedia
Ini berhasil, tetapi mengapa ini tidak semuanya otomatis, ketika Anda memilih untuk menambahkan modul?
Pengembang android
Terima kasih atas tip proyek rekondisi. Juga folder dan paket bisa dibuat dalam sebuah flavor, tidak harus di main. (Jika misalnya Anda hanya melakukan penagihan aplikasi dalam satu rasa aplikasi Anda)
Mike Fosker
4
Menghabiskan 20 menit untuk mencoba memecahkan masalah ini sampai saya mendapatkan jawaban Anda. Kemudian saya mencoba meningkatkannya untuk mendapatkan kesalahan "Anda terakhir memberikan suara untuk jawaban ini ..." Saya kira beberapa orang tidak pernah belajar :)
beetree
10

Sisa posting di sini tidak berfungsi untuk saya sampai saya membuat folder baru seperti yang ditunjukkan di sini.

masukkan deskripsi gambar di sini

zeeawan
sumber
9
  • Buat direktori baru di bawah src/mainpanggilaidl
  • Klik kanan pada direktori aidl, pilihnew->add package
  • Masukkan Nama paket com.android.vending.billing

  • Salin IInAppBillingService.aidldari direktori Android/Sdk/extras/google/play_billingke direktoriApp_name/app/src/main/aidl/com/android/vending/billing

  • Sekarang lanjutkan dengan pengkodean penagihan InApp dan saat menentukan layanan terkait InApp Anda akan mendapatkan kesalahan can not resolve symbol IInAppBillingXXXXXX
  • Sekarang pergi ke Builddari menu studio android, klik Rebuild Project. Ini akan menghasilkan IInAppBillingService.javafile di dalamnya App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing. Ini akan menyelesaikan masalah.
Praveena
sumber
@MOHSENNAVABI Tidak masalah :-)
Praveena
Setelah menyalin file "IInAppBillingService.aidl", apakah perlu mengubah baris apa pun dari file ini? Saya telah melihat beberapa catatan yang meminta untuk mengganti nama paket karena itu berasal dari sampel untuk menghindari kesalahan "aidl.exe 'selesai dengan nilai keluar bukan nol 1". Apa instruksi khusus untuk melakukan ini?
Pablo Alfonso
7

Tambahkan kode ini di build.gradle

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

Membangun kembali dan mengimpor kelas aidl

Ahmad Aghazadeh
sumber
2

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.

Nicholas
sumber
1

Kami perlu menambahkan

  1. buat folder - src / main / aidl / nama paket dan tempatkan file bantuan di bawah ini.

  2. 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

Aag1189
sumber
0

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.

Alessandro Borile
sumber
0

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

pellyadolfo.dll
sumber