Сбой Android 9 Pie (com.google.android.gms… ClassNotFoundException)

#android #unity3d #crash #admob #android-9.0-pie

#Android #unity3d #сбой #admob #android-9.0-pie

Вопрос:

У меня есть игра Unity3D, опубликованная на Android, и до сих пор она работала хорошо. Однако панель управления Android Vitals теперь сообщает о многих сбоях. Вот подробная информация:

 By Android version: Android 9   4500    100.0%
  

Отслеживание стека:

 java.lang.Error: FATAL EXCEPTION [Thread-360]
Unity version     : 2017.3.1p3
Device model      : Google Pixel
Device fingerprint: google/sailfish/sailfish:9/PQ2A.190305.002/5240760:user/release-keys
Caused by
  at lt.b (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:2)
  at ls.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:1)
  at lu.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:18)
  at com.google.android.gms.ads.internal.util.ar.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:10)
  at kx.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:7)
  at kx.run (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:2)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at ac.loadClass (com.google.android.gms.dynamite_dynamiteloader@16089081@16.0.89 (100400-239467275):4)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  

Мой AndroidResolverDependencies.xml файл:

 <dependencies>
  <packages>
    <package>com.android.support:customtabs:[26.0.0, 27.2.0[</package>
    <package>com.android.support:support-v4:[26.0.0, 27.2.0[</package>
    <package>com.google.android.gms:play-services-ads:17.2.0</package>
    <package>com.google.android.gms:play-services-analytics:11.8.0</package>
    <package>com.google.android.gms:play-services-base:[10.2.1, 12.1.0[</package>
    <package>com.google.android.gms:play-services-location:[10.2.1, 12.1.0[</package>
    <package>com.google.firebase:firebase-messaging:[10.2.1, 12.1.0[</package>
  </packages>
  <files>
    <file>Assets/Plugins/Android/android.arch.core.common-1.1.0.jar</file>
    <file>Assets/Plugins/Android/android.arch.core.runtime-1.1.0.aar</file>
    <file>Assets/Plugins/Android/android.arch.lifecycle.common-1.1.0.jar</file>
    <file>Assets/Plugins/Android/android.arch.lifecycle.livedata-core-1.1.0.aar</file>
    <file>Assets/Plugins/Android/android.arch.lifecycle.runtime-1.1.0.aar</file>
    <file>Assets/Plugins/Android/android.arch.lifecycle.viewmodel-1.1.0.aar</file>
    <file>Assets/Plugins/Android/com.android.support.customtabs-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-annotations-27.1.1.jar</file>
    <file>Assets/Plugins/Android/com.android.support.support-compat-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-core-ui-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-core-utils-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-fragment-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-media-compat-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.android.support.support-v4-27.1.1.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-ads-17.2.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-ads-base-17.2.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-16.0.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-ads-lite-17.2.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-analytics-16.0.8.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-analytics-impl-16.0.8.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-base-16.1.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-basement-16.2.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-gass-17.2.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-location-16.0.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-measurement-base-16.3.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-measurement-sdk-api-16.3.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-places-placereport-16.0.0.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-stats-16.0.1.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-tagmanager-v4-impl-16.0.8.aar</file>
    <file>Assets/Plugins/Android/com.google.android.gms.play-services-tasks-16.0.1.aar</file>
    <file>Assets/Plugins/Android/com.google.auto.value.auto-value-annotations-1.6.jar</file>
    <file>Assets/Plugins/Android/com.google.firebase.firebase-common-16.1.0.aar</file>
    <file>Assets/Plugins/Android/com.google.firebase.firebase-iid-17.1.2.aar</file>
    <file>Assets/Plugins/Android/com.google.firebase.firebase-iid-interop-16.0.1.aar</file>
    <file>Assets/Plugins/Android/com.google.firebase.firebase-measurement-connector-17.0.1.aar</file>
    <file>Assets/Plugins/Android/com.google.firebase.firebase-messaging-17.6.0.aar</file>
  </files>
</dependencies>
  
 Target API level: 28
Minimum API level: 16
  

Я видел аналогичную тему в группе обсуждения Google AdMob, предлагающую добавить в AndroidManifest.xml файл следующее:

 <uses-library android:name="org.apache.http.legacy" android:required="false" />
  

Однако:

  1. Я не уверен, что проблема вызвана каким-либо API, связанным с apache.
  2. Я боюсь, что это ограничит количество установок в моем приложении, поскольку оно будет доступно для меньшей аудитории в Google Play из-за uses-library объявления.

Комментарии:

1. тот же сбой здесь

2. У меня такая же проблема, вы нашли решение?

3. Вы пробовали <uses-library android:name="org.apache.http.legacy" android:required="false" /> ?

4. Привет @SaadAnees. Я боюсь, что это ограничит количество установок в моем приложении, поскольку оно будет доступно для меньшей аудитории в Google Play из-за объявления uses-library.

5. Привет @0xBFE1A8. Это полная информация о сбоях, которую я могу получить из отчета Google об ошибках и сбоях.

Ответ №1:

Согласно изменениям в поведении: приложения, ориентированные на уровень API 28

Устаревание HTTP-клиента Apache

С Android 6.0 мы удалили поддержку HTTP-клиента Apache. Начиная с Android 9, эта библиотека удаляется из bootclasspath и по умолчанию недоступна для приложений. Чтобы продолжить использование HTTP-клиента Apache, приложения, предназначенные для Android 9 и выше, могут добавить в свой AndroidManifest.xml :

 <uses-library android:name="org.apache.http.legacy" android:required="false"/>
  

Примечание: Атрибут android:required=»false» требуется для приложений
с минимальным SDK 23 или ниже, поскольку на устройствах с уровнями API
ниже 24 библиотека org.apache.http.legacy недоступна.
(На этих устройствах HTTP-классы Apache доступны в
bootclasspath .)

В качестве альтернативы использованию библиотеки Apache во время выполнения приложения могут использовать свою собственную версию org.apache.http-библиотека в их APK. Если вы сделаете это, вы должны переупаковать библиотеку (с помощью утилиты, такой как Jar Jar), чтобы избежать проблем с совместимостью классов с классами, предоставляемыми во время выполнения.

Комментарии:

1. Я только что отправил обновление приложения с uses-library включенным элементом. Я буду отслеживать отчеты о сбоях и публиковать результаты здесь.

2. Просто проверил панель управления ARN amp; Crashes, и упомянутой проблемы больше не было. (Y)

3. @EduardoCoelho глагот сработал. Кстати, вы можете мне помочь? у меня такая же проблема. Я добавил это одиночество в манифест Android, но оно не работает.

4. Привет @Saad. Все, что я сделал, это добавил эту строку в манифест моего приложения к <application> элементу. Сбой, упомянутый в сообщении, исчез из отчетов.