как добавить файл aidl в Android studio (из примера биллинга в приложении)
в настоящее время я переношу приложение Eclipse на Android Studio. Это приложение использует в приложение биллинга.
моя главная проблема-скомпилировать проект и файл aidl (я думаю, вы все используете этот файл)
Я получаю это сообщение об ошибке:
Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist
Итак, следуя некоторым учебникам, я перемещаю этот файл из com.пакета mypackage.выставление счетов src / main/aidl (см. этой ссылке)
но как только я это сделаю, я получу это сообщение:
Gradle:не удалось выполнить задачу': xxxxxxxxxxx: compileDebugAidl'.
не удалось выполнить команду: (...) C:UsersxxxxAndroidStudioProjectsxxxxxxProjectxxxxxxxsrcmainaidlIInAppBillingService.AIDL по:45 интерфейс IInAppBillingService должен быть объявлен в файле с именем comxxxxxxxxбиллингIInAppBillingService.AIDL по.
сообщение явно противоречит сообщение со страницы ошибки Google, которую я связал выше.
кто-нибудь успешно сделал этот файл aidl для работы и может мне помочь?
просто сообщить, некоторые ссылки я следовал:
10 ответов
так же, как говорится в сообщении об ошибке, вам нужно поставить IInAppBillingService.aidl
в правильном каталоге, продиктованном его пакетом (com.андроид.продажа.фактурирование.)
внутри src/main/aidl/
папка у вас уже есть, поставить на com/android/vending/billing/
.
добавив это в качестве ответа, так как это, казалось, помогло довольно многим людям.
- создать новую папку названо 'aidl' в разделе ' src / main/'. Это должно выглядеть так:"src / main / aidl'.
- Добавить новый пакет имя 'com.андроид.продажа.выставление счетов' каталог 'src / main / aidl'
- найдите местоположение sdk и перейдите в раздел "sdk\extras\google\play_billing". Расположение по умолчанию для sdk "C:\Program файлы (x86)\Android\Android-sdk". Если вы изменили его, вам придется выяснить местоположение через диспетчер sdk.
- Копировать ' IInAppBillingService.AIDL по' в пакет, созданный выше. В конце концов, он должен выглядеть похожим на изображение ниже.
- восстановить проект, и это должно быть хорошо идти.
Примечание: убедитесь, что вы включаете необходимый импорт, если ваша ссылка не работает
import com.android.vending.billing.IInAppBillingService;
https://issuetracker.google.com/issues/36973270
Редактировать Из Комментария
после того, как я это сделал, ссылки на IInAppBillingService в моем коде по-прежнему выделялись как ошибки, но после перестройки приложения класс был распознан
- создать новый каталог в разделе
src/main
под названиемaidl
- щелкните правой кнопкой мыши по каталогу
aidl
выберитеnew->add package
введите имя пакета
com.android.vending.billing
скопировать
IInAppBillingService.aidl
из каталогаAndroid/Sdk/extras/google/play_billing
в каталогеApp_name/app/src/main/aidl/com/android/vending/billing
- теперь идти вперед с iNAPP биллинга кодирования и при определении услуг, связанных с InApp вы получите ошибку
can not resolve symbol IInAppBillingXXXXXX
- теперь перейти к
Build
от Android studio меню, нажмите наRebuild Project
. Это будет генерировать внутриApp_Name/app/build/generated/source/aidl/debug/com/android/vending/billing
. Это решит проблему.
добавьте этот код в build.Gradle в
android {
sourceSets {
main {
aidl.srcDirs = ['src']
}
}
}
перестроить и импортировать класс AIDL
приведенные выше ответы сосредоточены на местоположении файла, но, похоже, у вас уже был этот набор правильно. Я испытал эту же проблему в Android Studio, но ни один из перечисленных ответов не разрешил ее, и я ударился головой об нее в течение часа. В конце концов, я понял, что мне не хватает очевидного импорта:
import com.android.vending.billing.IInAppBillingService;
Как только я добавил, что он разрешил это сообщение об ошибке.
этот импорт не упоминается ни в одном из документов Google Billing или включен в любой из кода примеры, которые я нашел. Хотя это может быть очевидно для опытных разработчиков Java, новичкам, просто пытающимся изучить свой первый проект, может понадобиться это явно указано.
нам нужно добавить
создайте папку-src / main/aidl / packagename и поместите файл aidl под этим.
в файле aidl - Укажите имя пакета. имя_пакета пакет
теперь очистите проект, перестройте проект - мы можем соответствующий файл java для aidl, сгенерированный в app\build\generated\source\aidl\debug\packagename\youraidl.java
Я знаю, что это звучит так просто, но я копирую пасту из Google sample all folder
https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main
aidl / com / android / вендинг / биллинг
скопировано в project aidl (я установил представление проекта в Android Studio)
и затем я очищаю и перестраиваю проект, и он нашел ссылку.
Я пробовал все решения, но проблема заключалась в том, что Android Studio скомпилировала, по любой очевидной причине, в другом типе сборки модуля, который содержит пакеты AIDL, чем это было указано в настройках. От debug на Release, поэтому другие модули не могли видеть AIDL pkg. Переключение с отладки на выпуск и обратно, решило мою проблему.
перезапуск Android Studio работал для меня
вторая глупость, которая заняла у меня некоторое время. Я бросил код на Android Studio, чтобы позволить ему создать файл, но он создал .java (как и ожидалось) вместо a .AIDL по Джиджи, глупо