Релизы Kotlin 1.9.0, Jetpack Media3 1.1.0, ADB Enhanced, тёмная тема в RuStore — и другие важные новости рынка мобильной разработки в июле 2023 года.
Разработка под Android *
Пишем под самую популярную мобильную ОС
Kiosk (Lock task mode) для Android: польза, кейсы применения и кастомизация
Мои коллеги из Kaspersky уже рассказывали о наборе решений и технологий для управления поведением устройств, известном как Mobile device management (про ее применение в iOS можно прочитать здесь, а про использование в Android — здесь). Я же подробно рассмотрю один из режимов этого механизма — Lock task mode, также известный как Kiosk-режим.
Статья будет полезна Android-разработчикам, которые хотят дать своим пользователям возможность работы их устройств в режиме одного или нескольких приложений и пополнить копилку знаний информацией о возможностях MDM.
Как мы запустили официальный российский магазин приложений RuStore
25 мая 2022 года вышла бета-версия магазина приложений RuStore. Сегодня им пользуется более 10 миллионов человек для загрузки приложений на мобильные устройства. Команда стора рассказывает о том, как начался проект, его развитии и планах.
По ту сторону фидбека: как проходят Android-собеседования и чего мы ждём от кандидатов
Подбор кандидатов в компанию — вопрос важный и тонкий. Вы ищете команду мечты. Мы хотим найти человека, с которым сможем плечом к плечу разрабатывать сложные фичи, бороться с багами и непринуждённо общаться за чашкой кофе. Эти стремления, как «струи Арагвы и Куры», ведут в одно место встречи — техническое интервью.
Другие этапы тоже важны: изучение резюме, скрининг, общение с рекрутером, знакомство с командой. Но, без обид, коллеги, кульминация этой пьесы — собеседование с техническими специалистами.
Меня зовут Александр Гирев, я Android-разработчик в Альфа-Банке, участвую в технических собеседованиях и знаю, что происходит по ту сторону «Зума» во время интервью :)
Истории
Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android
Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
BDUI аналитика, или Почему нельзя просто взять и отправить значения динамических полей в трекер
Как изменить текст на кнопке без релиза мобильного приложения? Как показать пользователю новые экраны, если приложение удалили из официальных магазинов? с помощью Backend Driven UI — подхода, когда экраны на фронте настраиваются с помощью сервера.
Но в этом случае экраны не содержат бизнес-логики, теперь это просто список абстрактных полей. Как формировать события продуктовой аналитики? Ведь смысл пришедших полей не известен. А если (точнее «когда») на сервере поменяется ID или добавится новое поле, то…нам придется на стороне мобильного приложения менять код и выпускать релиз?...
Может сделать дешёво и сердито и отправить просто все значения динамических полей, как они есть, в трекер? И это было бы действительно хорошим и быстрым решением для прототипа. Если бы мы не были банковским приложением. Ведь у нас хранятся самые ценные пользовательские данные — паспортные, адреса, номера карт и количество денег на счету. Неееет, отправлять поля без всякой фильтрации в трекеры совершенно нельзя.
Значит нужно на каждое поле повесить какой-то признак можно его отправлять или нет? А если можно, то нужно ли его маскировать, например, если это номер карты или счета? И мы решили выбрать путь героя и сделать всё правильно.
Что порой кроется за «успехом»
Хочу рассказать вам свой путь в поиске новой работы в 2023 году и поддержать тех, кто сейчас проходит через это. За 6 месяцев я собеседовался в 25 компаний, прошел 54 этапа (а какие-то не прошел), получил 2 оффера и в итоге один из них принял. Если вы сейчас в поиске работы, эта статья будет для вас глотком свежего воздуха. Если же вы матерый специалист, устраивающий процессы онбординга в своей компании, вам это может быть интересно с другой стороны.
Развлечение на выходные: собираем Android для Raspberry Pi из исходного кода
Привет, Хабр! В этой статье я хочу поделиться пошаговой инструкцией по компиляции Android Open Source Project для Raspberry Pi. Эта статья поможет разобраться в первых шагах разработки ОС на базе Android Open Source Project.
Дайджест мобильной разработки за июнь
Релизы NativeScript для Storybook v7, Fluent 2, новые API в RuStore — и другие самые важные новости рынка мобильной разработки в июне 2023 года.
Как мы запускали демоприложения
Те, кто работал над крупным Android-проектом с множеством модулей, не понаслышке знают, что такие проекты могут долго собираться. Неважно, что мы делаем — исправляем баг или разрабатываем фичу, нам нужно собрать проект, чтобы увидеть, как изменения повлияли на приложение. Мы тратим время на ожидание сборки проекта, и это влияет на продуктивность.
В статье я расскажу, как мы ускорили синхронизацию и сборку проекта, решили проблему лагающей Android Studio с помощью демоприложений, уменьшили простой и улучшили продуктивность разработчиков.
Меня зовут Олег Шелякин, я ведущий Android-разработчик в мобильном банке Тинькофф. Статья будет интересна тем, кто работает над многомодульным проектом, где количество модулей перевалило за сотню, время синхронизации измеряется в минутах, а время сборки — в десятках минут.
От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)
В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом.
Разберемся, какие реализации примитивов синхронизации потоков актуальны в контексте корутин, а какие надо использовать с осторожностью.
Оценим готовность текущих решений к использованию в Kotlin Multiplatform.
Разработаем аналоги нескольких полезных классов пакета java.util.concurrent, до которых еще не добрались разработчики корутин.
В рамках статьи будут разобраны следующие примитивы синхронизации: критические секции, атомарные переменные, реактивные переменные и барьерная синхронизация.
Моя история: разработчик в 16
Всем привет! Пишу свой первый пост на Хабре, так как поймал вдохновение рассказать о небольшой истории своего пути становления разработчиком. Моя цель - помочь таким же, как и я молодым ребятам сделать свой путь чуть проще и дать советы, исходя из моего собственного опыта.
Мне на данный момент 16 лет, я еще учусь в школе и умею разрабатывать приложения под Android. Тяжело оценивать свой уровень, когда ты еще не можешь устроиться на работу, но посмотрев требования и выполнив разные тестовые задания, я понял, что на джуна я могу точно. (я знаю, что также важен опыт работы в команде итд)
Разделю свою историю на 3 части.
Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах
Обработка ошибок является важной частью изучения корутин, т.к. при недостаточном понимании можно легко упустить важные моменты и добавить ошибок в код. В рамках этого материала планируется предоставить объяснения и правила которые помогут проще разобраться как работает механизм обработки ошибок в корутинах.
Ближайшие события
Скажи что-нибудь на разрабском, Figma
Привет! С вами Виктор 👺, тэнгу‑хранитель одной из дизайн‑систем Ozon.
В июне 2023 года Figma выкатила мощное обновление, во многом ориентированное на разработчиков. Точнее на поиск общего языка между проектировщиком и программистом. Я давно занимаюсь дизайн‑системами и знаю как тесно связан дизайн и код. Насколько взаимопонимание между дизайнером и разработчиком ускоряет доставку продукта до пользователя.
Однако, кое‑где у нас порой, отношения дизайнера и разраба токсичны и контрпродуктивны. Связано это, как всегда, с непониманием. Разный взгляд, незнакомый язык, непохожие ценности. Кроме вариантов решения продуктовой задачи, дизайнер видит ритм отступов, гармонию сочетания цветов, всякие золотые сечения и правила внутреннего и внешнего. Ну, должен видеть. А разработчик смотрит на сложность реализации, на переиспользуемость компонентов, отображение на разных размерах экрана, поведение при переполнении или отсутствии данных.
Помогут ли новые фишки Figma наладить общение?
Какие баги мы заложили в мобильный банк на PHDays 12: разбор конкурса $NATCH
В мае в центральном парке Москвы — в Парке Горького — отшумели яркие Positive Hack Days. Впервые за 12 лет форум по практической кибербезопасности, ранее объединявший только экспертов по ИБ и этичных хакеров со всего мира, превратился в открытый киберфестиваль. Мы построили современный кибергород с интересными заданиями и квестами, проходя которые, посетители знакомились с тем, как устроен цифровой мир, проверяли свою киберграмотность и учились доверять новым технологиям, усваивая принципы кибербезопасности.
Помимо серьезных докладов по информационной безопасности и грандиозной кибербитвы Standoff, ежегодный Positive Hack Days полюбился техническим энтузиастам за конкурсы, в ходе которых они испытывают на прочность различные IT-системы и устройства, оттачивают навыки по их защите и получают памятные призы. На прошлогоднем PHDays исследователи безопасности с азартом искали слабые места в нашем онлайн-банке, банкоматах и POS-терминалах, пытались обойти IDS и сломать ИИ. В этот раз мы отдали участникам на растерзание обновленные традиционные мишени, а также приготовили новинку — уязвимое банковское мобильное приложение. Итоги этого конкурса (как и отчеты участников 😔) не оставили нас равнодушными, поэтому мы подготовили его райтап.
Надеемся, наш пост поможет специалистам по ИБ лучше понять, какие уязвимости характерны для этой ОС, как их могут эксплуатировать злоумышленники, а главное — как с ними бороться. Всех, кто хочет лучше ориентироваться в мире мобильных угроз, приглашаем под кат.
Как катить фичи без релизов. Часть 2: про низкоуровневый Server Driven UI
Server Driven UI в Альфа Банке — это низкоуровневый и гибкий подход для реализации динамической отрисовки UI, управляемый с сервера. Если дословно перевести, то SDUI переводится как пользовательский интерфейс (UI), управляемый сервером. На деле так и получается — API сообщает фронту, что и с каким содержимым отображать.
Например, если дизайнер указал, что цвет фона в UI-компоненте кастомизируется, то SDUI модель для этого компонента должна по умолчанию уметь настраивать цвет с бэкэнда. Аналогично со всеми другими свойствами компонентов: шрифт, размер, форма.
В статье расскажу, как мы максимально приблизили SDUI к дизайн-системе Альфа Мобайла, чтобы с его помощью отрисовать любой UI, который нам позволяет сделать дизайн-система. А также о том, как развивался SDUI, что в нём содержится, как работает и когда SDUI использовать всё же не стоит.
Осознанная оптимизация Compose
Compose — относительно молодая технология написания декларативного UI. Множество разработчиков даже не предполагают, что пишут неоптимальный код в такой критически важной части, и впоследствии это приводит к неожиданной низкой производительности и проседании метрик.
Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.
Какого цвета Ripple?
Такой вопрос возник у меня однажды. А потом еще раз. И я решил разобраться.
Спойлер: конкретного ответа у меня нет. Зато есть исследование.
Библиотека MockWebServer-DSL в open-source: делаем конфетку из сетевых запросов в UI-тестах
Писать стабильные UI-тесты для Android-приложений — непростая задача. Здесь против ваших тестов работают обилие девайсов, нестабильность эмуляторов, многообразие поддерживаемых версий ОС, а ещё — ваши бэкенд-разработчики. Почти все мобильные приложения требуют для своей работы бэкенд и не могут показать даже приветственный экран без подгрузки данных. Поэтому для UI-тестов очень важно уметь приводить бэкенд в нужное для каждого тестового сценария состояние.
Сегодня мы выпускаем в open-source собственную библиотеку MockWebServer DSL. Она помогает удобно писать обработчики запросов на бэкенд в Android-тестах.
Подписываем Android-приложение внутренним ключом Google Play для публикации в сторонних магазинах (RuStore, Huawei..?)
В процессе публикации своего приложения в RuStore, я столкнулся с проблемой обновления сборки, первоначально-установленной из Google Play. Дело в том, что несколько лет назад, когда я размещал приложение в Google Play, я доверил управление ключами подписи Google App Signing. Это значит, что мой локальный ключ используется в качестве "загрузочного", а пользователи на устройства получают уже сборки, подписанные внутренним ключом Google. Прямого доступа к этому ключу нет, и, соответственно, я не могу подписать им сборку для RuStore для бесшовного обновления приложения.
Вклад авторов
InlyIT 2922.0alizar 1936.0RoboForm 1900.0phillennium 1618.0bodyawm 1356.1aleksandrit 1145.6Developers_Relations 938.8vedensky 832.0myshyak 679.6Leono 661.0