Size: a a a

Android Live 🤖

2021 October 08
Android Live 🤖
​​Заблуждения Clean Architecture
#architecture

Clean Architecture — самый распространённый набор рекомендаций к архитектуре среди Android-разработчиков.
И вроде разделение на слои выглядит простым и логичным, однако если копнуть глубже, то выясняется много интересных деталей.

Например, как лучше настроить mapping объектов между слоями, как выполнять переходы между ними, что входит в понятие Entities, сколько методов должно быть в Interactor, а вообще UseCase и Interactor — одно и то же.

Отличная статья, которая даёт ответы на большинство основных вопросов. Вероятно, после прочтения статьи у вас также возникнет переосмысление текущих подходов к архитектуре.
Хотя, как правильно заметил создатель этого подхода — Uncle Bob, «все мы пираты по натуре и правила, о которых я говорю тут, на самом деле, скорее рекомендации» 🏴‍☠️
источник
Android Live 🤖
🎯 Научитесь с помощью Flutter делать сложную анимацию

🗓 11 октября на открытом уроке «Explicit анимации и 3D-графика в Flutter» от OTUS.

На вебинаре вы вместе с преподавателем Дмитрием Золотовым:
— разберете технические детали анимации,
— научитесь создавать сложные составные параллельные и последовательные анимации,
— посмотрите основы использования двухмерных игровых движков (Flare, SpriteWidget) и создания трехмерной графики.

⏰ Для регистрации на урок пройдите небольшой тест https://otus.pw/hQ4S/
источник
2021 October 12
Android Live 🤖
​​Awesome KMM
#kmm #kotlin

Если вы думаете о том, как бы написать своё приложение на KMM и не пока что не сильно представляете, как те или иные вещи там делаются и какие зависимости подключать, то есть классный репозиторий, который содержит огромный пласт библиотек для KMM.

Тут и плагины, которые нужны для написания приложений, и библиотеки для сети, логгирования, сохранения данных, авторизации в соц.сетях… в общем, каждый найдёт то, что ему нужно. Ну и можно предложить свою библиотеку в список, если разработчики что-то забыли добавить 😉
источник
2021 October 14
Android Live 🤖
​​Как управлять конфликтами версий в Gradle?
#gradle #tips

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

Подобная проблема, на самом деле, довольно распространённая, так как ваши текущие библиотеки могут обновляться не так быстро, как ваш основной модуль, что может привести к сложностям в сборке всего проекта.
источник
2021 October 15
Android Live 🤖
​​Kotlin Multiplatform Wizard
#kmm #kotlin

Кроме отличного набора библиотек для KMM, ребята из JetBrains сделали Wizard, где можно быстро создать проект под KMM, выбрав необходимые таргеты и некоторые библиотеки.

В итоге получаем пустой проект с настройками для выбранных платформ, в котором можно быстро начать писать код. Ну или можно просто скопировать настройки build.gradle, чтобы не настраивать его самостоятельно. В общем, добавляйте в закладки, пригодится. 😎
источник
Android Live 🤖
​​Релиз Android-приложения каждый день
#gradle #tools

Выпуск новой версии приложения — довольно трудоёмкий процесс для большинства разработчиков. Ведь нужно проверить последние фичи, перевести новые строки, проверить, не сломались ли текущие вещи… ну и верить, что Proguard не поломал что-то, если добавили новую библиотеку. 🙃

Ребята из команды Todoist поделились секретами автоматизации процесса создания билдов в своей команде.

Что было:
большие ветки в git с кодом — каждый раз, когда разработчик пытался влить в develop свою фичу, его ожидали конфликты с уже влитыми фичами и попытки всё исправить, что отнимало время.

блокер в виде переводов — приложение переводится на 15 языков, что также затягивало процесс: надо было сделать какой-то файл для переводчиков и дождаться ответа от них, а когда всё завершится, влить это в готовую ветку. Ну и проверить, что переводчик не поломал формат строк.

долгая сборка проекта — при сборке проекта приходилось ждать до 2 часов, что критично, если надо сделать релиз быстро.

Что добавили:
feature flags — добавили возможность включения и отключения частей приложения удалённо, что позволяет не ожидать полностью завершённой фичи в главной ветке, ведь пользователь этого не увидит. При этом заметно уменьшается число конфликтов при слиянии веток.

автоматизация переводов — довольно круто автоматизировали процесс загрузки и получения строк от команды тестировщиков. Ещё добавили верификацию строк, чтобы ничего не поломать новой строчкой.

