як я можу додати файл helpl до студії Android (із прикладу виставлення рахунків у програмі)


136

Наразі переносять додаток 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 \ helpl \ IInAppBillingService.aidl: 45 інтерфейс IInAppBillingService слід оголосити у файлі під назвою com \ xxxxxxxx \ billing \ IInAppB II .aidl.

Повідомлення явно суперечить публікації зі сторінки помилок Google, яку я пов’язував вище.

Хто-небудь звернувся до того, щоб цей файл допомоги працював і чи можу я допомогти мені?

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

Тільки для того, щоб повідомити, я перейшов декілька посилань:


питання ... чи не повинен бути цей файл helpl /src/main/aidl/com/android/vending/billing?
Селвін

1
Gradle: Виконання не виконано для завдання ': MyProject: compileDebugAidl'. > Не вдалося запустити команду: 45 інтерфейс IInAppBillingService повинен бути оголошений у файлі під назвою com \ android \ vending \ billing \ IInAppBillingService.aidl.
Waza_Be

1
щось говорить мені, що ти все ще не вкладаєш його в папку, про яку ми говоримо Селвін ...?
Сем Дозор

просто додав новий скріншот, я думаю, що я помістив його в папку, яку ви мені сказали ..
Waza_Be

selvin.pl/TrivialDriveProject.Gradle.zip (змінити sdk dir у local.properties) ... gradlew.bat assembleі це працює як шарм ... ти впевнений, що папка / src / main / helpl / com / android / vending / billing не /src/main/aidl/com.android.vending.billing? ЯК 0,2,1? Граділ 0,5. +?
Селвін

Відповіді:


162

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

Помістіть файл у src/main/aidl/папку, яку ви вже маєте ..aidlcom/android/vending/billing/


5
Коли я це роблю, я отримую: Gradle: error: не вдається знайти символ символу IInAppBillingService
Waza_Be

9
значить, це в / src / main / aidl / com / android / vending / billing? Ви використовуєте gradle для побудови? Якщо так, натисніть маленьку кнопку grade у верхньому правому куті Android Studio, щоб мати конфігурацію перезавантаження gradle, або закрийте / відкрийте Android Studio.
Сем Дозор

80
Просто для уточнення. Створіть каталог helpl під src / main /. Потім додайте новий пакет com.android.vending.billing. Потім скопіюйте файл helpl у новий пакет. Дивіться code.google.com/p/android/isissue/detail?id=56755
Kalel Wade

2
@Kalel Wade Це було рішення для мене, ви повинні додати його як відповідь.
eski

3
Якщо у вас немає src / main, створіть каталог helpl будь-де та вкажіть у build.gradle: android {sourceSets {main {helpl {srcDirs 'фактичний_пат ..'
алеб

221

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

  1. Створіть новий каталог під назвою 'aidl' під 'src / main /'. Це має виглядати як " src / main / aidl ".
  2. Додайте нову назву пакета ' com.android.vending.billing ' до каталогу ' src / main / helpl '
  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/isissue/36973270

Редагувати з коментаря

Після того, як я це зробив, посилання на IInAppBillingService в моєму коді все ще виділялися як помилки, але після відновлення програми клас було визнано


1
Просто, щоб було зрозуміло: прочитайте це ретельно! Я не ... ще раз підкреслюю: це гарне доповнення ... ВИДАЙТЕ com.android.vending.billing У НОВИЙ каталог «main / helpl»!
Хлопчик

5
Після того як я це зробив, посилання на IInAppBillingService в моєму коді все ще виділялися як помилки, але після відновлення програми клас був розпізнаний.
арломедіа

Це спрацювало, але чому це все не автоматично, коли ви вирішите додати модуль?
андроїд розробник

Дякуємо за пораду щодо відновлення проекту. Також папку та пакет можна створити за смаком, це не обов'язково повинно бути основним. (Якщо, наприклад, ви робите лише виставлення рахунків за один додаток)
Майк Фоскер

4
Провівши 20 хвилин, намагаючись вирішити цю проблему, поки я не прийшов до вашої відповіді. Тоді я спробував підкріпити це, щоб отримати помилку "Ви востаннє проголосували за цю відповідь ..." Напевно, деякі люди ніколи не дізнаються :)
beetree

10

Решта публікацій тут не працювали для мене, поки я не створив нову папку, як показано тут.

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


9
  • Створіть новий каталог під src/mainназвою callaidl
  • Клацніть правою кнопкою миші на каталог 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. Це вирішить питання.

@MOHSENNAVABI Без проблем :-)
Praveena

Після копіювання файлу "IInAppBillingService.aidl", чи потрібно змінити будь-який рядок цього файлу? Я бачив деякі примітки з проханням замінити ім'я пакета, оскільки воно виходить із зразка, щоб уникнути помилки "aidl.exe", закінченої ненульовим значенням виходу 1 ". Які конкретні вказівки для цього робити?
Пабло Альфонсо

7

Додайте цей код у build.gradle

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

Перебудувати та імпортувати допоміжний клас


2

Наведені вище відповіді зосереджені на розташуванні файлів, але, здається, у вас це було правильно встановлено. Цю ж проблему я відчував у студії Android, але жодна із перерахованих відповідей не вирішила її, і я протягом години бив головою об неї. Врешті-решт я зрозумів, що мені не вистачає явного імпорту:

 import com.android.vending.billing.IInAppBillingService;

Одного разу я додав, що вирішив це повідомлення про помилку.

Цей імпорт не згадується в жодних документах Google для виставлення рахунків і не міститься в будь-якому знайденому нами прикладі коду. Хоча для досвідчених розробників Java це може бути очевидним, початківцям, які просто намагаються дізнатися свій перший проект, можливо, це буде чітко вказано.


1

Нам потрібно додати

  1. створити папку - src / main / aidl / ім'я пакета та розмістити файл helpl під цим.

  2. У файлі helpl - вкажіть назву пакета. Ім'я пакета

Тепер очистіть проект, відновіть проект - Ми можемо відповідний файл Java для асистента, створеного в додатку \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java


1

Я знаю, що це звучить так просто, але я копіюю пасту з google sample всі папки

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

helpl / com / android / торговий / виставлення рахунків

скопійовано в проект helpl (я встановив перегляд проекту в Android Studio)

а далі я прибираю і відновлюю проект, і він знайшов посилання.


0

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


0

перезапуск Android Studio працював на мене

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.