Описание ошибок
Это архивная версия документации. Актуальная документация по всем платформам находится здесь.
Ниже описаны распространенные ошибки, которые могут возникнуть при работе с AppMetrica SDK на Android.
- Ошибка при добавлении библиотеки в проект
- Ошибка инициализации AppMetrica со сторонними библиотеками
- Некорректная длительность пользовательской сессии при ручном отслеживании
- Высокое энергопотребление библиотекой 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 со сторонними библиотеками
Код, который добавлен в метод Application.onCreate()
, выполняется для всех процессов. Если после интеграции сторонней библиотеки (например, 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.
android.database.sqlite.SQLiteException: table httpauth already exists (code 1)
Fatal Exception: java.lang.RuntimeException: Using WebView from more than one process at once with the same data directory is not supported.
ANR at com.google.android.gms.ads.*
Чтобы исправить ошибку, реализуйте проверку главного процесса перед инициализацией сторонних библиотек:
class MyApplication extends Application { @Override public void onCreate() { if (isMainProcess()) { // Initializing third-party libraries after verification. } } }
Скопировано
Некорректная длительность пользовательской сессии при ручном отслеживании
При неправильной реализации ручного отслеживания сессии возможно неточное определение ее длительности.
Если данные о длительности сессий выглядят некорректно, убедитесь, что при завершении пользовательской сессии всегда вызывается метод YandexMetrica.pauseSession(). Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с серверной частью AppMetrica.
Рекомендуется проверить длительности тайм-аута сессии. Он устанавливается с помощью метода withSessionTimeout()
. Тайм-аут указывает временной интервал, в течение которого сессия будет считаться активной даже после закрытия приложения.
Высокое энергопотребление библиотекой AppMetrica
При повышенном энергопотреблении библиотекой, убедитесь, что при завершении пользовательской сессии всегда вызывается метод YandexMetrica.pauseSession()
. Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с серверной частью AppMetrica.
Рекомендуется проверить длительности тайм-аута сессии. Он устанавливается с помощью метода withSessionTimeout()
. Тайм-аут указывает временной интервал, в течение которого сессия будет считаться активной даже после закрытия приложения.