Помилка програми: Ця версія програми не налаштована на Market Billing


91

Через пару днів можна використовувати оплату через додатки в додатках Android. Дуже круто, звичайно. Отже, я почав працювати над оновленням для моєї програми, щоб реалізувати це. Але зараз я стикаюся з деякими проблемами. Це те, що я зробив:

  • Я вперше спробував зарезервовані ідентифікатори продукту для тестування статичних відповідей на виставлення рахунків у програмі. Це працює без проблем.
  • Я завантажив на ринок проект APK (із підписанням у виробництві, без підписання налагодження), який включав дозвіл com.android.vending.BILLING.
  • Коли я це зробив, я зміг додати до свого додатка на ринку "Продукти, що продаються через додаток", і встановити статус "опублікований".
  • Я створив тестового користувача та відновив свій пристрій, щоб зробити його тестовим користувачем основним обліковим записом на моєму тестовому пристрої.
  • Ідентифікатор зарезервованого товару все ще працює.

Тепер постає проблема. Коли я використовую свій власний ідентифікатор товару (той, який я додав раніше, див. Вище), відображається діалогове вікно з таким текстом:

" Помилка програми: Ця версія програми не налаштована на Market Billing. Докладнішу інформацію див. У довідковому центрі. "

У журналі я не можу знайти нічого дивного. Хтось знає, що я тут роблю не так?

Відповіді:


157

Я щойно зіткнувся з цією проблемою і зрозумів, що це тому, що я запускав налагоджувальну, непідписану версію мого додатка. У Eclipse, коли я експортував та підписав свою програму та встановив її на телефоні, я зміг користуватися своїми продуктами, що продаються через додаток, не бачачи цього повідомлення про помилку.


8
Версії для налагодження нормальні, але вони повинні бути підписані.
Barry Fruitman

1
це потрібно для публікації програми для тестування елемента inApp. я опублікував елемент inapp і не публікував додаток. я перепрошую, якщо питання безглузде чи не пов’язане.
Яна

@ jana ні, немає необхідності публікувати додаток для тестування в додатку, але так, потрібно публікувати продукт, що продається через додаток, щоб його опублікувати іншим чином, ви отримаєте помилку на своєму пристрої під час тестування продукту, що продається через додаток "Елемент не знайдено "
курд Усмана

21
Важливо зауважити, як і в деяких інших відповідях - код версії тестового додатка повинен збігатися з кодом версії вашого чернетки в Google Play. Отже, якщо ви почали із заповнювача v1 у Google Play, то підготували реальний додаток як v2 - цей реальний додаток потрібно завантажити на GP як чернетку, перш ніж закінчити його тестування.
Steve Haley

1
Нещодавно ситуація змінилася, і тепер вам потрібно опублікувати свою програму на альфа-каналі в google play, перш ніж продовжувати тестування IAP.
десять пір

43

Я виявив, що коли я завантажую нову копію мого файлу .apk на ринок, то я відчуваю цю "помилку програми" протягом наступної години або близько того. Після проходження принаймні однієї години (іноді потрібно пройти до двох годин), тоді ця помилка більше не з’являється, і я можу купувати свої предмети без будь-яких проблем. Здається, що серверам Google потрібно щонайменше годину, щоб обробити факт завантаження нового файлу .apk (щодо аспекту InApp Billing у файлі .apk).

Тож моя порада - зачекайте 1-2 години після завантаження файлу .apk, а потім перевірте, чи все ще з’являється "помилка програми".


Я просто хотів ще раз підтвердити, що ця відповідь спрацювала для мене. Я отримував цю помилку - хоча версії програм були правильними. Я не зробив нічого, окрім як почекати кілька годин, і він почав працювати коректно (помилку я більше не побачив).
Бугер

4
Я повторю це: мені також вдалося зачекати пару годин (насправді чекав всю ніч, тому я не знаю точного часу). Як невеликий редакторський коментар, розчаровує те, що Google не зміг дати точнішого повідомлення про помилку і врятувати нам усім багато неприємностей.
M Katz,

Чи означає це, що я користувач із версією програми, старшою за поточну, не можу використовувати покупки в додатку та повинен спочатку оновити програму?
Кеду,

34

Я теж зіткнувся з цією проблемою. Врешті-решт я зрозумів, що в моєму опублікованому додатку є versionCode 3, у моєму чернетках (неопублікований apk з дозволом на виставлення рахунків) - CodeCode 4, а підписаний apk, який я використовував для тестування виставлення рахунків у програмі, все ще знаходився у versionCode 3. Як тільки я змінив versionCode на 4, я зміг перейти на фактичну сторінку продукту в програмі для покупки, яку я просив.


22

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

