Как я могу добавить файл aidl в Android Studio (из примера биллинга в приложении)

В настоящее время я переносю приложение Eclipse на Android Studio. Это приложение использовало биллинг в приложении.

Моя основная проблема состоит в том, чтобы скомпилировать проект и файл aidl (думаю, вы все используете этот файл)

Я получаю это сообщение об ошибке:

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist

Итак, следуя некоторым учебникам, я переместил этот файл из com.mypackage.billing в src / main / aidl (см. Эту ссылку)

Но как только я это делаю, я получаю следующее сообщение:

Gradle: не удалось выполнить задачу ': xxxxxxxxxxx: compileDebugAidl'.

Не удалось выполнить команду: (...) C:\Users\xxxx\AndroidStudioProjects\xxxxxxProject\xxxxxxx\src\main\aidl\IInAppBillingService.aidl:45 Интерфейс IInAppBillingService должен быть объявлен в файле с именем com \ xxxxxxxx \ billing\IInAppBilling.aidl.

Сообщение явно противоречит сообщению со страницы ошибок Google, на которое я ссылался выше.

Кто-нибудь сумел заставить этот файл помощи работать и может мне помочь?

Просто чтобы сообщить, некоторые ссылки, по которым я перешел:

14 ответов

Решение

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

В пределах src/main/aidl/ папку у вас уже есть, положите .aidl файл в com/android/vending/billing/,

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

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

Скриншот результата

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

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

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, нажмите на Rebuild Project, Это сгенерирует IInAppBillingService.java файл внутри App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing, Это решит проблему.

Добавьте этот код в build.gradle

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

Перестроить и импортировать класс aidl

Этот ответ может не совсем относиться к опубликованному вопросу, но может помочь другим, у которых возникли проблемы, связанные с созданием папки. Иногда папка AIDL не отображается в Android Studio, даже если мы создаем файл типа . Папка существует в проводнике, но не отображается и не обнаруживается в Android Studio.

У меня была эта проблема, и я решил ее, выполнив следующие действия.

Шаг 1: Откройтеgradle.propertiesфайл и добавьтеandroid.defaults.buildfeatures.aidl=trueв конце этого файла, как показано на скриншоте.

Шаг 2: Щелкните правой кнопкой мыши поappпапка, в ней появится окно, выполните следующую последовательность действийapp > New > Folder > AIDL Folder

Шаг 3: Нажмите кнопку «Готово ».AIDLпапка теперь создана и отображается в Android Studio.

Приведенные выше ответы сосредоточены на расположении файла, но, похоже, вы уже правильно его настроили Я столкнулся с такой же проблемой в Android Studio, но ни один из перечисленных ответов не решил ее, и я в течение часа ударился об нее головой. В конце концов я понял, что мне не хватает очевидного импорта:

 import com.android.vending.billing.IInAppBillingService;

Как только я добавил, что это решило это сообщение об ошибке.

Этот импорт не упоминается ни в одной из документов Google Billing и не включен ни в один из примеров кода, которые я нашел. Хотя это может быть очевидным для опытных разработчиков Java, новичкам, которые просто пытаются освоить свой первый проект, может потребоваться явное указание.

Я знаю, это звучит так просто, но я копирую вставить из Google образец все папки

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main

aidl / ком / Android / вендинг / биллинг

скопировал в помощь проекта (я установил вид проекта в Android Studio)

и затем я очищаю и перестраиваю проект, и он нашел ссылку.

Я использую Android Studio 4.1, просто щелкните правой кнопкой мыши -> Создать -> AIDL -> Файл AIDL. Файл будет создан и помещен в папку [src/main/aidl] автоматически. Папка helpl также будет создана, если она не существует.

Эта функция поддерживает только минимальный SDK 16+. Мой старый проект все еще может поддерживаться, вы можете временно изменить минимальный SDK на 16, создать помощь и построить проект. После того, как относительный интерфейс и класс будут сгенерированы, восстановите минимальные настройки sdk, он также работает и хорошо строит проект.

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

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

  2. В файле aidl - укажите название пакета. пакет имя_пакета

Теперь очистите проект, перестройте проект. Мы можем создать соответствующий java-файл для aidl, сгенерированный в app \ build \ generate \ source \ aidl \ debug \ packagename \ youraidl.java

если вы сделаете все имена правильно, перейдите в «Сборка»> «Перестроить проект», это сработало для меня.

Для gradle dsl добавьте эти строки в свой gradle.build.kts

      sourceSets {
        getByName("main") {
            aidl.srcDirs("src/main/aidl")
        }
    }
 

Перезапуск Android Studio работал у меня

вторая глупая вещь, которая заняла у меня некоторое время. Я удалил код в Android Studio, чтобы он мог создать файл, но он создал.java (как и ожидалось) вместо.aidl Jiji, глупо с моей стороны

Я испробовал все решения, но проблема заключалась в том, что Android Studio с какой-либо очевидной целью скомпилировала в модуле, который содержит пакеты AIDL, другой тип сборки, чем это было указано в настройках. От отладки до выпуска, поэтому другие модули не могли видеть pkg AIDL. Переключение с отладки на релиз и возврат обратно, решило мою проблему.

Другие вопросы по тегам