После обновления Unity до версии 2018.3.0f2 количество ошибок, связанных с рекламой, значительно возросло. Система сборки была изменена для Android, становится Gradle (Internal был раньше устаревшим). Пример исключения:
java.lang.Error: FATAL EXCEPTION [Thread-326575]
Unity version : 2018.3.0f2
Device model : Xiaomi Redmi Note 5
Device fingerprint: xiaomi/whyred/whyred:8.1.0/OPM1.171019.011/V10.0.6.0.OEIMIFH:user/release-keys
Caused by
at com.unity3d.player.ReflectionHelper.nativeProxyInvoke (Native Method)
at com.unity3d.player.ReflectionHelper.a (Unknown Source)
at com.unity3d.player.ReflectionHelper$1.invoke (Unknown Source:6)
at java.lang.reflect.Proxy.invoke (Proxy.java:913)
at $Proxy9.onAdFailedToLoad (Unknown Source)
at com.google.unity.ads.RewardBasedVideo$1$1$2.run (RewardBasedVideo.java:89)
at java.lang.Thread.run (Thread.java:764)
Номер прокси может отличаться: $ Proxy9, $ Proxy10, $ Proxy12, $ Proxy13
Есть и такие похожие ошибки, но для покупки товара.
java.lang.Error: FATAL EXCEPTION [pool-2-thread-1]
Unity version : 2018.3.0f2
Device model : BQru BQru_BQru-5058
Device fingerprint: BQru/BQru-5058/BQru-5058:7.0/NRD90M/1494381105:user/release-keys
Caused by
at com.unity3d.player.ReflectionHelper.nativeProxyInvoke (Native Method)
at com.unity3d.player.ReflectionHelper.a (Unknown Source)
at com.unity3d.player.ReflectionHelper$1.invoke (Unknown Source)
at java.lang.reflect.Proxy.invoke (Proxy.java:813)
at $Proxy7.OnProductsRetrieved (Unknown Source)
at com.unity.purchasing.common.UnityPurchasing.OnProductsRetrieved (UnityPurchasing.java:24)
at com.unity.purchasing.googleplay.GooglePlayPurchasing.NotifyUnityOfProducts (GooglePlayPurchasing.java:572)
at com.unity.purchasing.googleplay.GooglePlayPurchasing.access$1000 (GooglePlayPurchasing.java:43)
at com.unity.purchasing.googleplay.GooglePlayPurchasing$5.onQueryInventoryFinished (GooglePlayPurchasing.java:531)
at com.unity.purchasing.googleplay.IabHelper$4.workWith (IabHelper.java:862)
at com.unity.purchasing.googleplay.BillingServiceManager$2.run (BillingServiceManager.java:146)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
at java.lang.Thread.run (Thread.java:761)
Я использую код как в документации, до перехода на новую версию Unity все работало без ошибок.
Я пытался установить разные версии плагина AdMob для Unity, различные средства распознавания, добавленные и удаленные сервисы в Unity.
Теперь в моем Unity 2018.3.0f2:
- Минимальный уровень API: 16
- Целевой уровень API: самый высокий установлен (уровень 28, был 27)
- Версия сценариев Runtime: .NET 4.x (была 3.5 - устарела)
- Плагин Google Mobile Ads Unity v3.15.1
Устанавливается в систему через SDK Manager:
- Платформа Android SDK-Инструменты 28.0.1
- Инструменты Android SDK 26.1.1
- Сервисы Google Play версия 49
К сожалению, я не могу повторить такие сбои на своих локальных устройствах, это происходит примерно у 2% пользователей, на Android 5.0 +.
UPDATE :
Я уверен, что эта ошибка связана с версией плагина AdMob и «чем-то еще». На данный момент мне удалось уменьшить количество ошибок в 10-30 раз. Я переустановил Windows и все программное обеспечение, в конце концов я оставил плагин AdMob версии 3.14 и остальную часть программного обеспечения, как описано выше. Теперь у меня есть новое фатальное исключение (пример ниже), но это происходит 1-2 раза для 1000 игроков, это терпимо.
java.lang.Error: FATAL EXCEPTION [main]
Unity version : 2018.3.0f2
Device model : samsung SM-G570F
Device fingerprint: samsung/on5xeltejv/on5xelte:8.0.0/R16NW/G570FXXU1CRK1:user/release-keys
Caused by
at com.unity3d.player.ReflectionHelper.nativeProxyInvoke (Native Method)
at com.unity3d.player.ReflectionHelper.a (Unknown Source)
at com.unity3d.player.ReflectionHelper$1.invoke (Unknown Source:6)
at java.lang.reflect.Proxy.invoke (Proxy.java:913)
at $Proxy10.onAdFailedToLoad (Unknown Source)
at com.google.unity.ads.Interstitial$1$1.onAdFailedToLoad (Interstitial.java:75)
at com.google.android.gms.internal.ads.zzjf.onAdFailedToLoad (Unknown Source:2)
at com.google.android.gms.internal.ads.zzki.dispatchTransaction (Unknown Source:29)
at com.google.android.gms.internal.ads.zzek.onTransact (Unknown Source:22)
at android.os.Binder.transact (Binder.java:612)
at oe.b (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):15)
at com.google.android.gms.ads.internal.client.ac.a (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):6)
at com.google.android.gms.ads.internal.a.a (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):335)
at com.google.android.gms.ads.internal.a.a (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):331)
at com.google.android.gms.ads.internal.a.b (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):140)
at com.google.android.gms.ads.internal.c.b (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):44)
at com.google.android.gms.ads.internal.j.run (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):2)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at ze.a (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):5)
at com.google.android.gms.ads.internal.util.e.a (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):5)
at ze.dispatchMessage (com.google.android.gms.dynamite_adsdynamite@14799046@14.7.99 (040306-223214910):4)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6942)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)