2013-03-27 5 views
44

Ich habe gerade eine App mit In-App-Abrechnung veröffentlicht. Bisher wurden keine Abstürze bei Google-Spielen gemeldet (dies passiert nur, wenn sich der Benutzer die Mühe macht, den Absturz zu melden), aber ich habe einige Berichte über Abstürze per Flurry (was automatisch ist). Die Crash-Berichte sind wie folgt:In-App-Abrechnung (v3) - IllegalArgumentException: Service nicht registriert:

class java.lang.RuntimeException 
Msg: android.app.ActivityThread.performDestroyActivity:3655 (Unable to destroy activity {com.mycompany.mygame/com.mycompany.mygame.Splashscreen}: java.lang.IllegalArgumentException: Service not registered: [email protected]) 

Dies geschieht nur auf < 1% der Hinrichtung meiner App.

mich korrigieren, wenn ich falsch bin, aber es scheint, dass die Zeilennummer des Absturzes nicht in der Flut Bericht :-(

einmal sicher, ich bin nicht, was dieser Crash-Bericht bedeutet, geschweige denn gegeben Irgendwelche Ideen, wie man es beheben.?

+0

Ich habe das gleiche Problem. Es ist kein großes Geschäft, aber es ist etwas, das stört. Ich habe ein ähnliches Problem in GitHub gefunden: https://github.com/ianhanniballake/ContractionTimer/commit/b3643e8fd1d59a508fe6764398cb22de671c4cea Denken Sie, dass dies das gleiche Problem sein könnte? – gian1200

+0

Der Grund, warum dieser Absturz jetzt so häufig auftritt, ist, dass er nur reproduziert werden kann, wenn der InApp-Abrechnungshelfer nicht ordnungsgemäß eingerichtet wurde. Dies wird nur bei Geräten mit einer sehr alten Version der Google Play App ohne Google Play App passieren (Kindle Fire) – GaRRaPeTa

+0

@GaRRaPeTaAbsolut wahr. Gerade geladen API API 16 auf einem echten Gerät, und Boom, stürzte auf dem ersten Bildschirm :) – IcyFlame

Antwort

106

ich glaube, das ein Fehler in IabHelper.java ist.

in IabHelper entsorgen Methode, die folgende Zeile,

  if (mContext != null) mContext.unbindService(mServiceConn); 

soll daran geändert werden.

  if (mContext != null && mService != null) mContext.unbindService(mServiceConn); 

MSERVICE nur gesetzt wird, sobald der Dienst registriert wurde, überprüft, so dass es für! = Null wird garantieren, dass Dienst tatsächlich registriert ist, bevor wir versuchen, von ihm zu lösen.

+18

Der ganze IabHelper ist extrem fehlerhaft. Sollte erneut implementiert werden. – tmanthey

+3

@tmanthey: Gibt es einen alternativen nicht-buggy Code, den wir stattdessen betrachten können? – Mick

+0

Ich habe kürzlich einen sehr ähnlichen Absturz bekommen und trotzdem sieht der Code so aus, wie du geschrieben hast. Wie könnte es sein? –

Verwandte Themen