как добавить файл 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 для работы и может мне помочь?

enter image description here

просто сообщить, некоторые ссылки я следовал:

10 ответов


так же, как говорится в сообщении об ошибке, вам нужно поставить IInAppBillingService.aidl в правильном каталоге, продиктованном его пакетом (com.андроид.продажа.фактурирование.)

внутри src/main/aidl/ папка у вас уже есть, поставить на com/android/vending/billing/.


добавив это в качестве ответа, так как это, казалось, помогло довольно многим людям.

  1. создать новую папку названо 'aidl' в разделе ' src / main/'. Это должно выглядеть так:"src / main / aidl'.
  2. Добавить новый пакет имя 'com.андроид.продажа.выставление счетов' каталог 'src / main / aidl'
  3. найдите местоположение sdk и перейдите в раздел "sdk\extras\google\play_billing". Расположение по умолчанию для sdk "C:\Program файлы (x86)\Android\Android-sdk". Если вы изменили его, вам придется выяснить местоположение через диспетчер sdk.
  4. Копировать ' IInAppBillingService.AIDL по' в пакет, созданный выше. В конце концов, он должен выглядеть похожим на изображение ниже.

Screenshot of result

  1. восстановить проект, и это должно быть хорошо идти.

Примечание: убедитесь, что вы включаете необходимый импорт, если ваша ссылка не работает

import com.android.vending.billing.IInAppBillingService;

https://issuetracker.google.com/issues/36973270

Редактировать Из Комментария

после того, как я это сделал, ссылки на IInAppBillingService в моем коде по-прежнему выделялись как ошибки, но после перестройки приложения класс был распознан


остальные сообщения здесь не работали для меня, пока я не создал новая папка как показано здесь.

enter image description here


  • создать новый каталог в разделе 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, новичкам, просто пытающимся изучить свой первый проект, может понадобиться это явно указано.


нам нужно добавить

  1. создайте папку-src / main/aidl / packagename и поместите файл aidl под этим.

  2. в файле 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 по Джиджи, глупо