Что было в Mobius Spring 2023

Долгожданный Mobius прошел отлично, много спикеров, интересные доклады и интерактивы. Давайте же обозревать доклады по андроиду.

По ту сторону EditText. Программная клавиатура в Android

Дмитрий Дегтярев рассказал про принципы разработки и интеграции программных клавиатур в андроид и настройку EditText под различные задачи.

Дмитрий Дегтярев показал, как сделать свою клавиатуру. Параллельно рассказал про сабтипы, InputMethodService, про обработку пользовательского опыта. Было интересным узнать, что клавиатура может предоставлять любую функциональность, например, голосовой ввод, свайпы, встроенный переводчик и т.д.

Далее нам Вадим Черненко рассказал про атрибуты EditText, которые иногда игнорируются разработчиками: imeOptions, inputType. Также можно запрограммировать приложение на поддержку физической клавиатуры, яндекс клавиатуры.

Про RuStore. Путь разработчиков и с чем они столкнулись

Александр Руснак из RuStore вспомнил прошлый 2022 год, про год создания RuStore. В мае разработчики зарелизили магазин со 100 приложениями. Магазин был сырым, в качестве админки сделали простой файл Excel и не было вкладки help. Основную часть приложения разработчики писали с нуля, но также они использовали VK ID для авторизации пользователей и в сотрудничестве с Kaspersky добавили возможность проверять приложения на вирусы.

Далее Александр Руснак перешел на май 2023 года и рассказал, что успели за год после релиза приложения: более 6000 приложений в RuStore, более 4000 разработчиков и больше 10 миллионов пользователей магазина в месяц. Магазин очень сильно улучшился: теперь для админки сделали полноценное приложение, консоль разработчика стала приятной для глаз, добавили help. Помимо этого приложение обросло огромным набором интеграций, таких как авторизация через Сбер ID, Яндекс ID, Тинькофф ID, пуши, карты, платежи, сервисы аналитики, работы с метаданными, A/B-тестирования:

Также отметили среднее время проверки приложений — 75 минут. Другие изменения: монетизация, подписки, In-Apps, пуши, карты и геосервисы, отзывы на приложение и поддержка Unity для разработчиков игр.

За год разработчики многое успели сделать, но с какими проблемами столкнулись в ходе разработки? В первую очередь создатели RuStore столкнулись с взаимодействием между командами, отвечающими за определенную фичу в ходе роста штата сотрудников. Решили эту проблему реорганизацией команды разработки. Теперь структура команды выглядит так:

Есть product manager с командой product owner-ов. Каждый product owner отвечает за конкретный набор фичей, а менеджер за определенное направление. Также есть несколько end-to-end команд которые отвечают за создание определенной фичи с backend, frontend, android разработчиками и QA.
Второй проблемой было доверие Google Play. Со их стороны RuStore казался опасным приложением и поэтому разработчики второго занялись улучшением UX, созданием официальных рассылок. Также новые устройства в России были уже с предустановленным магазином RuStore, что помогло распространить данный продукт на широкий круг пользователей.
Третьей проблемой, которая решается по сей день, стали разные магазины и подписи. Одно и то же приложение с разными подписями определяется как разные приложения. Решение этой проблемы также позволит установку приложений пользователям Huawei устройств.

Про будущее развитие спикер рассказал очень интересные новости. Появится возможность загружать app bundle и добавят поддержку Unreal Engine. Про остальные новшества можете посмотреть ниже:

В завершение своего выступления спикер отвечает на вопросы. Одним из интересных вопросов было сравнение RuStore с другими магазинами приложений в России. RuStore оказался на первом месте среди своих конкурентов. Еще базовая комиссия на встроенные покупки 15% и можно уменьшить ее до 2.5% при соблюдении определенных условий.

Измерение Sequence

Максим Сидоров из SberServices начал выступление с объяснения, что такое sequence в котлине. Они работают через итераторы и аналоги потоков Stream.
Перед тем как показать результаты бенчмарков, автор дал советы по измерению бенчмарков:

  • Использовать скрипт lockClock.sh для фиксированной тактовой частоты;
  • Правильно брать минимумы, а не медианы, так как по ним разрбос меньше;
  • Не управлять порядком выполнения тестов через аннотации @Ignore, @OrderWith;
  • Измерять только на рутованных устройствах:

И вот результаты измерений map:

Из измерений видно, что, чем больше последовательных преобразований, тем ощутимее выигрыш по времени у **sequence** перед коллекциями.

Теперь перейдем к сортировке

Тут Максим Сидоров сравнил результат map на двух последовательных преобразованиях с сортировкой. По результатам sort проигрывает коллекциям, но на больших данных стремится к равенству.

Измерения filter:

Filter эффективнее у sequence, если функция отсекает больше значений, а при возвращении 90% записей и более дает такой же результат, как и коллекции.

Измерения distinct:

Sequence быстрее при маленьких данных и если оставляет мало результатов.

Измерения take:

Функция быстрее в любом случае, особенно, когда возвращает меньше записей.
Измерения drop:

Результат также как и при take, но drop значительно медленнее работает, чем take. И эти функции устроены одинаково, но почему же такая разница в результатах? Дело в том, что take берет первые n значений и с остальными ничего не делает, в то время как drop выполняет предыдущие функции перед тем как пропустить.

Измерения flatten:

Результат плачевный, sequence у flatten работает значительно хуже, чем у коллекции.

Измерения plus:

Результаты такой же.

Измерения minus:

Разница незначительная и она уменьшается при больших данных.

Далее другие преобразования:

Выводы:

— Выигрыш при использовании sequence можно получить, если не вызывать эти функции: flatten, plus, sort, distinct;
— Чем больше преобразований, тем больше выигрыш.

Вот и закончился Mobius. Мы рассказали самое интересное, думаю вы почерпнули что-то для себя. Ждем следующего осеннего мобиуса!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *