Błąd aplikacji: ta wersja aplikacji nie jest skonfigurowana do rozliczeń w usłudze Market

91

Od kilku dni w aplikacjach na Androida można korzystać z rozliczeń w aplikacji. Oczywiście bardzo fajne. Zacząłem więc pracować nad aktualizacją mojej aplikacji, aby to zaimplementować. Ale teraz mam pewne problemy. Oto co zrobiłem:

  • Najpierw wypróbowałem zarezerwowane identyfikatory produktów do testowania statycznych odpowiedzi rozliczeniowych w aplikacji. To działa bez problemów.
  • Przesłałem wersję roboczą APK na rynek (z podpisem produkcyjnym, bez podpisywania debugowania), która zawierała uprawnienie com.android.vending.BILLING.
  • Kiedy to zrobiłem, mogłem dodać „Produkty w aplikacji” do mojej aplikacji na rynku i ustawić jej stan na opublikowany.
  • Utworzyłem użytkownika testowego i zresetowałem urządzenie, aby ustawić go jako podstawowe konto na moim urządzeniu testowym.
  • Zarezerwowany identyfikator produktu nadal działa.

Teraz pojawia się problem. Kiedy używam własnego identyfikatora produktu (tego, który dodałem wcześniej, patrz wyżej), pojawia się okno dialogowe z następującym tekstem:

Błąd aplikacji: ta wersja aplikacji nie jest skonfigurowana do rozliczeń w usłudze Market. Więcej informacji można znaleźć w Centrum pomocy ”.

W dzienniku nie ma nic dziwnego. Czy ktoś wie, co tu robię źle?

Peter Fortuin
źródło

Odpowiedzi:

157

Właśnie napotkałem ten problem i zdałem sobie sprawę, że jest to spowodowane uruchomieniem debugowanej, niepodpisanej wersji mojej aplikacji. W Eclipse, kiedy wyeksportowałem i podpisałem moją aplikację oraz zainstalowałem ją na telefonie, mogłem używać produktów w aplikacji bez wyświetlania tego komunikatu o błędzie.

esilver
źródło
8
Wersje debugowania są w porządku, ale muszą być podpisane.
Barry Fruitman
1
czy jest to konieczne do opublikowania aplikacji do testowania elementu inApp. opublikowałem element inapp i nie publikowałem aplikacji. przepraszam, jeśli pytanie jest głupie lub niepowiązane.
Jana
@ jana nie, nie ma potrzeby publikowania aplikacji do testowania w aplikacji, ale tak, istnieje potrzeba opublikowania produktu w aplikacji, aby został opublikowany, w przeciwnym razie pojawi się błąd na urządzeniu podczas testowania produktu w aplikacji „Nie znaleziono produktu "
Usman Kurd
21
Należy pamiętać, że podobnie jak w przypadku niektórych innych odpowiedzi - kod wersji aplikacji testowej musi być taki sam, jak kod wersji wersji roboczej w Google Play. Więc jeśli zacząłeś od symbolu zastępczego v1 w Google Play, to przygotowałeś prawdziwą aplikację jako v2 - tę prawdziwą aplikację należy przesłać do GP jako wersję roboczą, zanim będziesz mógł ją przetestować.
Steve Haley,
1
Niedawno sytuacja się zmieniła i musisz teraz opublikować swoją aplikację w kanale alfa w Google Play, zanim będzie można kontynuować testy IAP.
tenpn
43

Zauważyłem, że kiedy prześlę nową kopię mojego APK na rynek, to w ciągu następnej godziny napotykam ten „błąd aplikacji”. Po upływie co najmniej jednej godziny (czasami muszą upłynąć nawet dwie godziny), nie widzę już tego błędu i mogę bez problemu kupować moje przedmioty. Wygląda na to, że serwery Google potrzebują co najmniej godziny, aby przetworzyć fakt, że przesłałeś nowy plik APK (w odniesieniu do aspektu APK Billing InApp).