автоматический changelog — добавляют его на основе pull request от разработчиков.

В итоге получилось заметно снизить время загрузки конкретного билда, что улучшило много показателей приложения. 👏🏻
источник
Android Live 🤖
Podlodka анонсирует 6-ой сезон Podlodka Android Crew!

🔥Старт 18 октября.
Интенсив продлится две недели. Сессии проходят дважды в день: утром и вечером.
В программе: крутые спикеры, сессии в лайве, ламповое общение и обмен кейсами в слаке, записи (для тех, кто не успевает на лайв).

Во время первой недели разбирают Работу с сетью:
- научат, как правильно проектировать сетевой слой приложения
- глубоко погрузят в протоколы передачи данных и научат осознанно их выбирать
- покажут лучшие практики дизайна API и клиент-серверного взаимодействию

На второй неделе обсуждают Дебаг до релиза и после:
- обучат инструментам отладки и кейсам их применения
- расскажут как и зачем мониторить приложение в продакшене
- разберут системное отслеживание за перформансом приложения.

Для подписчиков Android Live есть промокодANDROID_LIVE_6. ☺️

Подробности и билеты уже на сайте 😊

#партнёрский
источник
2021 October 17
Android Live 🤖
​​Определяем подмену локации и клон приложения
#tools

Интересная история от компании Swiggy, которая занимает доставкой еды.
Большинство приложений доставки состоят из приложения для пользователей и приложения для водителей. В свою очередь одна из вашнейших частей пользовательского приложения — это экран с картой, где user видит текущий статус своего заказа.

Разработчики решили подсчитать, сколько курьеров использует подмену локации или клон приложения.
Цифры оказались довольно значительными: около 8% клонирует приложение, и столько же использует подмену локации. Для масштабного приложения — это большие цифры.
Вероятно, курьеры это делают для избежания штрафов за просроченный заказ или же пробуют выбрать для себя наиболее прибыльную доставку.🤪

Вот несколько проверок, которые добавились:
- проверка на root и режим разработчика;
- простая проверка на mock локации при помощи isFromMockProvider;
- список приложений, которые запрашивают разрешение на ACCESS_MOCK_LOCATION ;
- проверка переименования package name;
- проверка storage path, куда установлено приложение;
- проверка запуска на виртуалке и эмуляторе;

Результаты радуют, ведь удалось убрать практически все попытки подмены локации и клонирования приложения. 👍🏻
источник
2021 October 20
Android Live 🤖
​​Kotlin 2021 Keynote
#kotlin

Тут у ребят из JetBrains идёт целая серия роликов, которая посвящена новинкам и будущему продуктов, связанных с Kotlin.

Вчера было первое мероприятие, где рассказывалось об основных новинках. Детальный разговор о каждой пойдёт дальше, но вот основные тезисы:
◆ в версии 1.6 выходит новый IR компилятор, который будет называться K2. Обещают буст производительности;
◆ KMM выходит в beta статус уже следующей весной, что также принесёт сразу несколько улучшений: и новую модель памяти, и обратную совместимость с Kotlin/Native и более стабильные инструменты. Ждём-ждём, держу кулачки за эту технологию🤜🤛;
◆ Compose Multiplatform выходит stable уже в этом году. Будет поддержка Android, web и desktop;
◆ появляются новые версии Ktor, Kotless и Data Science библиотек;
◆ Dokka, инструмент для создания документации в Kotlin-проектах, переходит в beta и получит редизайн;
◆ выходит Kover — новый gradle-плагин для проверки качества кода;
◆ ну и самое главное, у Kotlin появляется талисман😁. Скоро будет возможность выбрать ему имя.

Следим за анонсами дальше, ссылка на следующие видео тут.
источник
2021 October 25
Android Live 🤖
​​Как защитить premium-фичи от взлома
#android

Крутая статья, где описывается процесс исследования своего приложения на предмет доступа к премиальным фичам.

В двух словах, это происходит так: злоумышленник исследует приложение на предмет того, не сохранял ли разработчик флаг в SharedPreferences, или каком-то другом локальном хранилище, и переписывает этот флаг в true.

Подобные решения появляются из-за неопытности разработчиков, а также по причине желания использовать премиальные фичи на устройствах без Google Play Services.

Больше деталей и о том как избежать подобных проблем в своём приложении можно почитать тут.
источник
Android Live 🤖
​​GroupingBy vs groupBy
#kotlin

