Tôi có một ứng dụng mà tôi đã thêm vào thanh toán ứng dụng (v3). Ứng dụng đã xuất bản xuất hiện để hoạt động tốt (số lượng được thừa nhận nhỏ) của các thiết bị tôi đã thử nghiệm. Mã đã bị làm phiền với proguard, nhưng tôi vẫn giữ proguard mapping.txt tương ứng.Trong thanh toán ứng dụng (v3) - hiểu một nullpointerexception
Một vài giao dịch mua đã được thực hiện thành công, nhưng tôi cũng đã nhận được báo cáo sự cố. Sau đó tôi đã sử dụng retrace.bat để dịch các dấu vết ngăn xếp sự cố và nhận được kết quả sau:
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)
Tôi hơi mơ hồ về cách đọc dấu vết ngăn xếp, nhưng tôi đoán rằng có lẽ có một con trỏ rỗng trong OnIabPurchaseFinishedListener ...? Nếu vậy, làm thế nào điều đó có thể đã xảy ra?
EDIT: Thực tế rằng "launchPurchaseFlow" xuất hiện trong theo dõi ngăn xếp có nghĩa là chương trình đã bị lỗi trong khi người dùng đang cố mua thứ gì đó?
EDIT: Theo yêu cầu ở đây là người biết lắng nghe:
/**
* 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);
}
Bạn có đang sử dụng mã "mặc định" của Google trong ứng dụng của mình không? –
plz post 'OnIabSetupFinishedListener' Mã người nghe –
@class stacker: không chắc chắn 100% ý bạn là gì ... nhưng tôi đang sử dụng lớp IabHelper do google cung cấp. – Mick