Как я могу добавить файл helpl в студию Android (из примера выставления счетов в приложении)

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

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

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

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 должен быть объявлен в файле с именем   ком\XXXXXXXX\биллинг\IInAppBillingService.aidl.

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

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

enter image description here

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

Ответ 1

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

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

Ответ 2

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

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

Screenshot of result

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

Примечание. Обязательно укажите необходимый импорт, если ваша ссылка не работает.

import com.android.vending.billing.IInAppBillingService;

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

Ответ 3

  • Создать новый каталог под 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. Это решит проблему.

Ответ 4

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

введите описание изображения здесь

Ответ 5

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

 import com.android.vending.billing.IInAppBillingService;

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

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

Ответ 6

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

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

Восстановить и импортировать класс accl

Ответ 7

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

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

  • В файле helpl укажите имя пакета. package packagename

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

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

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

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