Как я Baseline Profiles прикручивал
Осторожно, #тяжёлыйконтент
Уже 8 лет, начиная с 7-ого андроида, приложения автоматически ускоряются с каждым использованием - система анализирует, с какими фичами обычно работает пользователь, и оптимизирует их.
В какой-то момент ребята из гугла осознали, что все пользуются примерно тем же, и предложила генерировать универсальные профили взаимодействий - Baseline Profiles - которые будут поставляться с установщиком, чтобы оптимизации происходили во время установки, всё было максимально красиво и плавно сразу после скачивания или обновления приложения.
Мысль простая и гениальная. Как думаете, когда же стало возможным генерировать эти самые профили? Внезапно, во времена 13-ого андроида, спустя 6 лет. Ну, то есть можно было и до этого, но с кучей подводных камней - хорошо это работало только на чистом андроиде и с рутом. С тестированием профилей та же история, оно полноценно заработало лишь на 12-ом.
О проблемах я узнал не из документации, а на деле: подключил рутованный смартфон на 10 андроиде, запустил генерацию профиля, и... телефон либо полностью переставал реагировать на нажатия и кнопки, либо просто перезагружался 👍. Мой основной телефон работает на 12-ом ведре, тоже не подходит. Обновлять вполне живой телефон не хочется - он мне нравится так же, как и в первый день.
В общем, пришлось ставить на комп эмулятор с последним чистым андроидом, где всё точно будет без сучка без задоринки. Или нет?
Эмулятор андроида это вам не винда 11 в vmware - тут нагрузки на комп такие, что он начинает работать аки прораб без зарплаты: сборка приложения замедляется примерно в 10 раз, а сам эмулятор настолько неотзывчивый, что генерация профилей ломается по таймауту пока приложение ещё не успело загрузиться 🥴. Это на самом мощном проце интела 10 поколения для ультрабуков и с 16 гб оперативки, если что. 5-ый андроид эмулируется отлично, а вот 14-ый ложит систему. В остальном процессор справляется со всеми задачами и комп менять ради эмулятора я не планирую. К тому же пользоваться эмулятором весьма неприятно - имитировать свайпы тачпадом ужасно неудобно, а сенсорный экран моего Surface'а не поддерживается.
Короче, идём просить у знакомого мобилу на 13+ ведре. Как и всегда при разработке под андроид, в рандомный момент всё ломается, пацаны со stackoverflow говорят, что надо прожать invalidate caches. Как и всегда, это не помогает, я на опыте переустанавливаю ведростудию, всё опять начинает работать, но время потеряно. На следующий день снова беру мобилу, чё то там делаю с UIAutomator практически вслепую, ибо документация неполная... И Baseline Profile готов! Кстати, вместе с ним готов ещё и Startup Profile - благодаря этому профилю ускоряются не отдельные фичи, а непосредственно запуск приложения.
Post #142
436
- 👍 1
- 🔥 1
- 💩 1