2015-11-23 12 views
7

मैं वर्तमान में ऐप बिलिंग में एक ऐप विकसित कर रहा हूं। सब ठीक काम करता है। और मैंने पहले से ही बीटा चैनल में ऐप प्रकाशित किया है और परीक्षण वस्तुओं के साथ वास्तविक वस्तुओं के साथ इसका परीक्षण किया है, और यह काम करता है।ऐप बिलिंग परीक्षण खरीद क्रैश में एंड्रॉइड प्ले स्टोर

हालांकि डीबगिंग करते समय, मैं android.test.purchased आइटम का उपयोग कर रहा हूं, जब मैं खरीद बटन दबाता हूं तो मेरा प्ले स्टोर क्रैश हो जाता है।

E/AndroidRuntime: FATAL EXCEPTION: main 
         Process: com.android.vending, PID: 25463 
                java.lang.NullPointerException: Attempt to read from field 'com.google.android.finsky.protos.Acquisition$AutoDismissTemplate com.google.android.finsky.protos.Acquisition$PostAcquisitionPrompt.autoDismissTemplate' on a null object reference 
                 at com.google.android.finsky.billing.SuccessStep.getLayoutResId(SuccessStep.java:75) 
                 at com.google.android.finsky.billing.lightpurchase.PurchaseFragment.onStateChange(PurchaseFragment.java:31066) 
                 at com.google.android.finsky.fragments.SidecarFragment.notifyListener(SidecarFragment.java:255) 
                 at com.google.android.finsky.fragments.SidecarFragment.setState(SidecarFragment.java:250) 
                 at com.google.android.finsky.billing.lightpurchase.CheckoutPurchaseSidecar.confirmAuthChoiceSelected(CheckoutPurchaseSidecar.java:631) 
                 at com.google.android.finsky.billing.lightpurchase.PurchaseFragment.onStateChange(PurchaseFragment.java:32156) 
                 at com.google.android.finsky.fragments.SidecarFragment.notifyListener(SidecarFragment.java:255) 
                 at com.google.android.finsky.fragments.SidecarFragment.setState(SidecarFragment.java:250) 
                 at com.google.android.finsky.billing.lightpurchase.CheckoutPurchaseSidecar.access$1900$2f730cd3(CheckoutPurchaseSidecar.java:72) 
                 at com.google.android.finsky.billing.lightpurchase.CheckoutPurchaseSidecar$1.run(CheckoutPurchaseSidecar.java:1009) 
                 at android.os.Handler.handleCallback(Handler.java:739) 
                 at android.os.Handler.dispatchMessage(Handler.java:95) 
                 at android.os.Looper.loop(Looper.java:148) 
                 at android.app.ActivityThread.main(ActivityThread.java:5417) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
11-23 02:22:43.202 590-739/? W/ActivityManager: Force finishing activity com.android.vending/com.google.android.finsky.billing.lightpurchase.IabV3Activity 


Purchase finished: IabResult: Null data in IAB result (response: -1002:Bad response received), purchase: null 
Error purchasing: IabResult: Null data in IAB result (response: -1002:Bad response received) 

कभी कभी खरीद के बाद जारी है, और दूसरी बार, मेरे ऐप्लिकेशन क्रैश:

enter image description here

और मैं निम्न त्रुटि (रों) मिलता है।

मैंने कई उपकरणों पर इसका परीक्षण किया (एंड्रॉइड 6.0 के साथ नेक्सस 7, एंड्रॉइड 5.1.1 के साथ नोट 5, एंड्रॉइड 4.3 के साथ गैलेक्सी एस 3, एंड्रॉइड 4.4 के साथ एलजी जी 3), सभी का एक ही व्यवहार है।

मुझे पागल बनाता है कि ऐप आइटम में असली बेकार ढंग से काम करता है। जो मुझे लगता है कि इसका मतलब है कि मेरा कोड ठीक है। लेकिन यह परीक्षण वस्तुओं के साथ हो रहा है, मुझे चिंतित करें कि प्रकाशित होने पर वास्तविक उपयोगकर्ताओं के साथ वास्तविक वस्तुओं के साथ दोहराया जा सकता है।

यदि मैं स्टोर क्रैश करने के लिए अग्रणी कुछ गलत कर रहा हूं, तो यह मुझे आपकी सहायता करने की सराहना करता है, या ऐसा हो सकता है?

कृपया ध्यान दें कि मैं एंड्रॉइड विकास के लिए बिल्कुल नया हूं।

धन्यवाद।

यहाँ ऐप बिलिंग में लिए मेरे कोड है:

