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

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

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

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

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