Hi, I'm building for Amazon and im not getting "OnInitialized" or "OnInitializedFailed" called. Is there anything special i need to do? I need to get a reply from the Store before I can proceed in in my app so it gets stuck. This is all I get in the log: Code (CSharp): 09/02 12:51:50.547 14293 14335 Debug d In App Purchasing SDK - Sandbox Mode: PurchasingListener registered: com.unity.purchasing.amazon.AmazonPurchasing@11074b1b 09/02 12:51:50.547 14293 14335 Debug d In App Purchasing SDK - Sandbox Mode: PurchasingListener Context: com.unity3d.player.UnityPlayerActivity@11367279 09/02 12:51:50.815 14293 14335 Debug Unity Purchasing Amazon RetrieveProducts 2 09/02 12:51:50.817 14293 14335 Debug c In App Purchasing SDK - Sandbox Mode: sendGetUserDataRequest
Which Amazon device are you testing on? What version of Unity IAP, can you share your purchasing code?
a couple of kindle's from 2012 to 2014. code: Code (CSharp): using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Purchasing; namespace Bluezoo { public class IAPPurchaseManager : Singleton<IAPPurchaseManager>, IStoreListener { protected IAPPurchaseManager() { } public event Action<bool> Event_Initialized; public event Action<bool, PurchaseEventArgs> Event_Purchase; public event Action<bool, SubscriptionInfo> Event_Subscribed; private static IStoreController storeController; // The Unity Purchasing system. private static IExtensionProvider storeExtensionProvider; // The store-specific Purchasing subsystems. // Product identifiers for all products capable of being purchased: // "convenience" general identifiers for use with Purchasing, and their store-specific identifier // counterparts for use with and outside of Unity Purchasing. Define store-specific identifiers // also on each platform's publisher dashboard (iTunes Connect, Google Play Developer Console, etc.) // General product identifiers for the consumable, non-consumable, and subscription products. // Use these handles in the code to reference which product to purchase. Also use these values // when defining the Product Identifiers on the store. Except, for illustration purposes, the // kProductIDSubscription - it has custom Apple and Google identifiers. We declare their store- // specific mapping to Unity Purchasing's AddProduct, below. // public static string PRODUCT_ID_CONSUMABLE = "consumable"; // public static string PRODUCT_ID_NON_CONSUMABLE = "nonconsumable"; // public static string PRODUCT_ID_SUBSCRIPTION = "subscription"; // // Apple App Store-specific product identifier for the subscription product. // public string subscriptionIDApple = "com.unity3d.subscription.new"; // // Google Play Store-specific product identifier subscription product. // public string subscriptionIDGoogle = "com.unity3d.subscription.original"; // // Amazon Kindle Store-specific product identifier subscription product. // public string subscriptionIDAmazon = "com.unity3d.subscription.original"; public void Init(Dictionary<string, ProductType> setupProducts) { Debug.Log($"[IAPPurchaseManager] Init."); // If we have already connected to Purchasing ... if (IsInitialized()) { // ... we are done here. return; } StandardPurchasingModule storeModule; #if KINDLE storeModule = StandardPurchasingModule.Instance(AppStore.AmazonAppStore); #else storeModule = StandardPurchasingModule.Instance(); #endif // Create a builder, first passing in a suite of Unity provided stores. var builder = ConfigurationBuilder.Instance(storeModule); // builder.AddProduct(PRODUCT_ID_CONSUMABLE, ProductType.Consumable); // builder.AddProduct(PRODUCT_ID_NON_CONSUMABLE, ProductType.NonConsumable); // builder.AddProduct(PRODUCT_ID_SUBSCRIPTION, ProductType.Subscription, new IDs(){ // { subscriptionIDApple, AppleAppStore.Name }, // { subscriptionIDGoogle, GooglePlay.Name }, // }); foreach (var product in setupProducts) { builder.AddProduct(product.Key, product.Value); } // Kick off the remainder of the set-up with an asynchrounous call, passing the configuration // and this class' instance. Expect a response either in OnInitialized or OnInitializeFailed. UnityPurchasing.Initialize(this, builder); } public void BuyConsumable(string productId) { var valid = BuyProductID(productId); } public void BuyNonConsumable(string productId) { var valid = BuyProductID(productId); } public void BuySubscription(string subscriptionId) { var valid = BuyProductID(subscriptionId); // If not valid, dispatch false. if (!valid) { Event_Subscribed?.Invoke(false, null); } } // Restore purchases previously made by this customer. Some platforms automatically restore purchases, like Google. // Apple currently requires explicit purchase restoration for IAP, conditionally displaying a password prompt. public void RestorePurchases() { Debug.Log("[IAPPurchaser] Restore"); // If Purchasing has not yet been set up ... if (!IsInitialized()) { // ... report the situation and stop restoring. Consider either waiting longer, or retrying initialization. Debug.Log("RestorePurchases FAIL. Not initialized."); return; } // If we are running on an Apple device ... if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.OSXPlayer) { // ... begin restoring purchases Debug.Log("RestorePurchases started ..."); // Fetch the Apple store-specific subsystem. var apple = storeExtensionProvider.GetExtension<IAppleExtensions>(); // Begin the asynchronous process of restoring purchases. Expect a confirmation response in // the Action<bool> below, and ProcessPurchase if there are previously purchased products to restore. apple.RestoreTransactions((result) => { // The first phase of restoration. If no more responses are received on ProcessPurchase then // no purchases are available to be restored. Debug.Log("RestorePurchases continuing: " + result + ". If no further messages, no purchases available to restore."); }); } // Otherwise ... else { // We are not running on an Apple device. No work is necessary to restore purchases. Debug.Log("RestorePurchases FAIL. Not supported on this platform. Current = " + Application.platform); } } public void CheckForExistingSubscriptions() { // var appleExtensions = storeExtensionProvider.GetExtension<IAppleExtensions>(); // Dictionary<string, string> dict = appleExtensions.GetIntroductoryPriceDictionary(); var foundSubscription = false; foreach (Product product in storeController.products.all) { // If the recipt is null, they have bought it! if (product.receipt != null && product.definition.type == ProductType.Subscription) { foundSubscription = true; // Process the subscription, this will dispatch any events. ProcessSubscription(product); } } // If nothing is found, dispatch false. if (!foundSubscription) { Event_Subscribed?.Invoke(false, null); } } public bool GetSubscriptionPrice(string productId, out string price, out string countryCode) { var meta = storeController?.products?.WithID(productId)?.metadata; if (meta != null) { // Debug.Log("a=" + meta.localizedPrice.ToString()); // Debug.Log("b=" + meta.localizedPriceString.ToString()); // Debug.Log("c=" + meta.isoCurrencyCode.ToString()); price = meta.localizedPriceString.ToString(); countryCode = meta.isoCurrencyCode; return true; } // If nothing is found, return defaults. Debug.Log("[IAPPurchaseManager] Failed to find the price of the subsciption:" + productId); price = "£££"; countryCode = "GBP"; return false; } public void ProcessSubscription(Product product, bool newPurchase = false) { // if (newPurchase) { // if (!CheckIfProductIsAvailableForSubscriptionManager(product.receipt)) { // Debug.Log("Product is not valid for SubscriptionManager"); // Event_Subscribed?.Invoke(false, null); // return; // } // } // string introductoryPrice_json = (introductory_info_dict == null || !introductory_info_dict.ContainsKey(item.definition.storeSpecificId)) ? null : introductory_info_dict[item.definition.storeSpecificId]; var sm = new SubscriptionManager(product, null); SubscriptionInfo info = sm.getSubscriptionInfo(); Debug.Log("----------- SUBSCRIPTION INFO ---------------"); Debug.Log("product id is: " + info.getProductId()); Debug.Log("purchase date is: " + info.getPurchaseDate()); Debug.Log("subscription next billing date is: " + info.getExpireDate()); Debug.Log("is subscribed? " + info.isSubscribed().ToString()); Debug.Log("is expired? " + info.isExpired().ToString()); Debug.Log("is cancelled? " + info.isCancelled()); Debug.Log("product is in free trial peroid? " + info.isFreeTrial()); Debug.Log("product is auto renewing? " + info.isAutoRenewing()); Debug.Log("subscription remaining valid time until next billing date is: " + info.getRemainingTime()); Debug.Log("is this product in introductory price period? " + info.isIntroductoryPricePeriod()); Debug.Log("the product introductory localized price is: " + info.getIntroductoryPrice()); Debug.Log("the product introductory price period is: " + info.getIntroductoryPricePeriod()); Debug.Log("the number of product introductory price period cycles is: " + info.getIntroductoryPricePeriodCycles()); Debug.Log("-----------------------------------------------"); var isSubscribed = info.isSubscribed() == Result.True; Event_Subscribed?.Invoke(isSubscribed, info); } private bool IsInitialized() { // Only say we are initialized if both the Purchasing references are set. return storeController != null && storeExtensionProvider != null; } private bool BuyProductID(string productId) { // If Purchasing has been initialized ... if (IsInitialized()) { // ... look up the Product reference with the general product identifier and the Purchasing // system's products collection. Product product = storeController.products.WithID(productId); // If the look up found a product for this device's store and that product is ready to be sold ... if (product != null && product.availableToPurchase) { Debug.Log(string.Format("Purchasing product asychronously: '{0}'", product.definition.id)); // ... buy the product. Expect a response either through ProcessPurchase or OnPurchaseFailed // asynchronously. storeController.InitiatePurchase(product); return true; } // Otherwise ... else { // ... report the product look-up failure situation Debug.Log("BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase"); Event_Subscribed?.Invoke(false, null); return false; } } // Otherwise ... else { // ... report the fact Purchasing has not succeeded initializing yet. Consider waiting longer or // retrying initiailization. Debug.Log("BuyProductID FAIL. Not initialized."); Event_Subscribed?.Invoke(false, null); return false; } } // // --- IStoreListener // public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { Debug.Log($"[IAPPurchaseManager] Initialised. TRUE."); // Purchasing has succeeded initializing. Collect our Purchasing references. // Overall Purchasing system, configured with products for this application. storeController = controller; // Store specific subsystem, for accessing device-specific store features. storeExtensionProvider = extensions; Event_Initialized?.Invoke(true); } public void OnInitializeFailed(InitializationFailureReason error) { Debug.Log($"[IAPPurchaseManager] Initialised. FALSE. InitializationFailureReason:{error}"); // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user. Event_Initialized?.Invoke(false); } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { Debug.Log("[IAPPurchaseManager] ProcessPurchase SUCCESSS"); // if (args.purchasedProduct.definition.id == ) // CheckForExistingSubscriptions Event_Purchase?.Invoke(true, args); return PurchaseProcessingResult.Complete; } public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) { // A product purchase attempt did not succeed. Check failureReason for more detail. Consider sharing // this reason with the user to guide their troubleshooting actions. Debug.Log("[IAPPurchaseManager] ProcessPurchase FAILED"); Debug.Log("[IAPPurchaseManager] " + string.Format("OnPurchaseFailed: FAILED. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason)); Event_Purchase?.Invoke(false, null); } } }
I might suggest to add more Debug.Log statements, in particular to see if your KINDLE define is identified. Please share your device logs. Does this code work on Google Play? You are using Invoke that I haven't tested with, please compare to the Sample IAP Project v2 IAPManager.cs and get that working without any changes first. I tested Amazon just a few weeks ago without issue with this code https://forum.unity.com/threads/sample-iap-project.529555/#post-6950270
Hi, I just tried to make a build for the Amazon App Store and I got the same problem. Code (CSharp): Debug d In App Purchasing SDK - Sandbox Mode: PurchasingListener registered: com.unity.purchasing.amazon.AmazonPurchasing@c63f3c3 Debug d In App Purchasing SDK - Sandbox Mode: PurchasingListener Context: com.lagoonsoft.pb@6a66440 Debug Unity Purchasing Amazon RetrieveProducts 24 Debug c In App Purchasing SDK - Sandbox Mode: sendGetUserDataRequest Nothing after that, no fail, no success ... I use the last IAP package 4.0.3. The same code works for Google Play Store and UDP builds.
What Amazon device are you testing on? I've tested on Amazon recently on a Fire tablet without issue.
I test on a Samsung galaxy S10 android device with Amazon App Store and Amazon App Tester installed. Amazon App Tester shows me all my IAP items.
For testing: Is it mandatory to have an Amazon device to test Amazon App Store payment before deployment ? On the doc it's written: Device setup For Android devices, download and install the Amazon Appstore. So it might work on any Android devices no ? Anyway, if it don't work on a non Amazon device, don't the OnInitializeFailed function might be called ? Once deployed on the store: Does Unity IAP for Amazon will work for games installed on any Android device from the Amazon App Store ? Or only on Amazon devices ? What about the upcoming of Amazon App Store on Windows 11 will it work for Unity games with Unity IAP plugin ?
It's my understanding that it only works on Amazon devices. For testing here, I picked up a Fire tablet for around $50 USD We have not looked into Amazon on Windows 11
Can you define "not working"? Is initialization failing, or a purchase? Please share the device logs, they will show your Debug.Log statements. It's working for me here. You need to publish to LAT testing for it to work, like the other stores require https://developer.amazon.com/docs/app-testing/live-app-testing-understanding.html and https://docs.unity3d.com/Manual/UnityIAPAmazonConfiguration.html and https://forum.unity.com/threads/how-to-capturing-device-logs-on-android.528680/
@JeffDUnity3D I have switched to a fully coded IAP Setup. It is still not working on my Amazon Kindle device. I have tested locally and via Amazon's Live App Testing. Using Purchasing 4.1.2 and testing on a Kindle Fire table. Amazon is also rejecting our app because it will not load... When the app first loads, we are checking for the IAP before progressing to the 'main-menu', because we are not getting a response from the IAP initialisation, the loading scene does not progress which is what they are seeing also. Here is the device logs: Code (CSharp): 2022-01-21 10:57:16.570 319-319/? I/WifiHAL: enter wifi_get_link_stats id[0] iface[0x0xef608138] 2022-01-21 10:57:16.570 319-319/? I/WifiHAL: Creating message to get link statistics; iface = 9 2022-01-21 10:57:16.570 319-319/? D/WifiHAL: WifiRequest::create vendor command to iface 9, vendor_id=0x1a11, subcmd=0x1200, res=0 2022-01-21 10:57:16.583 319-319/? I/WifiHAL: In GetLinkStatsCommand::handleResponse 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: on_time: = 12458204 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: tx_time: = 7440 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: rx_time: = 297717 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: on_time_scan: = 47544 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: beacon_rx: = 26706 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: rssi_mgmt: = -38 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: received mpdu: = 2300 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: transmite mpdu: = 25647 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: lost mpdu: = 5458 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: retry mpdu: = 258 2022-01-21 10:57:16.584 319-319/? D/WifiHAL: mId[0] mIface[0x0xef608138] 2022-01-21 10:57:17.230 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:2, data:0 2022-01-21 10:57:17.231 327-345/? I/libPowerHal: 2: set gpu level: 0 2022-01-21 10:57:17.231 327-345/? I/libPowerHal: 2: cpu_ctrl set freq: 2001000 -1 2022-01-21 10:57:17.231 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:2, data:0 --------- beginning of system 2022-01-21 10:57:17.344 566-1584/? I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.custom.project cmp=com.custom.project/com.unity3d.player.UnityPlayerActivity} from uid 10134 2022-01-21 10:57:17.345 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:2, data:200 2022-01-21 10:57:17.357 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:8, data:1 2022-01-21 10:57:17.379 11665-11665/? I/AmazonAppstore.PlatterLockerPolicyProvider: Setting listen to Uri change in locker to false 2022-01-21 10:57:17.383 11665-11665/? I/AmazonAppstore.PlatterLockerPolicyProvider: Setting listen to Uri change in locker to false 2022-01-21 10:57:17.401 566-3321/? I/WifiService: acquireWifiLock uid=10134 lockMode=1 2022-01-21 10:57:17.415 16916-16916/? W/main: type=1400 audit(0.0:60914): avc: denied { dac_read_search } for capability=2 scontext=u:r:zygote:s0 tcontext=u:r:zygote:s0 tclass=capability permissive=0 2022-01-21 10:57:17.423 566-586/? I/ActivityManager: Start proc 16916:com.custom.project/u0a193 for activity com.custom.project/com.unity3d.player.UnityPlayerActivity 2022-01-21 10:57:17.415 16916-16916/? I/chatty: uid=10193(com.custom.project) customproject identical 2 lines 2022-01-21 10:57:17.415 16916-16916/? W/main: type=1400 audit(0.0:60917): avc: denied { dac_read_search } for capability=2 scontext=u:r:zygote:s0 tcontext=u:r:zygote:s0 tclass=capability permissive=0 2022-01-21 10:57:17.428 11665-16913/? I/AmazonAppstore.LockerSyncDecisionDelegate: handling intent action 'com.amazon.mas.client.application.events.APPSTORE_FTUE' 2022-01-21 10:57:17.428 11665-16913/? I/AmazonAppstore.LockerSyncDecisionDelegate: Appstore FTUE previously detected. Ignoring. 2022-01-21 10:57:17.436 566-3321/? I/WifiService: releaseWifiLock uid=10134 2022-01-21 10:57:17.441 16916-16916/? E/customproject: Not starting debugger since process cannot load the jdwp agent. 2022-01-21 10:57:17.443 11665-16915/? I/AmazonAppstore.AccountSummaryProviderImpl: isAccountPrepared(null) - using H:fbc30902999bea2dd0d47df6cc304759 2022-01-21 10:57:17.443 11665-16915/? I/AmazonAppstore.AccountSummaryProviderImpl: isAccountPrepared() - using H:fbc30902999bea2dd0d47df6cc304759, returning true 2022-01-21 10:57:17.470 566-3321/? I/AlexaModeSwitchManagerImpl: Inside getMode 2022-01-21 10:57:17.484 566-1000/? I/PackageRecency: Queuing notification(s) to package for ActivityInfo{98cf517 com.unity3d.player.UnityPlayerActivity} 2022-01-21 10:57:17.492 566-699/? W/AmazonProfileService: Active profile for the package xxx not present for customer Id xxx 2022-01-21 10:57:17.497 11665-16930/? I/AmazonAppstore.CmsPublisherService: Ignoring action: com.amazon.mas.client.locker.ENTITLEMENT_UPDATE 2022-01-21 10:57:17.507 11665-16930/? I/AmazonAppstore.CmsPublisherService: Ignoring action: com.amazon.mas.client.locker.ENTITLEMENT_APP_OPEN 2022-01-21 10:57:17.515 566-646/? D/AmazonWindowMetrics: On window event - Package com.custom.project, isDreaming false, state 1, alexaMode 0 2022-01-21 10:57:17.536 321-321/? D/AudioALSAHardware: +setParameters(): continuous_audio_mode=0 2022-01-21 10:57:17.536 321-321/? W/AudioALSAHardware: setParameters(), still have param.size() = 1, remain param = "continuous_audio_mode=0" 2022-01-21 10:57:17.536 321-321/? D/AudioALSAHardware: -setParameters(): continuous_audio_mode=0 2022-01-21 10:57:17.538 16916-16916/? I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT] 2022-01-21 10:57:17.539 566-592/? E/AmazonProfileService: Active profile has not been set 2022-01-21 10:57:17.545 327-345/? I/libPowerHal: 2: set gpu level: 2 2022-01-21 10:57:17.545 327-345/? I/libPowerHal: 2: set gpu level max: 0 2022-01-21 10:57:17.552 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.558 1524-2453/? I/MinervaServiceManager: com.amazon.minerva.service.IonMetricEvent@ffe5d23 2022-01-21 10:57:17.559 1524-2453/? D/UserControlVerifier: Current metric collection switch is: 1 2022-01-21 10:57:17.559 1524-2453/? I/BatchCreatorManager: addMetricEvent 2022-01-21 10:57:17.560 1524-2453/? I/BatchCreatorManager: storagePriority: 8 2022-01-21 10:57:17.560 1524-2453/? I/BatchCreatorManager: addMetricEvent, runningBatch size:8 2022-01-21 10:57:17.568 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.575 16916-16933/? E/ActivityThread: Failed to find provider info for com.google.android.gms.chimera 2022-01-21 10:57:17.576 16916-16933/? W/DynamiteModule: Failed to retrieve remote module version. 2022-01-21 10:57:17.576 16916-16933/? E/DynamiteModule: Failed to load IDynamiteLoader from GmsCore: Application package com.google.android.gms not found 2022-01-21 10:57:17.576 16916-16933/? I/DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:20 and remote module com.google.android.gms.measurement.dynamite:0 2022-01-21 10:57:17.576 16916-16933/? I/DynamiteModule: Selected local version of com.google.android.gms.measurement.dynamite 2022-01-21 10:57:17.578 16916-16933/? E/DynamiteModule: Failed to load IDynamiteLoader from GmsCore: Application package com.google.android.gms not found 2022-01-21 10:57:17.585 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.599 16916-16916/? I/FirebaseCrashlytics: Initializing Crashlytics 17.2.2 2022-01-21 10:57:17.602 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.611 16916-16916/? I/FirebaseInitProvider: FirebaseApp initialization successful 2022-01-21 10:57:17.618 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.633 337-369/? E/BufferQueueProducer: [com.amazon.venezia/com.amazon.venezia.library.LibraryActivity#0] disconnect: not connected (req=1) 2022-01-21 10:57:17.633 11665-11701/? W/libEGL: EGLNativeWindowType 0xc78fd008 disconnect failed 2022-01-21 10:57:17.633 11665-11701/? D/OpenGLRenderer: endAllActiveAnimators on 0xbfba6000 (RippleDrawable) with handle 0xc61fdc80 2022-01-21 10:57:17.634 11665-11701/? D/OpenGLRenderer: endAllActiveAnimators on 0xc1f12c80 (RippleDrawable) with handle 0xc61fdc70 2022-01-21 10:57:17.634 309-434/? W/hwcomposer: [OVL] (0) No overlay input queue(0) 2022-01-21 10:57:17.634 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Buffer queue is created with size(3) 2022-01-21 10:57:17.635 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) setConsumerListener 2022-01-21 10:57:17.635 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Reallocate Slot(0), pool(0 -> 0) size(0 -> 4096000) 2022-01-21 10:57:17.635 309-434/? E/hwcomposer: protectedCloseImpl simply return that fd<0 2022-01-21 10:57:17.636 16916-16940/? I/FA: App measurement initialized, version: 33025 2022-01-21 10:57:17.637 16916-16940/? I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE 2022-01-21 10:57:17.638 16916-16940/? I/FA: To enable faster debug mode event logging run: adb shell setprop debug.firebase.analytics.app com.custom.project 2022-01-21 10:57:17.685 16916-16916/? I/IL2CPP: JNI_OnLoad 2022-01-21 10:57:17.688 16916-16916/? E/SELinux: avc: could not determine enforcing mode: Permission denied 2022-01-21 10:57:17.688 16916-16916/? E/SELinux: Unknown class directtexture 2022-01-21 10:57:17.688 16916-16916/? D/OpenGLRenderer: Skia GL Pipeline 2022-01-21 10:57:17.691 16916-16940/? W/GooglePlayServicesUtil: com.custom.project requires the Google Play Store, but it is missing. 2022-01-21 10:57:17.691 16916-16940/? W/FA: Service invalid 2022-01-21 10:57:17.701 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.711 566-3321/? E/WindowManager: App trying to use insecure INPUT_FEATURE_NO_INPUT_CHANNEL flag. Ignoring 2022-01-21 10:57:17.727 16916-16940/? I/FA: Tag Manager is not found and thus will not be used 2022-01-21 10:57:17.731 16916-16940/? W/GooglePlayServicesUtil: Google Play services is missing. 2022-01-21 10:57:17.811 16916-16916/? E/gralloc: Arm Module v1.0 2022-01-21 10:57:17.813 16916-16916/? E/ion: ioctl c0044901 failed with code -1: Invalid argument 2022-01-21 10:57:17.822 16916-16916/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncEventPhaseOffsetNs retrieved: 1000000 (default) 2022-01-21 10:57:17.822 16916-16916/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncSfEventPhaseOffsetNs retrieved: 1000000 (default) 2022-01-21 10:57:17.842 566-592/? I/ActivityManager: Displayed com.custom.project/com.unity3d.player.UnityPlayerActivity: +440ms (total +344ms) 2022-01-21 10:57:17.848 16916-16948/? I/Unity: MemoryManager: Using 'Dynamic Heap' Allocator. 2022-01-21 10:57:17.850 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Reallocate Slot(1), pool(0 -> 0) size(0 -> 4096000) 2022-01-21 10:57:17.851 309-434/? E/hwcomposer: protectedCloseImpl simply return that fd<0 2022-01-21 10:57:17.881 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:8, data:0 2022-01-21 10:57:17.881 327-345/? I/libPowerHal: 8: cpu_ctrl set freq: -1 -1 2022-01-21 10:57:17.893 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.893 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.894 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.895 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.895 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.895 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.903 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.905 309-434/? I/hwcomposer: [OVL] (0) Overlay input(0) was used with queue previously 2022-01-21 10:57:17.905 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Buffer queue is destroyed 2022-01-21 10:57:17.905 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Free Slot(0), handle=0xf6dec180, 4096000 -> 0 2022-01-21 10:57:17.905 309-434/? I/hwcomposer: [DBQ] (q2:0xf6dafc80) Free Slot(1), handle=0xf6dec2c0, 4096000 -> 0 2022-01-21 10:57:17.906 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.906 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.909 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.909 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.909 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.909 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: Rejecting re-init on previously-failed class java.lang.Class<com.unity3d.player.AssetPackManagerWrapper$b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/play/core/assetpacks/AssetPackStateUpdateListener; 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.play.core.assetpacks.AssetPackStateUpdateListener" on path: DexPathList[[zip file "/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk"],nativeLibraryDirectories=[/data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/lib/arm, /data/app/com.custom.project-eDFwqHiXAPgjFTKh9AHerA==/base.apk!/lib/armeabi-v7a, /system/lib]] 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void android.os.Looper.loop() (Looper.java:193) 2022-01-21 10:57:17.910 16916-16948/? I/customproject: at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) 2022-01-21 10:57:17.919 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.923 16916-16948/? I/Unity: SystemInfo CPU = ARMv7 VFPv3 NEON, Cores = 4, Memory = 1778mb 2022-01-21 10:57:17.923 16916-16948/? I/Unity: SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf), 0 little (mask: 0x0) 2022-01-21 10:57:17.923 16916-16948/? I/Unity: ApplicationInfo com.custom.project version 1.1.6 build 5a54fc2a-53c2-4210-bb40-f24aa90cd68e 2022-01-21 10:57:17.924 16916-16948/? I/Unity: Built from '2021.1/staging' branch, Version '2021.1.22f1 (a137e5fb0427)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'armeabi-v7a', Stripping 'Enabled' 2022-01-21 10:57:17.924 566-3321/? I/AmazonPowerManagerVendorCallback: Wakelock acquired UID:1000 PID:566 Tag:WindowManager 2022-01-21 10:57:17.935 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.952 337-337/? I/chatty: uid=1000(system) /system/bin/surfaceflinger identical 1 line 2022-01-21 10:57:17.968 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:17.974 337-369/? E/BufferQueueProducer: [SpeechUi-Locked#0] disconnect: not connected (req=1) 2022-01-21 10:57:17.974 1440-2643/? W/libEGL: EGLNativeWindowType 0xdd9e8808 disconnect failed 2022-01-21 10:57:17.978 1440-2643/? D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000 2022-01-21 10:57:17.986 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.002 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.017 566-646/? D/AmazonWindowMetrics: On window event - Package com.custom.project, isDreaming false, state 1, alexaMode 0 2022-01-21 10:57:18.019 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.019 337-561/? W/SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen com.custom.project#0 2022-01-21 10:57:18.019 337-561/? W/SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen com.custom.project#0 2022-01-21 10:57:18.036 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.051 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.057 16916-16916/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncEventPhaseOffsetNs retrieved: 1000000 (default) 2022-01-21 10:57:18.057 16916-16916/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::vsyncSfEventPhaseOffsetNs retrieved: 1000000 (default) 2022-01-21 10:57:18.067 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.251 337-337/? I/chatty: uid=1000(system) /system/bin/surfaceflinger identical 11 lines 2022-01-21 10:57:18.268 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.271 566-1724/? I/OpenGLRenderer: Initialized EGL, version 1.4 2022-01-21 10:57:18.271 566-1724/? D/OpenGLRenderer: Swap behavior 2 2022-01-21 10:57:18.271 566-1724/? E/OpenGLRenderer: Device claims wide gamut support, cannot find matching config, error = EGL_SUCCESS 2022-01-21 10:57:18.284 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.519 16916-16948/? E/SchedPolicy: set_timerslack_ns write failed: Operation not permitted 2022-01-21 10:57:18.299 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:18.532 16916-16948/? I/Unity: Company Name: CustomProject Ltd 2022-01-21 10:57:18.532 16916-16948/? I/Unity: Product Name: CustomProject 2022-01-21 10:57:18.538 566-1584/? I/AlexaModeSwitchManagerImpl: Inside getMode 2022-01-21 10:57:18.540 566-1584/? E/SELinux: avc: denied { see_home_task } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:system_server:s0 tclass=amazon_policies permissive=0 2022-01-21 10:57:18.549 16916-16948/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 2022-01-21 10:57:18.549 16916-16948/? I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 2022-01-21 10:57:18.555 16916-16948/? D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000 2022-01-21 10:57:18.560 566-575/? I/system_server: NativeAlloc concurrent copying GC freed 46206(2MB) AllocSpace objects, 2(104KB) LOS objects, 24% free, 18MB/24MB, paused 226us total 235.225ms 2022-01-21 10:57:18.561 566-1584/? I/AlexaModeSwitchManagerImpl: Inside getMode 2022-01-21 10:57:18.563 566-1584/? E/SELinux: avc: denied { see_home_task } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:system_server:s0 tclass=amazon_policies permissive=0 2022-01-21 10:57:18.570 16916-16948/? D/Unity: GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_EXT_texture_compression_astc_decode_mode GL_EXT_texture_compression_astc_decode_mode_rgb9e5 GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer 2022-01-21 10:57:18.570 16916-16948/? D/Unity: GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_EXT_multisampled_render_to_texture2 GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_ 2022-01-21 10:57:18.570 16916-16948/? D/Unity: box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures GL_EXT_buffer_storage GL_EXT_external_buffer GL_EXT_EGL_image_array GL_EXT_texture_filter_anisotropic 2022-01-21 10:57:18.581 16916-16986/? I/SwappyDisplayManager: Starting looper thread 2022-01-21 10:57:18.520 16916-16948/? I/chatty: uid=10193(com.custom.project) UnityMain identical 14 lines 2022-01-21 10:57:18.520 16916-16948/? E/SchedPolicy: set_timerslack_ns write failed: Operation not permitted 2022-01-21 10:57:18.600 566-1584/? I/AmazonPowerManagerVendorCallback: Wakelock acquired UID:1041 PID:0 Tag:AudioMix 2022-01-21 10:57:18.606 16916-16989/? D/AmazonAudioTrackCallback: No AudioTrackFlags provided. Using internal defaults. 2022-01-21 10:57:18.608 16916-16989/? D/AmazonAudioTrackCallback: No Audio content type provided. 2022-01-21 10:57:18.608 16916-16989/? I/android.media.AudioTrack: AUDIOINFO: audio_input: format: 2 sample_rate: 24000 channels: 2 AudioAttributes: AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MUSIC flags=0x0 tags= bundle=null 2022-01-21 10:57:18.609 329-9895/? I/APM_AudioPolicyManager: getOutputForAttr() device 0x2, sampling rate 24000, format 0x1, channel mask 0x3, flags 0 stream 0x3 2022-01-21 10:57:18.610 329-9895/? D/AudioFlinger: Client defaulted notificationFrames to 682 for frameCount 2048 2022-01-21 10:57:18.613 16916-16989/? W/AudioTrack: Use of stream types is deprecated for operations other than volume control 2022-01-21 10:57:18.613 16916-16989/? W/AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case 2022-01-21 10:57:18.615 321-513/? I/ASP: asp_command: 0x0; code=73 2022-01-21 10:57:18.615 321-513/? I/ASP: set source metadata 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: AFE: Stream Meta data update. 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: AFE: MediaTypeHandler: Update playback stream meta data 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: New AFE playback profile request: normal, Old profile: non-dolby 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting, MBCL Bypass: 1 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting, MBCL InpVol: 9.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting, PreFilter Bypass: 1 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand1, CompInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand2, CompInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand3, CompInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand4, CompInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand1, compRatio: 1.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand2, compRatio: 1.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand3, compRatio: 1.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand4, compRatio: 1.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand1, compThresh: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand2, compThresh: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand3, compThresh: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand4, compThresh: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand1, compGainMin: -40.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand2, compGainMin: -40.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand3, compGainMin: -40.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mbcBand4, compGainMin: -40.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand1, thresh: -0.500000 release: 50.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand1, LimInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand2, thresh: -0.500000 release: 50.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand2, LimInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand3, thresh: 0.000000 release: 20.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand3, LimInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand4, thresh: 0.000000 release: 20.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting m_mblBand4, LimInpVol: 0.000000 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting, MBC Bypass: 0 2022-01-21 10:57:18.615 321-513/? I/AUDIOALG: MBCL setting - If 48k, Bypass MBC48k Look-Ahead Buffer: 49 2022-01-21 10:57:18.616 321-513/? I/AUDIOALG: MBCL setting m_mblFullBand, thresh: 0.000000 release: 20.000000 2022-01-21 10:57:18.616 321-513/? I/AUDIOALG: MBCL setting m_mblFullBand, LimInpVol: -1.000000 2022-01-21 10:57:18.616 321-513/? I/AUDIOALG: Configure MBCL in normal profile 2022-01-21 10:57:18.616 321-1982/? D/AudioALSAStreamManager: setMasterVolume(), volume = 1.000000 2022-01-21 10:57:18.616 321-1982/? D/AudioMTKGainController: setNormalVolume(), mSceneIndex = 0, stream -1, devices 0x2, index -1, mode 0x0 2022-01-21 10:57:18.616 321-1982/? W/AudioMTKGainController: error, stream -1 is invalid, use 3 instead 2022-01-21 10:57:18.616 321-1982/? W/AudioMTKGainController: error, index -1 is invalid, use max 15 instead 2022-01-21 10:57:18.616 321-1982/? D/AudioMTKGainController: setSpeakerGain(), gain = 6, spkAnaType = 1, spkLMixerName = Headset_PGAL_GAIN, spkRMixerName = Headset_PGAR_GAIN 2022-01-21 10:57:18.616 321-1982/? D/AudioALSAStreamOut: [primary] open(), flags 2 2022-01-21 10:57:18.616 321-1982/? D/AudioALSAStreamManager: +createPlaybackHandler(), mAudioMode = 0, output_devices = 0x2 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: AudioALSAPlaybackHandlerNormal() 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAStreamManager: createPlaybackHandler() ApplyFilter [0]/[1] Device [0x2] 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: +setFilterMng() mAudioFilterManagerHandler [0xeaf0f100] 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: -setFilterMng() 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAStreamManager: -createPlaybackHandler(), mPlaybackHandlerVector.size() = 1 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: +open(), mDevice = 0x2 2022-01-21 10:57:18.617 321-1982/? D/AudioALSADeviceParser: compare pcm success = 0, stringpair = MultiMedia1_PLayback 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: ChooseTargetSampleRate SampleRate = 48000 outputdevice = 2 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: asp_open(), mDevice = 0x2 2022-01-21 10:57:18.617 321-1982/? I/ASP/ER: RegisterWriter writer = 0xeaf6a7ac (speaker) 2022-01-21 10:57:18.617 321-1982/? I/ASP/Conversion: PipelineSpeaker 0xeaf6a700 in 1 2 48000 out 1 2 48000 2022-01-21 10:57:18.617 321-1982/? I/AUDIOALG: setPlaybackDevices() called with 0x00000001, device type NOT changed, no action taken 2022-01-21 10:57:18.617 321-1982/? I/ASP/Conversion: SetDevice set AFE out devices = 2 2022-01-21 10:57:18.617 321-1982/? I/ASP/Conversion: SetSpeakerCalState_l: Speaker gain calibration: disabled 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAPlaybackHandlerNormal: open(), mConfig: channels = 2, rate = 48000, period_size = 1536, period_count = 2, format = 0 2022-01-21 10:57:18.617 321-1982/? D/AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mOutputDevices = 0x0, mStartOutputDevicesCount = 0 SampleRate = 48000 2022-01-21 10:57:18.617 321-1982/? D/audio_route: Apply path: speaker 2022-01-21 10:57:18.640 321-1982/? D/AudioALSAHardwareResourceManager: -startOutputDevice(), mOutputDevices = 0x2, mStartOutputDevicesCount = 1 2022-01-21 10:57:18.640 321-1982/? D/audio_route: Apply path: normal-playback speaker 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAPlaybackHandlerBase: openPcmDriverWithFlag(), pcm device = 0 flag = 0x8 mPcm = 0xe98ee8c0 2022-01-21 10:57:18.698 321-1982/? D/AudioVoiceUIDL: [GetSRCInputParameter] mOutputSampleRate 16000, mInputSampleRate 48000, mInChannel 2, mOutChannel, 0 format 1 2022-01-21 10:57:18.698 321-1982/? D/AudioVoiceUIDL: [GetSRCInputParameter] create SRC handle fail 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAPlaybackHandlerNormal: -open() 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAStreamOut: [primary] -open() 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAPlaybackHandlerNormal: setScreenState, rate 3072 0.064000, mode = 1 , buffer_size = 12288, channel 2, format1 2022-01-21 10:57:18.698 321-1982/? D/AudioMTKFilter: AudioMTKFilter::start() type 0 mode 4 bFirstDataWrite 1 2022-01-21 10:57:18.698 321-1982/? D/MtkAudioLoud: setWorkMode(), chNum 2, sampleRate 48000, workMode 4 RampupEnable 0 2022-01-21 10:57:18.698 321-1982/? D/MtkAudioLoud: setParameter 517 mInitParam.Initial_State 0 2022-01-21 10:57:18.698 321-1982/? D/MtkAudioLoud: +open() 2022-01-21 10:57:18.698 321-1982/? D/MtkAudioLoud: -open() result 0 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAPlaybackHandlerNormal: doProcessAsp pcm_get_htimestamp failed: ret = -1, pcm_get_error = 2022-01-21 10:57:18.698 321-1982/? D/AudioALSAPlaybackHandlerNormal: doProcessAsp DelayBufferSize = 6144, inBufferSize = 6144 2022-01-21 10:57:18.700 321-513/? I/ASP: asp_command: 0x0; code=73 2022-01-21 10:57:18.700 321-513/? I/ASP: set source metadata 2022-01-21 10:57:18.700 321-513/? I/AUDIOALG: AFE: Stream Meta data update. 2022-01-21 10:57:18.700 321-513/? I/AUDIOALG: AFE: MediaTypeHandler: Update playback stream meta data 2022-01-21 10:57:18.700 321-513/? I/AUDIOALG: New AFE playback profile request: normal, Old profile: normal 2022-01-21 10:57:18.700 321-513/? I/AUDIOALG: Same AFE profile: No change 2022-01-21 10:57:18.701 321-513/? D/DlbDlbEffect: handle_EFFECT_CMD_RESET() 2022-01-21 10:57:18.701 321-513/? I/DlbDapBufferAdapter: configure(sampleRate = 48000, format = 5, inChannelMask = 0x3, outChannelMask = 0x3) 2022-01-21 10:57:18.702 321-513/? D/DlbDlbEffect: handle_EFFECT_CMD_ENABLE() 2022-01-21 10:57:18.702 321-513/? D/DlbCrossfadeProcess: setEnabled transitioning from DAP_BYPASSED state to PREROLL_ACTIVE 2022-01-21 10:57:18.702 321-1982/? D/AudioALSAPlaybackHandlerNormal: doProcessAsp DelayBufferSize = 12288, inBufferSize = 6144 2022-01-21 10:57:18.703 321-1982/? D/AudioALSAPlaybackHandlerNormal: doProcessAsp DelayBufferSize = 12288, inBufferSize = 6144 2022-01-21 10:57:18.735 321-1988/? D/DlbCrossfadeProcess: process transitioning from PREROLL_ACTIVE state to FADE_TO_ACTIVE 2022-01-21 10:57:18.764 329-543/? D/AudioFlinger: mixer(0xe5f03e00) throttle end: throttle time(13) 2022-01-21 10:57:18.862 321-1988/? D/DlbCrossfadeProcess: process transitioning from FADE_TO_ACTIVE state to DAP_ACTIVE 2022-01-21 10:57:19.517 408-408/? I/Accelerometer: flush, flushCnt:1 2022-01-21 10:57:19.518 408-630/? I/Accelerometer: flush complete, flushCnt:0 2022-01-21 10:57:19.518 408-408/? I/Accelerometer: batch: handle:0, flag:0,samplingPeriodNs:20000000 maxBatchReportLatencyNs:0 2022-01-21 10:57:19.528 16916-16948/? V/MediaRouter: Adding route: RouteInfo{ name=Tablet, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null } 2022-01-21 10:57:19.531 16916-16948/? V/MediaRouter: Selecting route: RouteInfo{ name=Tablet, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null } 2022-01-21 10:57:19.590 319-319/? I/WifiHAL: enter wifi_get_link_stats id[0] iface[0x0xef608138] 2022-01-21 10:57:19.590 319-319/? I/WifiHAL: Creating message to get link statistics; iface = 9 2022-01-21 10:57:19.590 319-319/? D/WifiHAL: WifiRequest::create vendor command to iface 9, vendor_id=0x1a11, subcmd=0x1200, res=0 2022-01-21 10:57:19.605 319-319/? I/WifiHAL: In GetLinkStatsCommand::handleResponse 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: on_time: = 12461224 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: tx_time: = 7440 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: rx_time: = 297816 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: on_time_scan: = 47544 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: beacon_rx: = 26707 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: rssi_mgmt: = -38 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: received mpdu: = 2300 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: transmite mpdu: = 25647 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: lost mpdu: = 5458 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: retry mpdu: = 258 2022-01-21 10:57:19.605 319-319/? D/WifiHAL: mId[0] mIface[0x0xef608138] 2022-01-21 10:57:19.659 16916-16948/? I/Unity: Odin Serializer ArchitectureInfo initialization with defaults (all unaligned read/writes disabled). UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) Sirenix.Serialization.ArchitectureInfo:.cctor() Sirenix.Serialization.UnitySerializationInitializer:Initialize() Sirenix.Serialization.UnitySerializationInitializer:InitializeRuntime() 2022-01-21 10:57:19.672 16916-16948/? I/Unity: Odin Serializer detected non-white-listed runtime platform Android; disabling all unaligned memory read/writes. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) Sirenix.Serialization.ArchitectureInfo:SetRuntimePlatform(RuntimePlatform) Sirenix.Serialization.UnitySerializationInitializer:Initialize() Sirenix.Serialization.UnitySerializationInitializer:InitializeRuntime() 2022-01-21 10:57:19.673 16916-16948/? I/IL2CPP: Locale en-GB 2022-01-21 10:57:19.703 566-1584/? W/SensorService: sensor 00000001 already enabled in connection 0xc9627de0 (ignoring) 2022-01-21 10:57:19.703 408-408/? I/Accelerometer: batch: handle:0, flag:0,samplingPeriodNs:66667000 maxBatchReportLatencyNs:100000000 2022-01-21 10:57:19.703 408-408/? I/Accelerometer: flush, flushCnt:1 2022-01-21 10:57:19.703 408-630/? I/Accelerometer: flush complete, flushCnt:0 2022-01-21 10:57:19.704 408-408/? I/Accelerometer: batch: handle:0, flag:0,samplingPeriodNs:20000000 maxBatchReportLatencyNs:0 2022-01-21 10:57:19.716 16916-16948/? I/Unity: [TestIap] Start. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) TestIap:Start() 2022-01-21 10:57:19.718 16916-16948/? I/Unity: >> [ManualIapHandler] Init. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) ManualIAPHandler:Init() TestIap:Start() 2022-01-21 10:57:19.719 566-1584/? I/AmazonPowerManagerVendorCallback: Wakelock released UID:1000 PID:566 Tag:WindowManager 2022-01-21 10:57:19.720 327-346/? I/vendor.mediatek.hardware.power@2.0-impl: powerHintAsync hint:2, data:0 2022-01-21 10:57:19.720 327-345/? I/libPowerHal: 2: set gpu level: 0 2022-01-21 10:57:19.720 327-345/? I/libPowerHal: 2: cpu_ctrl set freq: 2001000 -1 2022-01-21 10:57:19.799 16916-16955/? D/NetworkSecurityConfig: No Network Security Config specified, using platform default 2022-01-21 10:57:19.870 327-345/? I/libPowerHal: 2: cpu_ctrl set freq: -1 -1 2022-01-21 10:57:19.870 327-345/? I/libPowerHal: 2: set gpu level: 2 2022-01-21 10:57:19.870 327-345/? I/libPowerHal: 2: set gpu level max: 0 2022-01-21 10:57:19.981 16916-16948/? D/d: In App Purchasing SDK - Sandbox Mode: PurchasingListener registered: com.unity.purchasing.amazon.AmazonPurchasing@241ce7d 2022-01-21 10:57:19.981 16916-16948/? D/d: In App Purchasing SDK - Sandbox Mode: PurchasingListener Context: com.unity3d.player.UnityPlayerActivity@1190b46 2022-01-21 10:57:19.998 16916-16948/? I/Unity: >> [ManualIapHandler] Starting Initialization... module=AmazonAppStore UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) ManualIAPHandler:MyDebug(String) ManualIAPHandler:InitializePurchasing() ManualIAPHandler:Init() TestIap:Start() 2022-01-21 10:57:20.021 16916-16948/? D/Unity Purchasing Amazon: RetrieveProducts 2 2022-01-21 10:57:20.022 16916-16948/? D/c: In App Purchasing SDK - Sandbox Mode: sendGetUserDataRequest 2022-01-21 10:57:20.023 566-1584/? W/ActivityManager: Unable to start service Intent { act=com.amazon.testclient.iap.appUserId flg=0x10000000 cmp=com.amazon.sdktestclient/.command.CommandBroker (has extras) } U=0: not found 2022-01-21 10:57:20.024 16916-16948/? I/Unity: [TestIap] Start Complete. UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) TestIap:Start() 2022-01-21 10:57:20.397 321-1988/? D/DlbDap2Process: process() called [347000] times 2022-01-21 10:57:20.855 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:20.858 566-649/? I/InputReader: Reconfiguring input devices. changes=0x00000004 2022-01-21 10:57:20.869 337-337/? E/FrameEvents: updateAcquireFence: Did not find frame. 2022-01-21 10:57:22.610 319-319/? I/WifiHAL: enter wifi_get_link_stats id[0] iface[0x0xef608138] 2022-01-21 10:57:22.610 319-319/? I/WifiHAL: Creating message to get link statistics; iface = 9 2022-01-21 10:57:22.610 319-319/? D/WifiHAL: WifiRequest::create vendor command to iface 9, vendor_id=0x1a11, subcmd=0x1200, res=0 2022-01-21 10:57:22.623 319-319/? I/WifiHAL: In GetLinkStatsCommand::handleResponse 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: on_time: = 12464244 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: tx_time: = 7447 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: rx_time: = 298143 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: on_time_scan: = 47544 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: beacon_rx: = 26817 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: rssi_mgmt: = -36 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: received mpdu: = 2332 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: transmite mpdu: = 25675 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: lost mpdu: = 5458 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: retry mpdu: = 259 2022-01-21 10:57:22.624 319-319/? D/WifiHAL: mId[0] mIface[0x0xef608138] 2022-01-21 10:57:23.053 321-1988/? D/DlbDap2Process: process() called [347500] times 2022-01-21 10:57:23.439 11665-11673/? W/System: A resource failed to call close. 2022-01-21 10:57:23.440 11665-11673/? W/System: A resource failed to call close. 2022-01-21 10:57:25.630 319-319/? I/WifiHAL: enter wifi_get_link_stats id[0] iface[0x0xef608138] 2022-01-21 10:57:25.630 319-319/? I/WifiHAL: Creating message to get link statistics; iface = 9 2022-01-21 10:57:25.630 319-319/? D/WifiHAL: WifiRequest::create vendor command to iface 9, vendor_id=0x1a11, subcmd=0x1200, res=0 2022-01-21 10:57:25.646 319-319/? I/WifiHAL: In GetLinkStatsCommand::handleResponse 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: on_time: = 12467264 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: tx_time: = 7448 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: rx_time: = 298260 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: on_time_scan: = 47544 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: beacon_rx: = 26835 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: rssi_mgmt: = -39 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: received mpdu: = 2334 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: transmite mpdu: = 25693 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: lost mpdu: = 5459 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: retry mpdu: = 259 2022-01-21 10:57:25.646 319-319/? D/WifiHAL: mId[0] mIface[0x0xef608138] 2022-01-21 10:57:25.741 321-1988/? D/DlbDap2Process: process() called [348000] times 2022-01-21 10:57:27.526 566-579/? I/PackageRecency: Intent triggered to package: ComponentInfo{com.amazon.firelauncher/com.amazon.fireappscardproducer.service.SystemNotificationProducerService$PackageRecencyReceiver} for Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.custom.project cmp=com.custom.project/com.unity3d.player.UnityPlayerActivity } 2022-01-21 10:57:27.583 1539-16999/? I/F_C.BaseCardProducerSer: Handling work for com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.583 1539-16999/? I/F_C.BaseCardProducerSer: No increment in producer version. 2022-01-21 10:57:27.583 1539-16999/? I/F_C.BootstrappingProduc: All bootstrapping complete, handling work 2022-01-21 10:57:27.583 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899773440 2022-01-21 10:57:27.583 1539-16999/? I/F_C.RebuildingDatabaseO: Setting WAL enabled: true, wantsWal is true 2022-01-21 10:57:27.591 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899740672 2022-01-21 10:57:27.592 1539-16999/? I/F_C.SystemNotificationP: Handling work for com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.594 1539-16999/? I/F_C.SystemNotificationP: Marking app com.custom.project#com.unity3d.player.UnityPlayerActivity as accessed 2022-01-21 10:57:27.594 1539-16999/? I/F_C.DefaultAppRecency: Accessed content 833791306 2022-01-21 10:57:27.594 1539-16999/? I/F_C.DefaultAppRecencyDa: Recording app 833791306 as accessed 2022-01-21 10:57:27.598 1539-16999/? I/F_C.GamesAppsLibraryDec: Drawing games and apps library cards. 2022-01-21 10:57:27.608 1539-16999/? I/F_C.GamesAppsLibraryDec: Number of Library items : 2 2022-01-21 10:57:27.609 1539-16999/? I/F_C.LibrarySectionDeck: Drawing cards for section apps 2022-01-21 10:57:27.614 1539-16999/? I/F_C.LibrarySectionDeck: Pushing cards with 2 apps for section apps 2022-01-21 10:57:27.616 1539-16999/? I/F_C.LibrarySectionDeck: Drawing cards for section games 2022-01-21 10:57:27.618 1539-16999/? I/F_C.LibrarySectionDeck: No items returned for app types [GAME], deleting card 2022-01-21 10:57:27.618 1539-16999/? I/F_C.AppsRecencyDeck: Drawing Recent apps cards. 2022-01-21 10:57:27.642 1539-16999/? I/F_C.AppsRecencyDeck: Number of recent apps items : 6 2022-01-21 10:57:27.642 1539-16999/? I/F_C.UpNextDeck: Replacing all Up Next cards, with app last used time. 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Pushing 0 cards for deck LibrarySectionDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Deleting 1 cards for deck LibrarySectionDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Pushing 1 cards for deck LibrarySectionDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Deleting 0 cards for deck LibrarySectionDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Pushing 7 cards for deck UpNextDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Deleting 0 cards for deck UpNextDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Pushing 2 cards for deck GamesAppsLibraryDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Deleting 0 cards for deck GamesAppsLibraryDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Pushing 6 cards for deck AppsRecencyDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.BaseCardProducerSer: Deleting 0 cards for deck AppsRecencyDeck. Triggered by com.amazon.action.PACKAGE_RECENCY_NOTIFICATION 2022-01-21 10:57:27.671 1539-16999/? I/F_C.ProducerClientCompa: Producer com.amazon.firelauncher.fireappscardproducer at API version BrazilVersion(1.7.990.0). 2022-01-21 10:57:27.675 1539-16999/? I/F_C.ProducerClientCompa: Connected to ServerInfo(CDA Version: BrazilVersion(1.4.1264.0), Min. Producer: BrazilVersion(1.0), Delete All: true) 2022-01-21 10:57:27.679 1539-16999/? I/F_C.CardAgentSynchroniz: Throttling producer refresh 2022-01-21 10:57:27.679 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899732480 2022-01-21 10:57:27.682 1539-16999/? I/F_C.CardProvider: Starting batch operation 2022-01-21 10:57:27.682 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899732480 2022-01-21 10:57:27.682 1539-16999/? I/F_C.CardProvider: decomposeBatchOperations(1 ops) 2022-01-21 10:57:27.682 1539-16999/? I/F_C.CardProvider: - replaceAll not detected 2022-01-21 10:57:27.684 1539-16999/? I/F_C.CardProvider: - batch decomposition revealed no unnecessary deletes (1 deletes affecting 0 cards) 2022-01-21 10:57:27.685 1539-16999/? I/F_C.CardProvider: delete(ParsedUri(PRODUCER=com.amazon.firelauncher.fireappscardproducer, CARD=2026899589), null, 3392903), batched: true 2022-01-21 10:57:27.685 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899732480 2022-01-21 10:57:27.686 1539-16999/? I/F_C.CardProvider: We have 1 results from decomposedOperations. 2022-01-21 10:57:27.686 1539-16999/? I/F_C.CardProvider: Decomposition not applied 2022-01-21 10:57:27.686 1539-16999/? I/F_C.CardProvider: Completed batch operation 2022-01-21 10:57:27.686 1539-16999/? I/F_C.RebuildingDatabaseO: available bytes: 22899732480 2022-01-21 10:57:27.698 1539-16999/? I/F_C.CardProvider: bulkInsert(ParsedUri(PRODUCER=com.amazon.firelauncher.fireappscardproducer), contentValues:[(com.amazon.firelauncher.fireappscardproducer/LIBRARY/com.amazon.venezia:library-apps/14886992/1642762647616), ( It seems to reference Google Play a few times here which seems wrong. Code (CSharp): W/GooglePlayServicesUtil: com.custom.project requires the Google Play Store, but it is missing. Code (CSharp): W/GooglePlayServicesUtil: Google Play services is missing. etc... Also there's this: Code (CSharp): W/ActivityManager: Unable to start service Intent { act=com.amazon.testclient.iap.appUserId flg=0x10000000 cmp=com.amazon.sdktestclient/.command.CommandBroker (has extras) } U=0: not found Here is my code: Singleton that handles the IAPs: Code (CSharp): using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Purchasing; using UnityEngine.UI; using UnityEngine.Purchasing.Security; using Pixelplacement; public class ManualIAPHandler : Singleton<ManualIAPHandler>, IStoreListener { public Action<bool> Event_InitialisedComplete; public Action<bool, string> Event_SubscriptionComplete; public Action<bool, string> Event_PurchaseComplete; protected ManualIAPHandler() { } private static IStoreController m_StoreController; // The Unity Purchasing system. private static IExtensionProvider m_StoreExtensionProvider; // The store-specific Purchasing subsystems. private IAppleExtensions m_AppleExtensions; private IGooglePlayStoreExtensions m_GoogleExtensions; [SerializeField] private CustomIAPProduct[] _products; [Serializable] public struct CustomIAPProduct { public string Id; public ProductType Type; } //=================================================== // UNITY METHODS //=================================================== void Start() { // If we haven't set up the Unity Purchasing reference if (m_StoreController == null) { // Begin to configure our connection to Purchasing, can use button click instead // InitializePurchasing(); } } //=================================================== // PUBLIC METHODS //=================================================== /// <summary> /// Initialise the Purchasing. This will then check the products for subscriptions and dispatch SubscriptionCOmplete. /// </summary> public void Init() { Debug.Log(">> [ManualIapHandler] Init."); if (m_StoreController == null) { InitializePurchasing(); } } /// <summary> /// Buy a product. Pass in the product Id. /// </summary> /// <param name="productId"></param> public void BuySubscription(string productId) { Debug.Log($"[ManualIapHandler] BuySubscription. Product={productId}"); if (!IsInitialized()) { InitializePurchasing(); } BuyProductID(productId); } /// <summary> /// Restore the existing products. This will also check for subscriptions and dispatch teh SubsctriptionCompelte. /// </summary> public void RestorePurchases() { Debug.Log($">> [ManualIapHandler] RestorePurchases."); if (!IsInitialized()) { InitializePurchasing(); } if (Application.platform == RuntimePlatform.IPhonePlayer) { m_AppleExtensions.RestoreTransactions(OnRestoreComplete);//.RestoreTransactions(result => } else { m_GoogleExtensions.RestoreTransactions(OnRestoreComplete); } } /// <summary> /// Lists all of the products. /// </summary> public void ListProducts() { Debug.Log($"[ManualIapHandler] List Products."); foreach (UnityEngine.Purchasing.Product item in m_StoreController.products.all) { Debug.Log($"[ManualIapHandler] Product={item.definition.id.ToString()}. HasReceipt={(item.receipt != null)}"); if (item.receipt != null) { MyDebug($"[ManualIapHandler] Receipt found for Product={item.definition.id.ToString()}"); } } } /// <summary> /// Returns the price with the currency symbol. /// </summary> /// <returns></returns> public string GetProductPriceString(string productId) { var priceStr = "0.00"; priceStr = m_StoreController.products.WithID(productId)?.metadata.localizedPriceString; Debug.Log($">> [ManualIapHandler] GetProductPriceString = {priceStr}"); return priceStr; } //=================================================== // PRIVATE METHODS //=================================================== private void InitializePurchasing() { if (IsInitialized()) { return; } StandardPurchasingModule module; #if !KINDLE module = StandardPurchasingModule.Instance(); #else module = StandardPurchasingModule.Instance(AppStore.AmazonAppStore); #endif var builder = ConfigurationBuilder.Instance(module); foreach (var p in _products) { builder.AddProduct(p.Id, p.Type); } MyDebug($">> [ManualIapHandler] Starting Initialization... module={module.appStore.ToString()}"); UnityPurchasing.Initialize(this, builder); } private bool IsInitialized() { return m_StoreController != null && m_StoreExtensionProvider != null; } public void CheckProductsForSubscriptions() { Debug.Log($">> [ManualIapHandler] CheckProductsForSubscriptions."); Dictionary<string, string> dict = m_AppleExtensions.GetIntroductoryPriceDictionary(); foreach (UnityEngine.Purchasing.Product item in m_StoreController.products.all) { if (item.receipt != null) { string intro_json = (dict == null || !dict.ContainsKey(item.definition.storeSpecificId)) ? null : dict[item.definition.storeSpecificId]; if (item.definition.type == ProductType.Subscription) { SubscriptionManager p = new SubscriptionManager(item, intro_json); SubscriptionInfo info = p.getSubscriptionInfo(); MyDebug(">> [ManualIapHandler] Sub Info: " + info.getProductId().ToString()); MyDebug(">> [ManualIapHandler] Sub isSubscribed: " + info.isSubscribed().ToString()); MyDebug(">> [ManualIapHandler] Sub isFreeTrial: " + info.isFreeTrial().ToString()); // If we find a subsctiption, break out of the loop because its all we need. var subscribed = (info.isSubscribed() == Result.True || info.isFreeTrial() == Result.True); if (subscribed) { Event_SubscriptionComplete(true, info.getProductId()); return; } } } } // This will be false if no subscription was found. Event_SubscriptionComplete(false, ""); } private void BuyProductID(string productId) { if (IsInitialized()) { UnityEngine.Purchasing.Product product = m_StoreController.products.WithID(productId); if (product != null && product.availableToPurchase) { MyDebug(string.Format("[ManualIapHandler] Purchasing product:" + product.definition.id.ToString())); m_StoreController.InitiatePurchase(product); } else { MyDebug(">> [ManualIapHandler] BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase"); } } else { MyDebug(">> [ManualIapHandler] BuyProductID FAIL. Not initialized."); } } //=================================================== // EVENT HANDLERS //=================================================== #region INITIALISATION void IStoreListener.OnInitialized(IStoreController controller, IExtensionProvider extensions) { MyDebug(">> [ManualIapHandler] OnInitialized: SUCCESS"); m_StoreController = controller; m_StoreExtensionProvider = extensions; m_AppleExtensions = extensions.GetExtension<IAppleExtensions>(); m_GoogleExtensions = extensions.GetExtension<IGooglePlayStoreExtensions>(); // Dispatch Initialisation complete. Event_InitialisedComplete?.Invoke(true); // List all the products for logging. ListProducts(); } public void OnInitializeFailed(InitializationFailureReason error) { MyDebug($">> [ManualIapHandler] OnInitialized: FAILED. InitializationFailureReason={error}"); // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user. // Dispatch Initialisation failed. Event_InitialisedComplete?.Invoke(false); } #endregion #region PURCHASES public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { // if KINDLE we do not validate the recipts. #if KINDLE if (args.purchasedProduct.hasReceipt) { Event_PurchaseComplete?.Invoke(true, args.purchasedProduct.definition.id); return PurchaseProcessingResult.Complete; } #endif try { var validator = new CrossPlatformValidator(GooglePlayTangle.Data(), AppleTangle.Data(), Application.identifier); var result = validator.Validate(args.purchasedProduct.receipt); MyDebug(">> [ManualIapHandler] Validate = " + result.ToString()); foreach (IPurchaseReceipt productReceipt in result) { MyDebug(">> [ManualIapHandler] Valid receipt for " + productReceipt.productID.ToString()); Event_PurchaseComplete?.Invoke(true, productReceipt.productID); return PurchaseProcessingResult.Complete; } } catch (Exception e) { MyDebug(">> [ManualIapHandler] ProcessingPurchase Failed. Error is " + e.Message.ToString()); // Dispatch a false if something went wrong. Event_PurchaseComplete?.Invoke(false, args.purchasedProduct.definition.id); return PurchaseProcessingResult.Complete; } // This is a fallback if hte trycatch doesnt work. MyDebug(string.Format(">> [ManualIapHandler] TRYCATCH Failed. ProcessPurchase: " + args.purchasedProduct.definition.id)); Event_PurchaseComplete?.Invoke(true, args.purchasedProduct.definition.id); return PurchaseProcessingResult.Complete; } public void OnPurchaseFailed(UnityEngine.Purchasing.Product product, PurchaseFailureReason failureReason) { MyDebug(string.Format(">> [ManualIapHandler] OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason)); Event_PurchaseComplete?.Invoke(false, product.definition.id); } public void OnPurchaseDeferred(Product product) { MyDebug("[ManualIapHandler] Deferred product " + product.definition.id.ToString()); } #endregion private void OnRestoreComplete(bool result) { if (result) { MyDebug(">> [ManualIapHandler] Restore purchases succeeded."); CheckProductsForSubscriptions(); } else { MyDebug(">> [ManualIapHandler] Restore purchases failed."); } } private void MyDebug(string debug) { Debug.Log(debug); // myText.text += "\r\n" + debug; } } Class that tries to initialise the IAPS: Code (CSharp): using UnityEngine; public class TestIap : MonoBehaviour { //=================================================== // UNITY METHODS //=================================================== private void Start() { Debug.Log($"[TestIap] Start."); ManualIAPHandler.Instance.Event_InitialisedComplete += OnInitialisationComplete; ManualIAPHandler.Instance.Event_SubscriptionComplete += OnSubscriptionComplete; ManualIAPHandler.Instance.Init(); Debug.Log($"[TestIap] Start Complete."); } //=================================================== // PUBLIC METHODS //=================================================== //=================================================== // PRIVATE METHODS //=================================================== //=================================================== // EVENT HANDLERS //=================================================== private void OnInitialisationComplete(bool iapInitSuccess) { Debug.Log($"[TestIap] OnInitialisationComplete: Success={iapInitSuccess}"); } private void OnSubscriptionComplete(bool isSubscribed, string product) { Debug.Log($"[TestIap] OnSubscriptionComplete: isSubscribed={isSubscribed}, product={product}"); } }
@bz_apps Typically you don't want to publish your app until it's working in your testing. Have you selected the Amazon store in the Unity Editor? Use menu Window/Unity IAP/Switch Store. Also, I might recommend that you avoid code customizations until you have the basic code working, consider testing with the Sample IAP Project here https://forum.unity.com/threads/sample-iap-project.529555/#post-6950270
I have selected the store in the menu but am also setting it in the code so so hopefully there is no need to manually set it in the editor. If you review the logs you can see it has is being returned as Amazon Store. Code (CSharp): StandardPurchasingModule module; #if !KINDLE module = StandardPurchasingModule.Instance(); #else module = StandardPurchasingModule.Instance(AppStore.AmazonAppStore); #endif var builder = ConfigurationBuilder.Instance(module); Did you have a chance to review the code I posted? It is taken from the sample, the only real difference is that we are passing in the products rather than them being hard coded. The initialisation is the same code but it does not work... The code is exactly the same and works fine in our IOS and Google Play apps, it just doesn't work on Amazon...
I would not be able to debug your code as I mentioned. Please use the exact code from the Sample IAP Project, I have confirmed it works on Amazon.
I tested the Sample Project and was able to see it working. I've been trying to figure out what is going wrong. @JeffDUnity3D Is it possible to set the billing store via code? I thought the code I was using would do it but it throws and error. If I leave the Store in the menu as google play and try to set the store in code I get the following error: Code: Code (CSharp): StandardPurchasingModule module = StandardPurchasingModule.Instance(AppStore.AmazonAppStore); var builder = ConfigurationBuilder.Instance(module); Error: Code (CSharp): 2022-01-24 12:32:07.996 5889-5908/? E/Unity: NotSupportedException: Failed to bind to native store: UnityEngine.AndroidJavaException: java.lang.ClassNotFoundException: com.unity.purchasing.amazon.AmazonPurchasing at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0 at UnityEngine.AndroidJNISafe.FindClass (System.String name) [0x00000] in <00000000000000000000000000000000>:0 at UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) [0x00000] in <00000000000000000000000000000000>:0 at UnityEngine.Purchasing.NativeStoreProvider.GetAndroidStoreHelper (UnityEngine.Purchasing.IUnityCallback callback, UnityEngine.Purchasing.AppStore store, UnityEngine.Purchasing.Extension.IPurchasingBinder binder, Uniject.IUtil util) [0x00000] in <00000000000000000000000000000000>:0 at UnityEngine.Purchasing.NativeStoreProvider.GetAndroidStore (UnityEngine.Purchasing.IUnityCallback callback, UnityEngine.Purchasing.AppStore store, UnityEngine.Purchasing.Extension.IPurchasingBinder binder, Uniject.IUti The reason I ask is that we use cloud build and having to set the store via a menu in the editor would require maintaining 3 branches so we can set the menu to each store. It seems a strange mix of code and user interface.
You can (and have to) use UnityEditor.Purchasing.TargetAndroidStore if you want to switch between Google Play/Amazon stores. I guess preprocess build step is a good choice to call this. Also there are a few words about it in docs. Also I have experienced super unstable behaviour with testing Amazon store in sandbox mode (even without Unity IAP), so my choice is to go straight forward to Live App Testing mode.
Hi @JeffDUnity3D (or anyone lese who can help), I am running into a similar problem so figured I'd jump in on this thread. I have downloaded the linked sample project and put it into sandbox mode and have Amazon App Tester all setup but it is not working for me. When running the sample app on device Unity purchasing never moves beyond sendGetUserDataRequest. I'm using Unity 2020.3.27f1 with Unity Purchasing 4.1.5 Test device is Amazon Fire HD 8 (7th gen) Could you offer some help? Thanks
Did you ensure to target Amazon under Switch Store? In the Unity Editor, select menu Services/In-App Purchasing
Got it. I haven't tested Amazon in a few months, I'll give it a go and report my findings https://docs.unity3d.com/Manual/UnityIAPAmazonConfiguration.html
I submitted a new build, they mentioned it should be approved sometime next week as long as it passes review.
@mpaxman It worked for me. Although I couldn't sideload via USB, it would not initialize. But when I downloaded the app update from the App Store via LAT testing, it works just fine. I believe Amazon adds the DRM encoding to it after you upload it, for security.
@JeffDUnity3D - Not sure, I'm following - You submitted a new build of the demo project? Or the Unity IAP package? And the demo app is working fine for you via LAT after some changes that you did?
I did both. I updated the Sample IAP Project to IAP 4.4.1 and submitted to the app store. Direct install via USB would hang, but downloading the same release via the Amazon App Store after they added DRM works. I made no other changes to the app. It worked before the IAP upgrade and after.
Oh ok, so when submitting the apk we need to make sure we say YES to adding DRM? And then hypothetically if we have stuck close to the sample project IAP should work?
Yes, that is the process I followed. I don't think they will even allow you to submit the app without DRM. Then you need to download the app via the Amazon App Store as a tester.
@JeffDUnity3D OK, awesome. Looks like the IAP works if tested via Live App Testing with Amazon's DRM applied. Thanks for your help!
The downside is that you can't sideload the app directly via USB to test, which is an issue. The DRM notice on the Amazon portal mentioned that my app was using an "outdated SDK". We may need to update IAP to use the latest SDK, if we are able to do so. I will mention it to the team.