///... part of onCreate: 

mHelper = new IabHelper(this, base64EncodedPublicKey); 

     mHelper.startSetup(new 
            IabHelper.OnIabSetupFinishedListener() { 
             public void onIabSetupFinished(IabResult result) { 
              if (!result.isSuccess()) { 
               Log.d(TAG, "In-app Billing setup failed: " + 
                 result); 
              } else { 
               // Hooray, IAB is fully set up. Now, let's get an inventory of 
               // stuff we own. 
               Log.d(TAG, "Setup successful. Querying inventory."); 
               mHelper.queryInventoryAsync(mGotInventoryListener);           } 
             } 
            }); 

/////////////////

public void startPurchase(String ITEM_SKU) { // Start the purchase process here 

    String purchaseToken = "inapp:" + getPackageName() + ":"+ ITEM_SKU; 

    Log.d(TAG, "Purchase started for : " + ITEM_SKU); 

    mHelper.launchPurchaseFlow(this, ITEM_SKU, 10002, 
       mPurchaseFinishedListener, purchaseToken); 
} 


// Callback for when a purchase is finished 
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) { 
     Log.d(TAG, "Purchase finished: " + result + ", purchase: " 
       + purchase); 
     if (result.isFailure()) { 
      Log.d(TAG,"Error purchasing: " + result); 
      if (result.getResponse()==7){ 
       if(myInventory.hasPurchase(ITEM_SKU)) 
       { 
        Log.d(TAG,"Ooops, Item already purchased, consume it"); 
        mHelper.consumeAsync(myInventory.getPurchase(ITEM_SKU),mConsumeFinishedListener2); 
       } 
      } 
      return; 
     } 

     Log.d(TAG, "Purchase successful."); 

     if (purchase.getSku().equals(ITEM_SKU)) { 
      mHelper.consumeAsync(purchase, mConsumeFinishedListener); 

     } 
    } 
}; 

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, 
             Inventory inventory) { 
     Log.d(TAG, "Query inventory finished."); 

     if (result.isFailure()) { 
      Log.d(TAG,"Failed to query inventory: " + result); 
      return; 
     } 

     Log.d(TAG, "Query inventory was successful."); 

     myInventory = inventory; 
     //Process inventory 


    } 
}; 

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = 
     new IabHelper.OnConsumeFinishedListener() { 
      public void onConsumeFinished(Purchase purchase, 
              IabResult result) { 

       if (result.isSuccess()) { 
        Log.d(TAG,"consume successful for " + purchase.getSku() + " & " + result.getMessage()); 
        updateCoinsAndScore(coinsToAdd, 0); 
        Toast.makeText(getApplication(), "تم إضافة عدد " + coinsToAdd + " عملات إلى رصيدك", Toast.LENGTH_LONG).show(); 
        //reset values 
        coinsToAdd=0; 
        ITEM_SKU=""; 
       } else { 
        Log.d(TAG, "Consume failed " + result.getMessage());     } 
      } 
     }; 

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener2 = 
     new IabHelper.OnConsumeFinishedListener() { 
      public void onConsumeFinished(Purchase purchase, 
              IabResult result) { 

       if (result.isSuccess()) { 
        Log.d(TAG,"consumed, starting purchase again"); 
        Log.d(TAG,"consume successful for " + purchase.getSku() + " & " + result.getMessage()); 

        startPurchase(ITEM_SKU); 

       } else { 
        Log.d(TAG,"Consume failed " + result.getMessage());     } 
      } 
     }; 
+0

से नमस्ते मैं एक ही मुद्दे का सामना करना पड़ है डाउनलोड कर सकते हैं। क्या आपको कोई समाधान मिला है? –

+0

अभी तक, दुर्भाग्य से नहीं। – Tamer

+0

ठीक है अगर आपको कोई समाधान मिला तो कृपया अपडेट करें। –

उत्तर

3

समस्या गूगल प्ले में था v6.0.0, यह अब v6.0.5 में तय किया गया है (सैमसंग और नेक्सस डिवाइस दोनों पर पुष्टि की गई है)।

आप Google Play अद्यतन स्वचालित रूप से नहीं मिला है, तो आप इसे मैन्युअल रूप से ApkMirror.com आदि

+0

यदि आपको स्वचालित रूप से Google Play अपडेट नहीं मिला है, तो आप इसे डाउनलोड कर सकते हैं मैन्युअल रूप से ApkMirror.com – Tamer

+1

से यह आजकल क्रैश हो रहा है: https://stackoverflow.com/q/45240471/1472483 – MarsPeople

संबंधित मुद्दे