Dlatego radzę poczekać od 1 do 2 godzin po przesłaniu pakietu APK, a następnie sprawdzić, czy nadal pojawia się „błąd aplikacji”.

Simon K.
źródło
Chciałem tylko potwierdzić, że ta odpowiedź mi pomogła. Otrzymywałem ten błąd - mimo że wersje aplikacji były poprawne. Nie zrobiłem nic poza odczekaniem kilku godzin i zaczęło działać poprawnie (ponownie nie widziałem błędu).
Booger
4
Powiem to: działało dla mnie również czekanie kilka godzin (właściwie czekałem przez noc, więc nie znam dokładnego czasu). Jako mały komentarz redakcyjny, frustrujące jest to, że Google nie może podać dokładniejszego komunikatu o błędzie i zaoszczędzić nam wielu kłopotów.
M Katz
Czy to oznacza, że ​​użytkownik ze starszą wersją aplikacji niż bieżąca nie może korzystać z zakupów w aplikacji i musi najpierw zaktualizować aplikację?
Kedu
34

Ja też napotkałem ten problem. W końcu zdałem sobie sprawę, że moja opublikowana aplikacja ma kod wersji 3, moja wersja robocza (niepublikowany plik APK z uprawnieniem do rozliczeń) ma kod wersji 4, a podpisany plik APK, którego używałem do testowania rozliczeń w aplikacji, był nadal w wersji VersionCode 3. zmieniłem kod wersji na 4, udało mi się przejść do faktycznej strony produktu w aplikacji dotyczącej zakupu, o który prosiłem.

Ashughes
źródło
22

Może się to zdarzyć w przypadku podpisanych, wydanych kompilacji, gdy plik APK przesłany jako wersja robocza nie pasuje do pliku APK działającego w systemie w trybie testowym. Po prostu upewnij się, że twoje kompilacje do siebie pasują, wszystko powinno być w trybie testowym i przestaniesz widzieć błędy.

Największym zmartwieniem jest to, że zobaczymy to samo zachowanie w środowisku produkcyjnym, tj. Wydamy 1.0.0-1 z rozliczeniami w aplikacji, następnie wydamy 1.0.0-2, a użytkownicy korzystający z 1.0.0-1 będą nie można kupić lub przywrócić zakupów i otrzyma ten sam błąd (bardzo złe wrażenia użytkownika). Przeszukiwałem dokumentację pod kątem wzmianki o tym zachowaniu jako specyficznym dla trybu testowego, ale jak dotąd bez powodzenia; tutaj dodaliśmy błąd: http://code.google.com/p/marketbilling/issues/detail?id=15#c0

jen_h
źródło
3
+1 za dodatkowe informacje, myślenie naprzód i link do wątku o błędach.
Bill The Ape
14

Napotkałem również ten sam problem ... ale teraz problem został rozwiązany

Moje obserwacje na podstawie kilku prób:

  1. Kod wersji powinien pasować zarówno w Google Play, jak i na urządzeniu
  2. Mimo że wersje są zgodne, nadal możemy otrzymać ten błąd
  3. Poczekaj około 1 do 2 godzin, a następnie spróbuj, nie otrzymamy tego błędu

Mam nadzieję że to pomoże

user1444172
źródło
1
Odkryłem również, że kod wersji powinien pasować. Przynajmniej twoja wersja testowa nie może być wyższa niż ta w Google Play. Nie jestem pewien, czy jest też odwrotnie. Mam nadzieję, że nie, ponieważ oznaczałoby to, że osoby ze starszą wersją aplikacji nie mogą korzystać z mojego rozliczenia w aplikacji.
Peter Fortuin
# 3 był sztuczką. Jeśli jesteś pewien, że wszystko jest w porządku, zrób sobie przerwę i spróbuj później. Wystarczy trochę czasu, aby zaktualizować :)
nuala
7

Skopiowano z drugiego pytania: https://stackoverflow.com/a/22469253/1321401

