Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Analyze it. Получение и анализ технических данных Android-приложения - Дмитрий Васильев

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=47 FunCorp
November 29, 2021

Analyze it. Получение и анализ технических данных Android-приложения - Дмитрий Васильев

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=128

FunCorp

November 29, 2021
Tweet

Transcript

  1. ANALYZE IT. ПОЛУЧЕНИЕ И АНАЛИЗ ТЕХНИЧЕСКИХ ДАННЫХ ANDROID-ПРИЛОЖЕНИЯ ДМИТРИЙ ВАСИЛЬЕВ

    Team Lead Android
  2. • Существующие инструменты сбора данных • Наше решение для сбора

    данных • Технические данные для аналитики • Как их получать • Использование данных в Privacy зонах (GDPR, CCPA, LGPD) • Как мы их анализируем Что предстоит?
  3. Цель —максимальное понимание работы приложения у пользователей с технической точки

    зрения
  4. Почему это важно? Техническая аналитика дает возможность узнать о проблемных

    местах в приложении
  5. Почему это важно? Техническая аналитика дает возможность узнать о проблемных

    местах в приложении Устранение проблем улучшает UX
  6. Почему это важно? Техническая аналитика дает возможность узнать о проблемных

    местах в приложении Устранение проблем улучшает UX Улучшенный UX увеличивает retention
  7. Почему это важно? Техническая аналитика дает возможность узнать о проблемных

    местах в приложении Устранение проблем улучшает UX Улучшенный UX увеличивает retention С увеличением retention’а увеличивается профит
  8. Существующие инструменты 1

  9. Сбор и анализ данных. Существующие решения Android Vitals (из коробки)

  10. Сбор и анализ данных. Существующие решения Android Vitals (из коробки)

    Firebase (самое популярное)
  11. Сбор и анализ данных. Существующие решения Android Vitals (из коробки)

    Firebase (самое популярное) Flurry
  12. Сбор и анализ данных. Существующие решения Android Vitals (из коробки)

    Firebase (самое популярное) Flurry Mixpanel (клево, но платно)
  13. Сбор и анализ данных. Существующие решения Android Vitals (из коробки)

    Firebase (самое популярное) Flurry Mixpanel (клево, но платно) Amplitude (клево, но платно)
  14. Наша реализация 2

  15. Почему мы сделали свою реализацию? • Нужно было найти причину

    нативных крешей и ООМ
  16. Нативные креши • SIGTRAP 0x00000000d4cb31b6 • signal 11 (SIGSEGV), code

    1 (SEGV_MAPERR) • SIGABRT 0x00000000000062b8 • SIGSEGV 0x0000007f640d7800
  17. Нативные креши backtrace: #00 pc 000000000004ad20 /system/lib/libc.so (tgkill+12) #01 pc

    00000000000484b3 /system/lib/libc.so (pthread_kill+34) #02 pc 000000000001dd89 /system/lib/libc.so (raise+10) #03 pc 0000000000019511 /system/lib/libc.so (__libc_android_abort+34) #04 pc 0000000000017150 /system/lib/libc.so (abort+4) #05 pc 000000000000c6b3 /system/lib/libcutils.so (__android_log_assert+114) #06 pc 000000000003cf15 /system/lib/libhwui.so #07 pc 0000000000027183 /system/lib/libhwui.so #08 pc 0000000000025761 /system/lib/libhwui.so #09 pc 00000000000281d1 /system/lib/libhwui.so #10 pc 0000000000028a73 /system/lib/libhwui.so #11 pc 0000000000029aa1 /system/lib/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+80) #12 pc 000000000000e369 /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+144) #13 pc 000000000006a345 /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80) #14 pc 0000000000047f83 /system/lib/libc.so (_ZL15__pthread_startPv+22) #15 pc 000000000001a151 /system/lib/libc.so (__start_thread+6)
  18. Почему мы сделали свою реализацию? • Нужно было найти причину

    нативных крешей и ООМ • Нужно было свободно комбинировать данные из разных событий
  19. Почему мы сделали свою реализацию? • Нужно было найти причину

    нативных крешей и ООМ • Нужно было свободно комбинировать данные из разных событий • Хотели проверить корректность показателей уже интегрированных аналитических инструментов (Android Vitals, Firebase, Fabric)
  20. Почему мы сделали свою реализацию? • Нужно было найти причину

    нативных крешей и ООМ • Нужно было свободно комбинировать данные из разных событий • Хотели проверить корректность показателей уже интегрированных аналитических инструментов (Android Vitals, Firebase, Fabric) • У нас уже была реализована своя продуктовая аналитика
  21. Реализация на backend

  22. Наша реализация. Client

  23. Наша реализация. Client

  24. Наша реализация. Client

  25. Наша реализация. Client

  26. Наша реализация. Client

  27. Наша реализация. Client

  28. Наша реализация. Client

  29. Наша реализация. Client

  30. Наша реализация. Client

  31. Наша реализация. Client

  32. Наша реализация. Client

  33. Наша реализация. Client

  34. Наша реализация. Client

  35. Наша реализация. Client

  36. Наша реализация. Client

  37. Наша реализация. Client

  38. Наша реализация. Client

  39. Наша реализация. Client

  40. Наша реализация. Client

  41. Наша реализация. Client

  42. Наша реализация. Client

  43. Наша реализация. Client

  44. Наша реализация. Client

  45. Наша реализация. Client

  46. Наша реализация. Client

  47. Технические данные для аналитики 3

  48. Технические данные для аналитики VM креши

  49. Технические данные для аналитики VM креши Нативные креши

  50. Технические данные для аналитики VM креши Нативные креши Потоки

  51. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память
  52. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память Дисковая память
  53. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память Дисковая память Батарея
  54. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память Дисковая память Батарея Frame rate
  55. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память Дисковая память Батарея Frame rate Bundle
  56. Технические данные для аналитики VM креши Нативные креши Потоки Оперативная

    память Дисковая память Батарея Frame rate Bundle ANR
  57. Как получать данные 4

  58. Sample на Github

  59. Privacy zone 5

  60. • GDPR (General Data Protection Regulation) - Европа • CCPA

    (California Consumer Privacy Act) - США, штат Калифорния • LGPD (Brazilian General Data Protection Law ) - Бразилия Privacy zone
  61. Фреймворки от IAB

  62. Как мы анализируем полученные данные 6

  63. Средства анализа

  64. Redash

  65. Redash

  66. • Native crashes - уменьшили в 6-10 раз Результаты

  67. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза Результаты
  68. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза • OOM - уменьшились в 10-15 раз Результаты
  69. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза • OOM - уменьшились в 10-15 раз • Нашли места для оптимизации памяти Результаты
  70. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза • OOM - уменьшились в 10-15 раз • Нашли места для оптимизации памяти • Узнали, что почти не лагаем Результаты
  71. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза • OOM - уменьшились в 10-15 раз • Нашли места для оптимизации памяти • Узнали, что почти не лагаем • Узнали, что не сильно жрём батарею Результаты
  72. • Native crashes - уменьшили в 6-10 раз • Threads

    - уменьшили в 3 раза • OOM - уменьшились в 10-15 раз • Нашли места для оптимизации памяти • Узнали, что почти не лагаем • Узнали, что не сильно жрём батарею • Избавились от TransactionTooLargeException Результаты
  73. • Прикручивайте техническую аналитику и комбинируйте её с продуктовой Выводы

  74. • Прикручивайте техническую аналитику и комбинируйте её с продуктовой •

    Анализируйте Выводы
  75. • Прикручивайте техническую аналитику и комбинируйте её с продуктовой •

    Анализируйте • Исправляйте/оптимизируйте/рефакторите Выводы
  76. • Прикручивайте техническую аналитику и комбинируйте её с продуктовой •

    Анализируйте • Исправляйте/оптимизируйте/рефакторите • Тогда будет счастье Выводы
  77. Полезные материалы Статья про backend Sample project (Github) Статья про

    IAB
  78. smartdev.vdd@gmail.com @smartdev @fraking_vdg