Мобильная разработка за неделю #558 (30 сентября — 6 октября)


Пишем под самую популярную мобильную ОС


SDK (Software Development Kit) — комплекс инструментов для расширения функциональности мобильных приложений и доступа к новым опциям и возможностям ПО. При этом каждый SDK ограничен своим набором компонентов и закрывает определённые задачи бизнеса. В статье расскажем о базовых, второстепенных и перспективных SDK, опишем их функции и возможности, приведём примеры наборов разработчика для каждой из категорий.

Клешни постепенно сжимаются.
С момента замедления YouTube, по данным СМИ, его трафик для России снизился на 50%. Роскомнадзор активно блокирует VPN-сервисы.
Все больше блогеров переносят свои видео из YouTube на отечественные платформы, и вероятно, в ближайшие месяцы нас ожидает полная блокировка ресурса.
Лягушку медленно нагревают, давая ей время адаптироваться...
Что же делать?

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

Привет! Меня зовут Даниил, я Android-разработчик в команде VK ID SDK в VK. Наша команда создала легковесный SDK для авторизации через приложения экосистемы VK. Он состоит из кнопки One Tap для входа в один клик, кнопки входа в другую учётную запись и виджета для авторизации через Mail или Одноклассники.
Работая над продуктом, мы поняли, что необходимо оценивать его техническое качество: считать размер SDK, тестового покрытия, скорость сборки и многое другое. Нам был нужен сборщик метрик качества кода.
Я расскажу, как мы писали плагин для сбора метрик и с какими проблемами столкнулись. Вы узнаете, как устроен наш сборщик изнутри, и даже сможете потестить его в своём проекте.

Как создать всплывающие уведомления в мобильном приложения, привязанные ко времени? Читаю документацию и разбираю код.

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.
Эта статья будет полезна тем, кто использует Koin в своих приложениях, и тем, кто хочет сделать свой простой DI. Ведь только понимание того, как что-то устроено, поможет создавать новые решения, учитывая при этом опыт прошлых разработок, и модифицировать существующие решения без трагических последствий.
Дополнительная (но от того не менее важная) цель статьи — показать, что базовый механизм, на котором построен Koin, не такой уж и страшный :)

Привет! Сегодня я расскажу о своём опыте написания простого Android-приложения для отправки биткоинов с существующего кошелька, отображения его баланса и списка транзакций. Кажется, чего уж проще? Да, но есть нюансы. О них и поговорим.


Что такое киоск? Это ограничение набора приложений, которые доступны пользователю. Иными словами — замена лаунчера по умолчанию. Когда доступно только одно приложение, нельзя открыть браузер, другие приложения и даже залезть в настройки. Вообще ничего не доступно. Это как защита от нецелевого использования, так и от дурака…
Давайте сделаем киоск режим для нашего приложения на планшете. Через сервис KNOX Configure это делается быстро и без программирования. Ниже расскажу об этом на примере сервиса для бронирования переговорных.
Я являюсь давним и постоянным пользователем Telegram, никакие мессенджеры не заменят мне белый самолетик на фоне чистого голубого неба. Не то, чтобы я был большим поклонником Дурова, просто так исторически сложилось. И естественно, поскольку я постоянно пользуюсь Telegram на десктопе и на телефоне, мне со временем захотелось некоторых дополнительных фичей и возможностей, отсутствующих в официальных и распространенных неофициальных клиентах. Ждать милости от природы занятие бесперспективное, поэтому я решил реализовать доработки самостоятельно. Начал с десктоп версии, о чем уже писал на Хабр. Сейчас закончил первый этап доработок Android версии, и решил поделиться впечатлениями и результатом с сообществом.
Ссылка на итоговое приложение и исходный код находится в конце статьи.

Всем привет! На связи Дима Котиков, и мы завершаем цикл статей о том, как облегчить себе жизнь и уменьшить boilerplate в gradle-файлах. В предыдущих статьях мы подготовили и настроили базовый модуль для написания Gradle Convention Plugins, написали несколько convention-плагинов в файлах -.gradle.kts, сделали еще один модуль и создали convention-плагины на базе kotlin-классов. В заключительной части мы немного порефакторим написанный код, попытаемся настроить области видимости convention-плагинов и extension-функций для конфигурации сборки, а также подведем итоги.