Ten błąd może wystąpić z kilku powodów.
Oto lista wymagań dotyczących testów Google IAB.

Wymagania wstępne:

  1. AndroidManifest musi zawierać uprawnienie „com.android.vending.BILLING” .
  2. APK jest zbudowany w trybie wydania .
  3. Plik APK jest podpisany certyfikatem (-ami) wydania .
  4. APK jest przesyłany do kanału dystrybucji alfa / beta (poprzednio jako wersja robocza) do konsoli programisty przynajmniej raz. (zajmuje trochę czasu ~ 2h-24h ).
  5. Produkty IAB są publikowane, a ich status jest ustawiony jako aktywny .
  6. Konta testowe są dodawane w konsoli programisty.

Wymagania testowe:

  1. Testowy plik APK ma ten sam kod wersji, co ten przesłany do konsoli programisty.
  2. Testowy plik APK jest podpisany tym samym certyfikatem (certyfikatami), co ten przesłany do dev.console.
  3. Konto testowe (nie programisty) - to główne konto na urządzeniu.

PS: Debugowanie z certyfikatem wydania : https://stackoverflow.com/a/15754187/1321401 ( link Thnx @dipp )

PPS: Chciałem zrobić tę listę już od dawna.

Thnx @zlgdev do aktualizacji

Luten
źródło
1
Kod wersji mnie dostał - dlaczego jest to potrzebne?
szczelina
5

Moje rozwiązanie polegało na tym, że musiałem użyć tego samego klucza do podpisania apk w Market (jako wersja robocza APK) oraz w teście. Dlatego zamiast po prostu uruchamiać aplikację, zawsze muszę eksportować podpisany plik APK przy każdej aktualizacji, odinstalować go i ponownie zainstalować na urządzeniu za pomocą poleceń wiersza polecenia apk. Zasadniczo można również użyć własnego magazynu kluczy jako magazynu kluczy debugowania, ale wymaga to użycia określonych haseł zakodowanych na stałe i nazw kluczy.

JaakL
źródło
0

Pomyślałem, że udostępnię jeszcze jedno możliwe rozwiązanie, jeśli otrzymujesz ten błąd. Pierwotnie przesłałem do Google wersję roboczą mojego pliku APK z włączonymi uprawnieniami do rozliczeń, więc mogłem skonfigurować w elementach do kupienia w aplikacji. Później przesłałem kolejny plik APK bez pozwolenia na rozliczenie brakującego w moim AndroidManifest, co spowodowało błąd. Zdecydowanie wydaje się to mało prawdopodobnym przypadkiem, ale wydarzyło się to dla mnie, więc jest to możliwe.

Edycja: w tym samym miejscu, jeśli wersja, którą przesłałeś jako wersję roboczą do Google, jest niepodpisana, błąd również wystąpi.

user1174195
źródło
0

Aby dorzucić swoje dwa grosze, mogłem to przetestować, przesyłając do wersji Beta i tworząc konto Gmail z dostępem testowym w zakładce ustawień z nową wersją mojej aplikacji ...

Teraz przenoszę to do produkcji ...

Dzięki! Nathan

Nathan Prather
źródło
-2

Stary wątek, ale dodając moje doświadczenie ...

Zainstalowałem apk z kodem wersji 1 wyższym niż w sklepie. Grałem na 2 różnych kontach na moim Nexusie 7 i napotkałem ten problem. Dlatego odinstalowałem i ponownie zainstalowałem ze sklepu, aby upewnić się, że kod wersji jest zgodny. Nawet czekając w nocy błąd nie został usunięty.

Okazuje się, że musiałem odinstalować wszystkie 3 konta Google, które powiązałem z moim Nexusem 7. Odzyskałem, gdy wyraźnie odinstalowałem aplikację ze wszystkich trzech kont na moim Nexusie 7, a następnie ponownie zainstalowałem ze sklepu.

Farrell
źródło