java.util.ConcurrentModificationException w działaniu onCreate

48

W ostatnim wydaniu, w którym dodałem MoPub za pośrednictwem pośrednictwa reklam AdMob, widzę kilka ConcurrentModificationException w dziennikach awarii. Wszystko wydaje się być rodzimym kodem i jestem w najnowszej wersji wszystkich bibliotek związanych z reklamami i związanych z Google / Androidem. Ktoś już na to wpadł?

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3121)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3264)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7078)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:964)
Caused by: java.util.ConcurrentModificationException: 
  at androidx.c.g.put (SimpleArrayMap.java:482)
  at com.google.android.gms.measurement.internal.hs.a
  at com.google.android.gms.measurement.internal.hi.onActivityCreated
  at android.app.Application.dispatchActivityCreated (Application.java:245)
  at android.app.Activity.onCreate (Activity.java:1108)
  at androidx.core.app.e.onCreate (ComponentActivity.java:81)
  at androidx.activity.b.onCreate (ComponentActivity.java:149)
  at androidx.fragment.app.c.onCreate (FragmentActivity.java:313)
  at androidx.appcompat.app.e.onCreate (AppCompatActivity.java:106)
  at com.teamtol.livedota.BaseActivity.onCreate (BaseActivity.java:21)
  at com.teamtol.livedota.RecentGameActivity.onCreate (RecentGameActivity.java:70)
  at android.app.Activity.performCreate (Activity.java:7327)
  at android.app.Activity.performCreate (Activity.java:7318)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1275)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3101)

Oto jak wygląda kod do linii 21 BaseActivity:

protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        super.onCreate(savedInstanceState);

Tak wygląda kod do wiersza 70 funkcji LatestGameActivity

public class RecentGameActivity extends BaseActivity implements AdapterView.OnItemSelectedListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
mburst
źródło
1
Znaleźliśmy ten sam problem na kilku telefonach do Androida 9. Czy korzystasz z Firebase Analytics? Jeśli tak, która wersja?
Farasy
Ten sam problem po uaktualnieniu zależności.
Tearsdontfalls
1
@Farasy Tak, widzę to również dużo na Androidzie 9, chociaż kilku użytkowników w innych wersjach. Korzystam z Firebase Analytics com.google.firebase: firebase-core: 17.2.2
mburst
ktoś ma pomysł lub scenariusz, aby wygenerować tę awarię?
Bhaven Shah

Odpowiedzi:

22

W naszym przypadku awaria jest widoczna tylko z

com.google.firebase:firebase-analytics:17.2.2 

powrót do wersji 17.2.1 naprawił problem

Dzieje się tak również, jeśli używasz firebase-core: 17.2.2, ponieważ firebase-analytics to ta sama biblioteka, która została przemianowana. Weź pod uwagę, że zgodnie z oficjalnymi dokumentami obecne użycie Firebase-core jest przestarzałe -> https://firebase.google.com/support/release-notes/android#latest_sdk_versions

Pablo A. Martínez
źródło
przywrócenie firebase-analytics do wersji 17.2.1 naprawiło nasz problem. Dzięki!
Jaydipsinh Zala
Przywrócenie analizy ogniowej do wersji 17.2.1 nie rozwiązało tego problemu. Używamy od dłuższego 17.2.1czasu i nie widzieliśmy tych awarii. Wątpię, czy awaria jest w ogóle związana z firebase-analyticsbiblioteką.
Manuel
1
Dzięki za heads-upy. Właśnie wydałem wersję 17.2.1. Zaktualizuje się, gdy będzie miał czas w rękach użytkowników
mburst
Korekta: przywróciliśmy analitykę bazy ogniowej do 17.2.1, ale pozostawiliśmy rdzeń bazy ogniowej bez zmian o 17.2.2 i nadal występowały awarie. Następnie wypuściliśmy wersję z rdzeniem również przywróconą do wersji 17.2.1 i jak dotąd żadnych awarii. (Nie jestem pewien, czy rdzeń bazy ogniowej jest w ogóle potrzebny?)
Manuel
@ PabloA.Martínez Dobrze, nie widzieliśmy żadnych awarii w wersji 17.2.1 od czasu przywrócenia zarówno bibliotek podstawowych, jak i analitycznych. Czy zdarzyło Ci się wiedzieć, odkąd który rdzeń wersji jest przestarzały? Nie mogłem znaleźć odniesienia do tego.
Manuel
20

