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

Android Go - следующий миллиард устройств и 5...

Android Go - следующий миллиард устройств и 50 мегабайт

Поговорим о том, что такое Android Go, как и зачем адаптировать своё приложение под эту ОС, как вместить большой проект в рамки жёстких вендорских требований и CTS (в первую очередь с точки зрения потребляемой RAM) и в каких случаях лучше писать новое приложение.

Avatar for Artur Vasilov

Artur Vasilov

August 25, 2018
Tweet

More Decks by Artur Vasilov

Other Decks in Programming

Transcript

  1. Android Pie (Go Edition) › Уменьшено количество предустановленных приложений и

    их размер › Другие улучшения производительности, батарейки, данных и прочего 6 android.com/versions/go-edition/
  2. Основные ограничений устройств › 512 мегабайт или 1 гигабайт оперативной

    памяти › 8 или 16 гигабайт хранилища › Не очень быстрые и мощные developer.android.com/docs/quality-guidelines/building-for-billions-device-capacity 7
  3. Требования к приложениям › Хорошая производительность на слабом устройстве ›

    Занимаемое место после установки не более 40 мегабайт › Потребляемая память (PSS) не более 50 мегабайт 8
  4. Борьба с потреблением памяти 1. Что меряем 2. Как меряем

    3. Специфика Android Go 4. Что делаем и что не делаем 9
  5. Окружение ▌ Все тесты исключительно в одинаковых условиях!!! › Версия

    Android › Размер / разрешение экрана › Сценарий работы с приложением › «Загруженность» устройства 16
  6. Настраиваем устройство adb shell cat /proc/meminfo 17 Прибиваем по возможности

    как можно больше других приложений (точность PSS вам тоже скажет спасибо)
  7. Приятные новости › Рассмотренные ограничения – только условно обязательны (пока

    что) › 50 мегабайт – не фиксированное значение и зависит от типа приложения и устройства 20
  8. Выполнение теста потребления памяти › Запустить приложение, подождать 5 секунд

    › dumpsys meminfo … › Записать значение Total › Повторить несколько раз и посчитать среднее 21 medium.com/googleplaydev/how-to-optimize-your-app-for-android-go-edition-f0d2bedf9e03
  9. Что есть что? › Java heap – понятно › Native

    heap – как Java heap, только native (.so библиотеки, код фреймворка) › Code – все, что относится к хранению кода / ресурсов (.dex, .so, ресурсы) › Stack – стек Java/C++ потоков (количество потоков) › Graphics – отрисовка (сложность UI / картинки) › Private other, System – все остальное 28
  10. Что мы можем сделать › Весь набор известных советов ›

    Выкидывать код / уменьшать размер APK любым образом › Не выполнять какие-то действия заранее 32
  11. Подходы к разработке приложения для Android Go › Одно приложение

    › Одно приложение – разные .apk (разные конфигурации) › Два приложения 40
  12. Подходы к разработке приложения для Android Go › Одно приложение

    › Одно приложение – разные .apk (разные конфигурации) › Два приложения › В любом случае многомодульность – наше все 41
  13. Что еще стоит учесть в Android Go? › Важно думать

    не только о памяти, но и о других вопросах производительности на entry-level устройствах › Подумайте о специальных фичах для таких устройств › Все для пользователей! 43
  14. Дополнительные ссылки ▌ Отличный ответ на SO › stackoverflow.com/a/2299813/3637200 ▌

    API для low-ram конфигураций › source.android.com/devices/tech/perf/low-ram 44
  15. Действия по шагам › Прочитать требования (все ок, кроме памяти),

    разобраться со всем › Померять память (170 мегабайт) › Отключить все отключаемые модули (105 мегабайт) 46
  16. Рефакторинг (все под флагом компиляции) › densitySplit, resConfig › Уменьшить

    кэш картинок, убрать предзагрузку › Закрутить прогуард еще сильнее › Выносить код дальше в отдельные отключаемые модули из основного › Померить память (64 мегабайта) › Посидеть еще 14 часов и рефакторить › 60 мегабайт › !!!!!!!! 47
  17. Рефакторинг уже не тот › Признать бренность жизни › Сделать

    ветку, в которой выпиливать все без рефакторинга › 10 часов с нуля и 50 мегабайт! › Лучшее и самое дорогое решение – отдельное приложение 48
  18. [email protected] Android Go – будущий миллиард устройств и 50 мегабайт

    Артур Василов Android-разработчик ArturVasilov ArturVasilov VasilovArtur