ConcurrentModificationException в Android .onCreate (com.google. android .measurement.internal) - PullRequest
0 голосов
/ 17 февраля 2020

Этот недавний cra sh начал происходить во всех Android версиях различных производителей устройств. Я полагаю, что это как-то связано с рекламой или одним из компонентов Google.

Я сам открыл здесь проблему: https://issuetracker.google.com/issues/149665852

Информация, связанная с устройствами ( от 2k пользователей есть 48 исключений от 43 пользователей, произошедших за 3 дня)

enter image description here

трассировка стека (имя пакета скрыто из-за конфиденциальности) :

Caused by java.util.ConcurrentModificationException
       at androidx.collection.SimpleArrayMap.put + 461(SimpleArrayMap.java:461)
       at com.google.android.gms.measurement.internal.zzin.zza + 108(zzin.java:108)
       at com.google.android.gms.measurement.internal.zzid.onActivityCreated + 11(zzid.java:11)
       at android.app.Application.dispatchActivityCreated + 189(Application.java:189)
       at android.app.Activity.onCreate + 962(Activity.java:962)
       at androidx.core.app.ComponentActivity.onCreate + 81(ComponentActivity.java:81)
       at androidx.activity.ComponentActivity.onCreate + 149(ComponentActivity.java:149)
       at androidx.fragment.app.FragmentActivity.onCreate + 313(FragmentActivity.java:313)
       at androidx.appcompat.app.AppCompatActivity.onCreate + 106(AppCompatActivity.java:106)
       at com.example.myapp.MainActivity.onCreate + 35(MainActivity.java:35)
       at android.app.Activity.performCreate + 6147(Activity.java:6147)
       at android.app.Instrumentation.callActivityOnCreate + 1112(Instrumentation.java:1112)
       at android.app.ActivityThread.performLaunchActivity + 2498(ActivityThread.java:2498)
       at android.app.ActivityThread.handleLaunchActivity + 2625(ActivityThread.java:2625)
       at android.app.ActivityThread.access$700 + 183(ActivityThread.java:183)
       at android.app.ActivityThread$H.handleMessage + 1484(ActivityThread.java:1484)
       at android.os.Handler.dispatchMessage + 111(Handler.java:111)
       at android.os.Looper.loop + 194(Looper.java:194)
       at android.app.ActivityThread.main + 5667(ActivityThread.java:5667)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke + 372(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 962(ZygoteInit.java:962)
       at com.android.internal.os.ZygoteInit.main + 757(ZygoteInit.java:757)

Знание об исключении: это происходит, если функция пытается изменить список, пока другая функция выполняет итерацию по нему. Поэтому я предполагаю, что это условие гонки между двумя нитями или более.

Подробнее:

Прежде всего, мы не используем SimpleArrayMap. Поэтому я уверен, что исключение никак не связано с нашим кодом.

Вызов com.example.myapp.MainActivity.onCreate + 35(MainActivity.java:35) этой строки указывает на следующее:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState); // stack trace points here

    // rest of the code
}

Трассировка стека указывает на onCreate но ответственный действительно здесь (который находится наверху трассировки стека):

at androidx.collection.SimpleArrayMap.put + 461(SimpleArrayMap.java:461)
at com.google.android.gms.measurement.internal.zzin.zza + 108(zzin.java:108)
at com.google.android.gms.measurement.internal.zzid.onActivityCreated + 11(zzid.java:11)

Теперь пара деталей: это приложение использует Firebase Analytics, AdMob с различными рекламными сетями, такими как AppLovin , Ironsource et c ... и в биллинге приложений. Я не уверен, что именно com.google.android.gms.measurement точно, но источник исключения, похоже, оттуда.

Из того, что я понимаю, этот компонент присоединяет объект, который перехватывает жизненные циклы активности через с использованием Application.registerActivityLifecycleCallbacks. Сейчас большинство библиотек делают это, но ни одна из них, которую мы используем, не вызывает подобное исключение. Итак, я не уверен, как перехватить и двигаться дальше, потому что я боюсь, что завернуть это в пробный улов не похоже на хорошее «решение». Я даже не уверен, разрешит ли это ситуацию, потому что думаю, что после этого произойдет еще одно исключение, такое как You must call Activity.onCreate().

Я в тупике и не знаю, что делать, кроме вопроса здесь , Самым близким, что я нашел, было это , но на этот вопрос также нет ответов.

Если это поможет, вот зависимости, которые мы используем. (наш файл build.gradle)

implementation fileTree(dir: 'libs', include: '*.aar')
implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.google.firebase:firebase-config:19.1.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.browser:browser:1.2.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'com.google.android.material:material:1.2.0-alpha03'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3'
implementation 'androidx.preference:preference:1.1.0'
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.google.android.gms:play-services-base:17.1.0'
implementation 'com.airbnb.android:lottie:3.0.7'
implementation 'com.google.android.play:core:1.6.4'
implementation 'com.github.anrwatchdog:anrwatchdog:1.4.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.google.android.gms:play-services-ads:18.3.0'
implementation 'com.google.android.ads:mediation-test-suite:1.2.2'
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
implementation 'com.google.ads.mediation:applovin:9.8.0.0'
implementation 'com.google.ads.mediation:facebook:5.6.0.0'
implementation 'com.mopub.volley:mopub-volley:2.1.0'
implementation('com.mopub:mopub-sdk:5.7.0@aar') {
    transitive = true
    exclude module: 'libAvid-mopub' // To exclude AVID
    exclude module: 'moat-mobile-app-kit' // To exclude Moat
}
implementation 'com.google.ads.mediation:mopub:5.7.0.0'
implementation 'com.google.ads.mediation:inmobi:7.3.0.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.google.android.gms:play-services-plus:17.0.0'
implementation 'com.google.ads.mediation:tapjoy:12.3.1.0'
implementation 'com.unity3d.ads:unity-ads:3.1.0'
implementation 'com.google.ads.mediation:unity:3.1.0.0'

Любая помощь приветствуется, большое спасибо.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2020

Последняя библиотека Firebase Analytics 17.2.2, вызывающая проблему для меня. Если вы используете Firebase Analytics, вам нужно вернуться к более старой версии Firebase Analytics, например, 17.2.1, чтобы исправить проблему.

Обновление: похоже, Firebase устранил проблему в их версии 17.2.3 .

1 голос
/ 11 марта 2020

Это потому что libb-firebase-core.

обновить

'com.google.firebase:firebase-core:17.2.1'

до

'com.google.firebase:firebase-core:17.2.3'

список изменений: https://firebase.google.com/support/release-notes/android#analytics_v17 -2- 3

...