Przywróć bibliotekę Firebase Core do:

implementation 'com.google.firebase:firebase-core:17.1.0'

Widziałem tę awarię zarówno w wersji 17.2.1, jak i wersji 17.2.2, ale od powrotu do wersji 17.1.0 wszystko było w porządku.

Zgłoszono błąd tutaj: https://firebase.google.com/support/troubleshooter/report/bugs

Aktualizacja

Dzięki @ Sébastien, przywracanie do wersji 17.2.0 powinno również działać:

implementation 'com.google.firebase:firebase-core:17.2.0'
Jim
źródło
2
W informacjach o wydaniu Firebase ( firebase.google.com/support/release-notes/android ) mówi się o zastąpieniu rdzenia firebase przez firebase-analytics lub używanych przez nas bibliotek. Wypróbowałeś to rozwiązanie?
Adelino
2
Wydaje mi się, że oba są prawie identyczne, z wyjątkiem tytułu. Znaleźliśmy ten problem podczas aktualizacji z com.google.firebase: firebase-analytics: 17.1.0 do 17.2.2
Farasy
@Duże dzięki za odpowiedź, przywrócę zależność: |
Adelino
1
Dzięki @Jim. Proszę informuj nas na bieżąco. Wygląda na com.google.firebase:firebase-core:17.2.0to, że jest również zwolniony z błędu.
Sébastien
1
Wersja 17.2.1 również działa, nigdy nie zaobserwowaliśmy awarii tej wersji, tylko po aktualizacji do 17.2.2.
Manuel
6

Zidentyfikowaliśmy problem i pracujemy nad poprawką do następnej wersji zestawu SDK.

Eric Burley
źródło
Mamy do czynienia z tym samym problemem. Daj nam znać o postępach w rozwiązaniu tego problemu.
Qbit
3
czy jest to naprawione w wersji 17.2.3?
neobie
2
@Qbit jest ustawiony na 17.2.3. firebase.google.com/support/release-notes/…
Sinan Ceylan
Znalazłem ten problem ponownie na „com.google.firebase: firebase-analytics: 17.4.0”.
John
John - czy masz ślad stosu dla tego zdarzenia?
Eric Burley
0

Ostatnio napotkaliśmy podobny problem. Błąd adaptera Unity Ads do zapośredniczenia AdMob.

Oto nasz plik build.gradle:

implementation 'com.google.android.gms:play-services-ads:19.1.0'
implementation 'com.google.ads.mediation:unity:3.4.2.1'
implementation 'com.google.ads.mediation:vungle:6.5.3.0'
implementation 'com.google.ads.mediation:chartboost:7.5.0.0'
implementation 'com.google.ads.mediation:mytarget:5.6.3.0'
implementation 'com.yandex.android:mobmetricalib:3.13.1'
implementation 'com.yandex.android:mobileads:2.142'
implementation 'com.yandex.ads.adapter:admob-mobileads:0.3.0'

implementation 'com.google.android.gms:play-services-games:19.0.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'

implementation 'com.google.firebase:firebase-analytics:17.3.0'
implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

implementation 'com.google.android.play:core:1.7.2'
implementation 'androidx.multidex:multidex:2.0.1'

Błąd w konsoli Google Play:

java.util.ConcurrentModificationException: 
  at java.util.HashMap$HashIterator.nextNode (HashMap.java:1453)
  at java.util.HashMap$EntryIterator.next (HashMap.java:1487)
  at java.util.HashMap$EntryIterator.next (HashMap.java:1485)
  at com.google.ads.mediation.unity.UnitySingleton$UnitySingletonListener.onUnityAdsError (UnitySingleton.java:227)
  at com.unity3d.services.ads.configuration.AdsModuleConfiguration$3.run (AdsModuleConfiguration.java:92)
  at android.os.Handler.handleCallback (Handler.java:888)
  at android.os.Handler.dispatchMessage (Handler.java:100)
  at android.os.Looper.loop (Looper.java:213)
  at android.app.ActivityThread.main (ActivityThread.java:8178)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:513)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1101)

Czy ten problem jest ponownie związany z bazą ogniową?

AKTUALIZACJA

Wygląda na to, że tym razem problem tkwi w adapterze UnityAds: https://developers.google.com/admob/android/mediation/unity#version-3.4.2.2

denri11
źródło