Велике занепокоєння полягає в тому, що ми побачимо таку саму поведінку у виробництві, тобто ми випускаємо 1.0.0-1 за допомогою виставлення рахунків у програмі, потім випускаємо 1.0.0-2, а користувачі, які працюють з 1.0.0-1, будуть не змогли придбати або відновити їхні покупки і отримають таку ж помилку (дуже поганий досвід роботи з користувачем). Досліджували документи, щоб згадати цю поведінку як специфічну для тестового режиму, але поки що не везло; ми додали тут помилку: http://code.google.com/p/marketbilling/issues/detail?id=15#c0


3
+1 для додаткової інформації, перспективного мислення та посилання на низку помилок.
Bill The Ape

14

Я також зіткнувся з тією ж проблемою ... але тепер проблема вирішена

Мої спостереження, засновані на кількох випробуваннях:

  1. Код версії повинен відповідати як у Google Play, так і на Пристрої
  2. Хоча версії збігаються, ми все одно можемо отримати цю помилку
  3. Зачекайте приблизно 1-2 години, а потім спробуйте, ми не отримаємо цієї помилки

Сподіваюся, це допомагає


1
Я також виявив, що код версії повинен збігатися. Принаймні ваша тестова версія не може бути вищою, ніж версія Google Play. Я не впевнений, чи навпаки теж правда. Я сподіваюсь, що ні, тому що це означало б, що люди зі старішою версією програми не можуть використовувати мою оплату через додаток.
Пітер Фортуїн

№3 був фокус. Якщо ви впевнені, що все гаразд, перервіться і спробуйте пізніше. Просто потрібно трохи часу на оновлення :)
nuala

7

Скопійовано з дубліката запитання: https://stackoverflow.com/a/22469253/1321401

Ця помилка може виникнути з кількох причин.
Ось список вимог до тестування Google IAB.

Передумови:

  1. AndroidManifest повинен містити дозвіл "com.android.vending.BILLING" .
  2. APK побудований у режимі випуску .
  3. APK підписаний з сертифікатом випуску (ів) .
  4. APK принаймні один раз завантажується на канал розповсюдження alfa / beta (раніше - як чернетка) на консоль розробника. (займає деякий час ~ 2h-24h ).
  5. Продукція IAB публікується і статус їх встановлюється як активний .
  6. Тестові облікові записи додано в консолі розробника.

Вимоги до тестування:

  1. Тестовий файл .apk має той самий код версії, що і той , що завантажений на консоль розробника.
  2. Тестовий файл .apk підписується тими ж сертифікатами, що й сертифікат, завантажений на dev.console.
  3. Тестовий акаунт (не розробник) - це основний акаунт на пристрої.

PS: Налагодження за допомогою сертифіката випуску : https://stackoverflow.com/a/15754187/1321401 ( для посилання Thnx @dipp )

PPS: Давно хотів скласти цей список.

Thnx @zlgdev для оновлення


1
Версія Code мене зрозуміла - навіщо це потрібно?
слот

5

Моє рішення полягало в тому, що мені потрібно було використовувати той самий ключ для підписання apk в Market (як проект APK) та в тесті. Отже, замість того, щоб просто запускати програму, мені завжди доводиться експортувати підписаний APK з кожним оновленням, видаляти та переінсталювати його на пристрої за допомогою команд командного рядка apk. В принципі, ви також можете використовувати власний магазин ключів як налагоджувальний магазин, але він вимагає використання конкретних закодованих паролів та імен ключів.


0

Думав, я поділюся ще одним можливим рішенням, якщо ви отримуєте цю помилку. Спочатку я завантажив у Google чернетку свого apk з увімкненим дозволом на виставлення рахунків, тож зміг налаштувати у програмах, що можна придбати. Пізніше я завантажив ще один файл .apk без дозволу на виставлення рахунків, відсутнього в моєму AndroidManifest, що призвело до помилки. Безумовно, це здається малоймовірним випадком, але це сталося для мене, тому це можливо.

Редагувати: уздовж тієї ж сторінки, якщо версія, яку ви подали як чернетку в Google, не підписана, помилка також трапиться.


0

Щоб викинути свої два центи, я зміг це протестувати, завантаживши в бета-версію та створивши обліковий запис Gmail із тестовим доступом на вкладці налаштувань з новою версією мого додатка ...

Зараз я переношу його на виробництво ...

Дякую! Натан


-2

Стара тема, але додаю свій досвід ...

Я встановив apk з версією CodeCode 1 вище, ніж у магазині. Грав у двох різних облікових записах на моєму Nexus 7 і відчував цю проблему. Тож я видалив та переінсталював із магазину, щоб переконатися, що versionCode відповідає. Навіть чекаючи ночі помилка не була очищена.

Виявляється, мені потрібно було видалити з усіх 3 облікових записів Google, які я прив’язав до свого Nexus 7. Він відновився, коли я явно видалив програму з усіх трьох облікових записів на моєму nexus 7, а потім перевстановив із магазину.

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