2013-03-14 5 views
5

Ich habe eine App, in der ich in App Billing (v3) hinzugefügt habe. Die veröffentlichte App schien von der (zugegebenermaßen kleinen) Anzahl der getesteten Geräte zu funktionieren. Der Code wurde mit proguard verschleiert, aber ich habe die entsprechende proguard mapping.txt behalten.In App-Abrechnung (v3) - Verständnis einer Nullpointerexception

Ein paar Käufe wurden erfolgreich gemacht, aber ich habe auch Berichte von Abstürzen. Ich habe dann verwendet retrace.bat den Crash-Stack-Traces zu übersetzen und bekam folgendes Ergebnis:

java.lang.NullPointerException 

at com.mycompany.mygame.util.IabHelper.void startSetup(com.mycompany.mygame.util.IabHelper$OnIabSetupFinishedListener)(Unknown Source) 
             void dispose() 
             void launchPurchaseFlow(android.app.Activity,java.lang.String,int,com.mycompany.mygame.util.IabHelper$OnIabPurchaseFinishedListener,java.lang.String) 
             boolean handleActivityResult(int,int,android.content.Intent) 
             com.mycompany.mygame.util.Inventory queryInventory$337baa91(boolean,java.util.List) 
             void queryInventoryAsync$69bb631c(java.util.List,com.mycompany.mygame.util.IabHelper$QueryInventoryFinishedListener) 
             java.lang.String getResponseDesc(int) 
             int getResponseCodeFromBundle(android.os.Bundle) 
             int queryPurchases(com.mycompany.mygame.util.Inventory,java.lang.String) 
             int querySkuDetails(java.lang.String,com.mycompany.mygame.util.Inventory,java.util.List) 
             void logDebug(java.lang.String) 

at com.mycompany.mygame.util.IabHelper.void startSetup(com.mycompany.mygame.util.IabHelper$OnIabSetupFinishedListener)(Unknown Source) 
             void dispose() 
             void launchPurchaseFlow(android.app.Activity,java.lang.String,int,com.mycompany.mygame.util.IabHelper$OnIabPurchaseFinishedListener,java.lang.String) 
             boolean handleActivityResult(int,int,android.content.Intent) 
             com.mycompany.mygame.util.Inventory queryInventory$337baa91(boolean,java.util.List) 
             void queryInventoryAsync$69bb631c(java.util.List,com.mycompany.mygame.util.IabHelper$QueryInventoryFinishedListener) 
             java.lang.String getResponseDesc(int) 
             int getResponseCodeFromBundle(android.os.Bundle) 
             int queryPurchases(com.mycompany.mygame.util.Inventory,java.lang.String) 
             int querySkuDetails(java.lang.String,com.mycompany.mygame.util.Inventory,java.util.List) 
             void logDebug(java.lang.String) 

at com.mycompany.mygame.util.IabHelper$2.void run()(Unknown Source) 
at java.lang.Thread.run(Thread.java:1019) 

ich ein bisschen diesig imbin wie Stack-Traces zu lesen, aber ich vermute, dass vielleicht war es ein Null-Zeiger in OnIabPurchaseFinishedListener ...? Wenn ja, wie könnte das geschehen sein?

EDIT: Bedeutet diese Tatsache, dass "launchPurchaseFlow" im Stack-Trace erscheint, dass das Programm abgestürzt ist, während der Benutzer versuchte, etwas zu kaufen?

EDIT: Wie der Hörer hier angefordert:

/** 
* Callback that notifies when a purchase is finished. 
*/ 
public interface OnIabPurchaseFinishedListener { 
    /** 
    * Called to notify that an in-app purchase finished. If the purchase was successful, 
    * then the sku parameter specifies which item was purchased. If the purchase failed, 
    * the sku and extraData parameters may or may not be null, depending on how far the purchase 
    * process went. 
    * 
    * @param result The result of the purchase. 
    * @param info The purchase information (null if purchase failed) 
    */ 
    public void onIabPurchaseFinished(IabResult result, Purchase info); 
} 
+0

Verwenden Sie den Google-Standardcode in Ihrer App? –

+0

PLZ Beitrag 'OnIabSetupFinishedListener' Listener Code –

+0

@class Stacker: nicht 100% sicher, was du meinst ... aber ich benutze die IabHelper-Klasse von Google bereitgestellt. – Mick

Antwort

4

Vielleicht handelt es sich um die Frage hier angesprochen: https://code.google.com/p/android/issues/detail?id=42338

Der aktualisierte Code wurde noch mit dem SDK-Manager nicht herausgeschoben , aber Sie können alle Änderungen im Zusammenhang mit diesem Problem hier sehen: https://code.google.com/p/marketbilling/source/detail?r=7ec85a9b619fc5f85023bc8125e7e6b1ab4dd69f

Es gibt 4 Dateien von dem Problem betroffen. Nehmen Sie die vorgeschlagenen Änderungen vor und sehen Sie, ob Sie immer noch auf dasselbe Problem stoßen.