Описание ошибок

Ниже описаны распространенные ошибки, которые могут возникнуть при работе с AppMetrica SDK на Android.

  1. Ошибка при добавлении библиотеки в проект
  2. Ошибка инициализации AppMetrica со сторонними библиотеками
  3. Некорректная длительность пользовательской сессии при ручном отслеживании
  4. Высокое энергопотребление библиотекой AppMetrica

Ошибка при добавлении библиотеки в проект

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)

Данная ошибка сообщает, что превышен лимит методов на этапе обработки DexIndexOverflowException. Рекомендуем пересмотреть используемые библиотеки — возможно, они очень тяжеловесны. Если их нельзя заменить легковесными аналогами, то можно использовать несколько DEX-файлов. Это может увеличить время загрузки приложения.

Ошибка инициализации AppMetrica со сторонними библиотеками

Если после интеграции сторонней библиотеки (например, Firebase Cloud Messaging) возникает ошибка инициализации, необходимо убедиться, что инициализация стороннего компонента проходит в главном процессе.

Текст ошибки может быть следующий:

Unable to create application your.package.name.YourApp: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process your.package.name:Metrica. Make sure to call FirebaseApp.initializeApp(Context) first.

Добавьте проверку главного процесса перед инициализацией сторонних библиотек. Например, следующим образом:

class MyApplication extends Application {

  @Override
  public void onCreate() {
    if (isMainProcess()) {
        // Инициализация сторонних библиотек после проверки.
    }
  }

}
Примечание. Самостоятельно реализуйте проверку главного процесса.

Некорректная длительность пользовательской сессии при ручном отслеживании

При неправильной реализации ручного отслеживания сессии возможно неточное определение ее длительности.

Если данные о длительности сессий выглядят некорректно, убедитесь, что при завершении пользовательской сессии всегда вызывается метод YandexMetrica.pauseSession(). Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с серверной частью AppMetrica.

Рекомендуется проверить длительности тайм-аута сессии. Он устанавливается с помощью метода withSessionTimeout(). Тайм-аут указывает временной интервал, в течение которого сессия будет считаться активной даже после закрытия приложения.

Высокое энергопотребление библиотекой AppMetrica

При повышенном энергопотреблении библиотекой, убедитесь, что при завершении пользовательской сессии всегда вызывается метод YandexMetrica.pauseSession(). Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с серверной частью AppMetrica.

Рекомендуется проверить длительности тайм-аута сессии. Он устанавливается с помощью метода withSessionTimeout(). Тайм-аут указывает временной интервал, в течение которого сессия будет считаться активной даже после закрытия приложения.