Про байт‑код написано уже немало. Он везде, и никого этим не удивить: его генерирует компилятор, переупаковывает система сборки, «портит» обфускатор и изредка читают программисты. Естественно, для работы с байт‑кодом есть немало инструментов, которые используются в разных областях и на разных платформах. Среди них и ByteWeaver — инструмент для патчинга байт‑кода во время сборки, который может быть полезен разработчикам под Android.
Меня зовут Александр Асанов. Я Android‑разработчик в OK, Tracer, ByteWeaver. В этой статье я разберу, что такое байт‑код, как и зачем с ним работать, расскажу о ByteWeaver и покажу примеры работы с байт‑кодом.

Хотели бы вы иметь готовое приложение, которое можно адаптировать под свой бренд за пару кликов? Мы его уже сделали!
С идеей создания такого продукта к нам пришла компания Travelpayouts, объединяющая инфлюенсеров и тревел-бренды. Заказчику требовался цифровой продукт, который поможет им расширять свою партнёрскую платформу в направлении мобильных приложений, а самим партнёрам — дополнительно монетизировать входящий трафик, зарабатывая на комиссии за каждое бронирование.
Так появилось приложение White Label App — шаблон нативного приложения для поиска и бронирования авиабилетов и отелей по всему миру с обширными возможностями конфигурации. Он исполнен в двух вариантах: основной – White Label App — приложение с готовыми функциональными модулями, и White Label SDK — набор готовых экранов, которые можно встроить в собственное приложение. Любой из форматов можно кастомизировать под разные стилистики брендов. А ещё это решение будет гораздо дешевле и быстрее разработки собственного приложения для тревел-бизнеса.
Подробнее про форматы:

Что общего у мобильной разработки с лентой Мёбиуса? С первого взгляда видишь две стороны: вот же они, Android и iOS. А потом присматриваешься — и замечаешь, что одно может плавно переходить в другое.
Вот смотрите. Мы скоро проведём конференцию Mobius. Казалось бы, хабрапост с описаниями докладов логично поделить на две части, чтобы любому разработчику было удобно читать именно о «своей» платформе.
Но будет, например, доклад про корутины в Kotlin. Этот язык привычен в мире Android, однако с Kotlin Multiplatform выходит за рамки платформы. И кому тогда стоит знать про такой доклад: Android-разработчикам или всем?
Ещё есть доклады про Flutter. Они интересны только флаттеристам, или нативные разработчики с обеих сторон тоже следят «что там происходит»? И есть другие «кроссплатформенные» темы, не привязанные строго к платформе. Их в посте где лучше поставить, в начале или конце?
В общем, вместо строгого деления на две половины получился текст из пяти блоков, постепенно переходящий от одной платформы к другой. Сами смотрите, какие части этой ленты актуальны для вас.

Йоу, юзер! Даннаястатья относится к циклу статей «База джуна на Flutter». Если ты не видел начальную ноду — ознакомиться можешь тут, а если уже видел — погнали дальше!

В многомодульных приложениях Android существует проблема организации зависимости gradle. Каждая зависимость указывается отдельно.

Всем привет! На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.

Введение
Если вы уже определенное время занимаетесь разработкой Android, вы, вероятно, слышали о UseCases. Их часто представляют как Святой Грааль Clean architecture. UseCases призваны отделить бизнес‑логику от Presentation и Data слоев, сделав ваш код более модульным, переиспользуемым и тестируемым. Но вот в чем загвоздка: UseCases не всегда являются серебряной пулей. На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, чего как раз и пытается избежать Clean Architecture. В этой статье мы развенчаем миф о UseCases и обсудим, когда они необходимы, а когда — просто пустая трата времени. Если вы разработчик Android и задаетесь вопросом, приносите ли вы больше вреда, чем пользы, следуя этому шаблону, эта статья для вас.

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Performance приложения Wildberries.
Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался об его влиянии на производительность. Тесты показали, что собственное решение может быть значительно быстрее стандартной реализации UUID в Java.
В этой статье мы рассмотрим разные подходы к генерации уникальных идентификаторов, сравним их производительность и напишем своё оптимизированное решение для мобильных приложений.