В Kotlin есть целый набор операторов для работы с коллекциями. Одни из самых распространённых — groupBy, который возвращает Map<K, List<V>>, где V — элемент исходной коллекции, а K — ключ, по которому мы группируем нашу коллекцию.

Например, если мы хотим сгруппировать пользователей по идентификатору, который имеет тип String, то на выходе мы получим Map<String, List<User>>. Иначе говоря, мы превращаем нашу изначальную коллекцию в несколько меньших, сгруппированных по определённому признаку.

Это крутой метод, но не многие знают про groupingBy, который может быть полезен для задач, где особенно важна производительность, ведь он не создаёт промежуточный список для каждой маленькой коллекции. Вместо этого метод возвращает объект Grouping, который по сути является обёрткой над Iterator.

В нём гораздо меньше функции, однако, если вам очень важна производительность, подобный метод может помочь. Ну и просто будете знать, что существует такая альтернатива, вдруг пригодится на собеседовании. 😁

Подробнее о кейсах и о том, как его использовать можно почитать тут.
источник
2021 October 26
Android Live 🤖
​​MVI
#architecture #beginners

Архитектура MVI достаточно распространённый подход к созданию мобильных приложений. Но многие разработчики не используют её по причине усложннённости по сравнению с MVVM и MVP. Ну и стоит заметить, что многие используют MVI некорректно, получая не тот результат, который ожидали.

Есть крутейший цикл статей, который поможет проникнуться и наконец начать использовать MVI-подход в приложениях.
Автор рассказывает про Model, View and Intent, State Reducer, независимые UI-компоненты и ещё столько же статей про основные аспекты MVI.

Одним словом, крайне рекомендую. 👍
источник
2021 October 27
Android Live 🤖
​​Android Dev Summit
#conference

Думаю, что большинство из вас в курсе, но всё же напомню.
Уже сегодня состоится конференция для Android-разработчиков от Google — Android Dev Summit, где у нас будет множество прекрасных докладов.

Доклады разделены на следующие темы:
🔹Jetpack Compose, now with Material You — понятно из названия, что нам расскажут про интеграцию Material You с Compose: тут и про анимации, и про темы, и про цвета, и про виджеты.

🔹 Building for large screens — расскажут о том, как строить свои приложения для больших экранов. Тема не новая, ведь мы всегда имеем в наличии планшеты, однако последний тренд говорит нам о сгибаемых экранах, под которые вскоре придётся адаптировать свои приложения.

🔹 Modern Android Development — тут опишут лучшие практики для современной Android-разработки: Flow, WorkManager, Room, AndroidX Media, Gradle Plugin. В общем, крутой раздел, который будет интересен большинству разработчиков.

🔹 Private and secure by design — небольшой раздел, где расскажут о современных штуках, связанных с данными пользователей, что стоит ожидать нам, разработчикам в ближайшем будущем.

🔹 Android 12 — расскажут о том, на что стоит обратить внимание в последней версии Android.

Ну и ещё парочку разделов про приложения на Android Auto, TV и играх.
Ссылка на все доклады тут.
источник
2021 October 29
Android Live 🤖
​​Modern Android Development
#conference

Google решили не мелочиться и выложить все видео с Dev Summit в самом его начале. Отдельный плюс за то, что все доклады короткие и их можно легко посмотреть.

Я потихоньку смотрю 🤓
Делюсь с вами самыми интересными для меня докладами из плейлиста Modern Android Development.

1️⃣Room 2.4.0 — хорошее видео, где рассказывается о новинках в последней версии Room: автомиграциях, MultiMap и т.д. Будет полезно, чтобы быть в теме, тем более, что версия уже стабильна.

2️⃣Kotlin Flow in practice — здесь вам расскажут о полном цикле работы с Flow в Android. Все примеры практические. Упомянут и о подводных камнях при работе, а также о взаимодействии с жизненным циклом.

3️⃣WorkManager — Back to the foreground — будет полезно новичкам, кто не работал с Worker, ну или для тех, кто хочет освежить свои знания.

Буду рад, если поделитесь своими фаворитами из этого плейлиста. 😉
источник
2021 November 01
Android Live 🤖
​​Миграция на Material Design 3
#material #design

Весной этого года, в Google анонсировали Material You, который, по сути, является развитием Material Design.
Главная фича, которая там есть — это поддержка dynamic color, к которой можно подготовить свои приложения.
Ну и в целом, изменились правила по работе с цветами и шрифтами. Давайте посмотрим чуть подробнее, на что стоит обратить внимание.

