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);
}
Uygulamanızda Google "varsayılan" kodunu kullanıyor musunuz? –
plz post 'OnIabSetupFinishedListener' Dinleyici kodu –
@ 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