Facturation in-app (v3) – IllegalArgumentException: service non enregistré:

Je viens de publier une application avec facturation intégrée. Jusqu’à présent, aucun crash n’a été signalé à Google Play (cela ne se produit que lorsque l’utilisateur prend la peine de signaler le plantage), mais j’ai des rapports de plantage via Flurry (qui est automatique). Les rapports de crash sont les suivants:

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: com.mycompany.mygame.util.IabHelper$1@46369b38) 

Cela ne se produit que sur <1% des exécutions de mon application.

Corrigez-moi si je me trompe, mais il semble que le numéro de ligne de la panne ne figure pas dans le rapport 🙁

Je ne suis même pas sûr de ce que signifie ce rapport de crash, et encore moins comment le réparer. Des idées?

Je crois que c’est un bogue dans IabHelper.java.

Dans la méthode IabHelper dispose, la ligne suivante,

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

devrait être changé à cela.

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

mService n’est défini que lorsque le service a été enregistré, le vérifier avec! = null garantira que le service est bien enregistré, avant d’essayer de le déconnecter.