Как я могу добавить файл 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/
,
Добавив это как ответ, так как это, казалось, помогло довольно многим людям.
- Создайте новый каталог с именем 'aidl' в 'src / main /'. Это должно выглядеть как ' src / main / aidl '.
- Добавьте новое имя пакета ' com.android.vending.billing ' в каталог ' src / main / aidl '
- Найдите свое местоположение SDK и перейдите в "sdk\extras\google\play_billing". Расположение по умолчанию для SDK: "C:\Program Files (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, нажмите на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, он также работает и хорошо строит проект.
Нам нужно добавить
создайте папку - src/main/aidl/packagename и поместите под нее файл aidl.
В файле 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. Переключение с отладки на релиз и возврат обратно, решило мою проблему.