Журналы сбоев Google Play не отображаются в Android App Bundle

Недавно мы обновили наши приложения, чтобы использовать наборы приложений Android (aab), а также включить собственные библиотеки arm64.

После этого наши журналы сбоев в собственном коде в «Консоли Google Play» -> «Android Vitals» -> «ANR и сбои» неправильно символизируют (стеки вызовов Java символизируют нормально).

Фрагмент типичного стека вызовов выглядит так:

  #21  pc 000000000015addc  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
  #22  pc 0000000000293768  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
  #23  pc 0000000000294cf0  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk

Проблема затрагивает сбои как в armv7, так и в arm64. Иногда ошибка будет иметь правильно символизированный стек вызовов, примерно 10% теперь правильно символизированы. До использования AAB и arm64 почти все стеки вызовов отображались правильно.

Чтобы обойти это, мы исследовали использование Crashlytics, но также столкнулись с проблемами при получении стека вызовов с правильными символами. Поскольку мы не использовали Crashlytics раньше, нам трудно понять, страдает ли он от той же проблемы или мы просто неправильно настроили Crashlytics. Однако этот сообщение указывает на то, что у других пользователей могут возникнуть проблемы с помощью AAB и Crashlytics.

Кто-нибудь еще испытывает подобные трудности?

Существуют ли какие-либо известные обходные пути?

Кто-нибудь обновился, чтобы использовать AAB, и не видит проблем с символикой отчетов о сбоях в консоли Google Play?


person Columbo    schedule 03.05.2019    source источник
comment
Я считаю, что вы можете взять стек, как указано выше, и передать адреса утилите addr2line в наборе инструментов NDK. Вам нужно будет предоставить неразрезанный файл so, который соответствует версии, встроенной в PlayStore aab.   -  person Alex Cohn    schedule 03.05.2019
comment
Отвечает ли это на ваш вопрос? Crashlytics Отсутствуют символы NDK с пакетом приложений для Android   -  person TomTasche    schedule 03.05.2020


Ответы (1)


Редактировать: NDK 21 RC1 должен решить эту проблему.

Похоже, это связано с тем, что нативные библиотеки хранятся в APK в несжатом виде.

Добавив следующую опцию в свой gradle.properties, вы можете отключить ее:

android.bundle.enableUncompressedNativeLibs=false

Вам нужно будет выпустить новый пакет приложений, созданный с этой опцией.

person Pierre    schedule 03.05.2019
comment
Звучит многообещающе, спасибо. Может пройти неделя или около того, прежде чем я смогу развернуть обновление, чтобы узнать, помогает ли оно, но я сообщу, когда сделаю это. - person Columbo; 03.05.2019
comment
Имейте в виду, что отключение этой функции сделает ваше приложение больше на устройствах пользователей, поскольку платформа должна будет извлечь собственные библиотеки, чтобы иметь возможность их загружать. - person Pierre; 04.05.2019
comment
Да, вроде поправил. Благодарю вас! (небольшая награда в пути) - person Columbo; 08.05.2019
comment
У меня была точно такая же проблема, и это исправило ее для меня, спасибо! @Pierre, вы не знаете, можно ли решить эту проблему без этого флага? - person Loolooii; 05.06.2019
comment
Команда Google работает над решением этой проблемы. Обратите внимание, что в последней версии Gradle этот флаг не будет помечен как неподдерживаемый. - person Pierre; 05.06.2019
comment
Это все еще проблема? Поскольку я получаю несколько идентичных сбоев в Play Console, но если я добавлю '''enableUncompressedNativeLibs=false''', появится предупреждение о том, что этот параметр является экспериментальным и не поддерживается. Я думаю, что в любом случае не проблема установить эту конфигурацию. - person xarlymg89; 12.08.2019
comment
Предупреждение было удалено в более поздней версии плагина Android Gradle. - person Pierre; 13.08.2019
comment
Последняя версия NDK должна решить эту проблему. - person Pierre; 03.12.2019
comment
@pierre Вы имеете в виду, что последний NDK означает, что нам больше не нужно использовать enableUncompressedNativeLibs=false, или что последний NDK означает, что мы больше не будем получать предупреждение о том, что опция является экспериментальной и не поддерживается? - person Columbo; 03.12.2019
comment
С последним NDK вы получите полные символические трассировки стека, как и раньше, без этого свойства gradle. Предупреждение: его не должно быть в последней версии Gradle. - person Pierre; 03.12.2019
comment
@Pierre Какая версия NDK исправит это? - person shubhamgarg1; 18.12.2019
comment
NDK 21 RC1: developer.android.com/ndk/downloads#beta-downloads - person Pierre; 19.12.2019