1️⃣ Обновляем тему на Material 3 — для этого нужно заменить Theme.MaterialComponents.* на Theme.Material3.* и Widget.MaterialComponents.* на Widget.Material3.*.

2️⃣ Меняем цвета и темы — добавилось несколько цветов, а именно Tertiary color, цвета контейнеров и несколько вариантов цветов colorOnSurface. Проще всего добавить их при помощи Material Theme Builder.

3️⃣ Изменяем Typography — поменялся нейминг для вариаций шрифтов. В целом, ничего сложного, их число стало меньше и теперь они вместо номеров имеют названия Small, Medium и Large.

4️⃣ Меняем компоненты — изменился внешний вид BottomNavigationView, AppBar, FloatingActionButton и кнопок.

В целом, не могу сказать, что выглядит плохо, мне нравится. Осталось дело за главным — приспособить свои приложения к этому дизайну.
Больше деталей и информации можно найти тут.
источник
2021 November 02
Android Live 🤖
​​Privacy Dashboard
#security #android

В Android 12 добавилась интересная для пользователя фича — Pricacy Dashboard. С каждой версией добавляются всё новые и новые инструменты для защиты приватности пользователей, и вот теперь каждый может посмотреть, какое приложение и когда использовало локацию, микрофон и камеру за последние сутки.

Для разработчиков это означает то, что они должны будут проверить свои приложения на предмет реальной нужды использования тех или иных данных от пользователя. В том числе и использование сторонними библиотеками.
Чуть раньше было представлено Data access auditing API, которое поможет понять что и когда используется.

Думаю, что для большинства приложений всё останется так, как и есть сейчас, ведь уже давно мы запрашиваем только те разрешения, которые действительно нужны.
источник
Android Live 🤖
Получить оффер и стать мобильным разработчиком Авито за уикенд — реально ⚡️

Как участвовать:
пройдите тест и подайте заявку до 11 ноября;
участников с лучшими результатами пригласят на Zoom-интервью, где вы сможете продемонстрировать свои софт- и хард-скиллы и узнать больше о команде и задачах;
у вас есть все шансы получить оффер за выходные.

В Авито вы сможете влиять на продукт и участвовать в развитии сервиса, попасть в крутое коммьюнити, где работает больше 70 iOS- и Android-разработчиков, а также получить отличные условия для работы и самореализации.

Все подробности по ссылке: clc.to/cCxHAQ

Если хотите кого-то порекомендовать, примите участие в реферальной программе: bit.ly/3BfLR7w

#партнёрский
источник
2021 November 03
Android Live 🤖
​​Обновление зависимостей gradle
#gradle

В gradle у нас есть удобная фича, которая показывает предупреждение о том, что доступна новая версия зависимости. Однако, если использоваться Kotlin DSL, то такие предупреждения могут не появляться, так что обновлять зависимости довольно сложно.

Есть классное решение, где проверкой зависимостей будет заниматься плагин. После подключения плагина к проекту, станет доступна команда, которая выведет список зависимостей для обновления в файл.
А дальше всю работу можно вынести на какой-нибудь Github Actions, что добавит ещё больше автоматизации в процесс.

Автор статьи так и сделал, а ещё добавил отправку отчёта на почту. Получилось круто, остаётся только пробежаться по зависимостям и проверить, что проект корректно собирается.
источник
2021 November 08
Android Live 🤖
​​Jetpack Compose vs SwiftUI
#compose #kmm

Неплохая статья, где автор делится своими наблюдениями о различиях в Jetpack Compose и SwiftUI.
Кроме того, он поделился двумя версиями одного и того же приложения: под Android и iOS.

Статья будет полезна в случаях, если вы работаете над приложениями под KMM и хотите больше понять особенности работы двух платформ, а также если вы просто хотите разобраться, как работает противоположная платформа и где какие вещи сделать проще и удобнее.
источник
2021 November 09
Android Live 🤖
​​Paging из сети и базы данных
#room #jetpack

Хорошая статья, где рассказывается о реализации распространённого получения данных при помощи Paging3 из Jetpack.
Идея заключается в том, что мы всегда получаем данные из базы данных, сразу же отображаем пользователю, а дальше обновляем их из сети, когда пора обновить и есть соединение.

В Paging3 есть все нужные инструменты: и работа из коробки в Room, и различные типы Mediator, и поддержка состояний загрузки или ошибки.
источник