2013-03-14 13 views
5

Uygulama faturalandırmasına eklediğim bir uygulamam var (v3). Yayınlanan uygulama, test ettiğim cihazların (kuşkusuz küçük sayısının) iyi çalıştığı görülüyordu. Kod, proguard ile gizlenmişti, ancak proguard mapping.txt dosyasını tuttum.Uygulama faturalandırmasında (v3) - bir nullpointerexception'ı anlama

Birkaç satın alma işlemi başarıyla gerçekleştirildi, ancak kilitlenme raporları da aldım. Sonra çarpışma yığın izlerini çevirmek için retrace.bat kullanılan ve şu sonuç var: Ben yığın izlerini okuma hakkında biraz puslu olduğum

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) 

ama belki bir boş gösterici olduğunu tahmin ediyorum OnIabPurchaseFinishedListener içinde ...? Öyleyse, bu nasıl olabilir?

DÜZENLEME: Yığın izlemede "launchPurchaFlow" ifadesinin göründüğü, kullanıcının bir şey satın almaya çalışırken programın çökmesi anlamına mı geliyor?

DÜZENLEME: burada istenen bir dinleyici gibi:

/** 
* 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

Uygulamanızda Google "varsayılan" kodunu kullanıyor musunuz? –

+0

plz post 'OnIabSetupFinishedListener' Dinleyici kodu –

+0

@ sınıf yığınlayıcı: ne demek istediğinizden emin değilsiniz ... ama google tarafından sağlanan IabHelper sınıfını kullanıyorum. – Mick

cevap

4

Belki bu burada ileri sürülen konuyla ilgilidir: güncellenen kod henüz SDK Yöneticisine dışarı itti edilmemiştir https://code.google.com/p/android/issues/detail?id=42338

ancak bu konuyla ilgili tüm değişiklikleri görüntüleyebilirsiniz: https://code.google.com/p/marketbilling/source/detail?r=7ec85a9b619fc5f85023bc8125e7e6b1ab4dd69f

Sorundan etkilenen 4 dosya var. Önerdikleri değişiklikleri yapın ve hala aynı sorunla karşılaşırsanız bakın.