Android Broadcast
14.2K subscribers
3.52K photos
339 videos
11 files
5.89K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @ab_manager

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Architecture

The beautiful story of Android developers, multiple Activities, and the chained elephant

Подход "Single Activity" становится всё более популярным при разработке Android приложений, как минимум потому что это рекомендация от Google.

Автор статьи простым языком объясняет проблемы "Multi Activity" приложений и показывает плюсы подхода "Single Activity":
👉 Отпадает необходимость в Bundle
👉 Больше не нужны Result-колбэки
👉 Упрощённая навигация с помощью Navigation Component или другой библиотеки на ваш выбор
👉 Shared scope для передачи данных между Fragment-ами и хранение состояния

Обойтись без "Multi Activity" не получится полностью. Автор приводит частные случаи, когда такой подход становится оправдан.
#Gradle #Performance

10 Tips to Speed Up Android Gradle Build Times

Автор даёт 10 простых советов как ускорить время сборки вашего приложения. В статье приводится инфографика влияния того или иного изменения на время сборки, поэтому вы сможете выбрать наиболее подходящие для себя.

После применения всех рекомендаций результаты были следующими:
👉 Время полной сборки сократилось с 59 до 19 секунд, почти в три раза.
💥 Время инкрементальной сборки после изменения кода сократилось с 24 до 2 секунд, в 12 раз!
👉 Время инкрементальной сборки после изменения ресурсов сократилось с 15 до 4.5 секунд
#GooglePlay

История одной блокировки и разблокировки в Google Play

Статья от Skyeng о том, как из-за неудачной картинки на скриншоте, или из-за таких слов как «вакцина» и «лёгкие» потенциально можно получить блокировку аккаунта разработчика, а так же советы, как не попасть в такую ситуацию.
#Testing

Using Fakes To Test Reactive Flows

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

В статье рассматривается альтернативный подход к созданию зависимостей для тестирования через создание fake-имплементаций и его преимущества.
#MotionLayout

MotionLayout: Visibility

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

Автор показывает на примере как можно управлять видимостью объектов внутри MotionLayout и как решить ситуацию, если у вашего Layout'а пропали все View.
#Architecture #LiveStream

Все тайны MVI

Когда: 18 июня, ЧТ, 20:00 (GMT+3)
Где: YouTube канал Android Broadcast

Обсуждаем паттерн MVI от начала и до конца:
👉 в чем отличие
👉 преимущества
👉 как эффективно построить свое приложение с ним и 👉 почему для Jetpack Compose - это лучшая архитектура.

Делиться опытом будет Lead Android Engineer из Badoo - Аркадий Иванов, который на работе использует MVI, а также написал собственную библиотеку MVIKotiln.
Также вы могли слышать о нем по его библиотеке Reaktive - реализация Reactive Extensions на чистом Kotlin
#JetpackCompose

Compose Academy

Jetpack Compose - современный набор инструментов для построения нативного Android UI с использованием декларативного подхода. Включает в себя несколько модулей (core, layout, material, wrappers and adapters for views, animation, test и другие).

На сайте Compose Academy можно найти практические примеры использования различных аспектов Jetpack Compose. Пока примеров немного, но достаточно для первого ознакомления. Автор обещает постепенно добавлять новые.
#R8 #Proguard

How to break your Android App with ProGuard / R8

Такие оптимизаторы кода как ProGuard и R8 весьма полезны. Они помогают сократить не используемый код и ресурсы, произвести оптимизацию и обфускацию байт-кода.

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

Автор статьи рассказывает, как он встретил одну из таких ошибок у себя в приложении, пытался найти источник ее возникновения и в итоге нашел причину в правиле для оптимизации кода. В статье описано, как так получилось, что методы wait, nofify и nofifyAll класса Object были неявно помечены как не имеющие side-эффектов и были удалены при оптимизации.

Также в статье упомянуто issue, по результатам которого в новых версиях решили вызывать ошибку компиляции при наличии такого правила.
#Dagger #Hilt

Dependency Injection on Android with Hilt

Dagger Hilt - новая библиотека от Google, которая уже успела наделать шуму. В статье показывается как использовать новинку в проекте

Внимание: библиотека еще в альфа стадии
hilt-annotations.pdf
56.4 KB
Основные аннотации Hilt и их использование
#FirebaseML #MLKit #MachineLearning

Машинное обучение для мобильных разработчиков вместе с Firebase ML

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

Созданный ранее для этих целей проект ML Kit for Firebase, разделили на два отдельных продукта и обновили ML Kit SDK.

В статье подробнее описано для чего предназначен Firebase ML и ML Kit
#Android11

New Android R Important Changes

Достаточно много материалов вышло в последние дни о будущей версии Android, и еще не меньше выйдет. Ребята в своей статье рассматривают достаточно интересные фишки:
👉 Одновременное использование нескольких камер устройства, например даже фронтальную и основную одновременно (хотя такая фишка у меня уже была на Nokia 7 Plus)
👉 Замена API Wi-Fi сканирования
#MemoryLeak

Practical Guide To Solve OutOfMemoryError in Android Application

Утечки памяти и, как следствие, OutOfMemoryError - больное место как для начинающего, так и для опытного Android разработчика. Основная проблема состоит в том что подобного рода ошибки не так очевидны и их сложно сразу отследить. Наиболее частые причины возникновения:
👉 Использование static Context, View или Activity
👉 Зарегистрированные, но не актуальные Listener'ы
👉 Использование getContext() вместо getApplicationContext() там где это необходимо
👉 Не статичные вложенные классы

В статье подробно рассказывается обо всех этих причинах, приводятся примеры подобных утечек и рассказывается как их избегать.
#JetpackCompose

Why do we need Jetpack Compose?

Приложения для Android успешно разрабатываются уже больше 10 лет, для чего же нам понадобился новый UI-фреймворк?

в статье рассматриваются недостатки имеющегося подхода:
👉 инструментарий 10-летней давности, когда на телефонах решались совсем другие задачи
👉 иерархия наследования с базовым классом View c десятками тысяч строк кода
👉 является частью ОС, что делает невозможным исправление ошибок без обновления прошивок
👉 нет поддержки Material Design, представленного позже

а также преимущества Jetpack Compose:
🔥 современные язык, парадигмы и инструменты. Для описания UI используется Kotlin, подходы взяты из таких UI-фреймворков как React и Flutter, полная поддержка со стороны Android Studio
🔥 единый источник правды. Больше ваш UI не будет отображать неактуальное состояние
🔥 команда разработки уделила особое внимание производительности фреймворка
🔥 поддержка Material Design из коробки
🔥 совместимость с имеющейся UI-иерархией
#Розыгрыш

Разыграли билет на онлайн-конференция Podlodka Android Crew. Поздравляю победителя @ValeryBoretsky

Для тех кто не попал, то можете купить билет на сайте. Уже доступна расписание и всю следующую неделю будут говорить об архитектуре приложений. На сайте уже доступно расписание сессий.

Видео запись с розыгрышем
#Android11 #Jetpack #UI

Screens - Large, Small and Foldable
Продолжительность 16 минут

Современная Android разработка подразумевает поддержку устройств с разными типами и размерами экранов, а также режимами отображения окон: мобилки, планшеты (они живы?), десктопы (Chrome OS), складываемые устройства а также многооконность

В видео рассказывается:
👉 Почему верстка должна быть адаптивной
👉 Хорошие практики для расположения элементов
👉 Jetpack Window Manager
👉 Android Compatibility Definition Document - документ с требованиями для Android устройств, где можно найти информацию о возможных конфигурациях, включая размеры экрана, окон в разных режимах и т.д.
👉 Возможность задать свои ограничения для конфигурации окон
👉 Эмуляторы, на которых можно тестировать разные конфигурации
👉 Deprecated APIs по работе с Display и WindowManager
👉 Новые APIs, в том числе новый класс WindowMetrics
#Dagger

В Dagger появится Assisted Inject

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

Подобную реализацию уже сделал Jake Wharton. AssistedInject on Square
#Meetup #Online #Android11

Android 11: что нового?
Продолжительность: ~ 2 часа

Завтра, 20 июня в 12:00(GMT+3) пройдет митап по новинкам в Android 11, совместно организованный GDG группами Брянска и Калуги. Вас ждет 3 доклада:
👉 Изменения в Privacy / Федор Цымбал
👉 Новинки WindowInsets и анимации клавиатуры / Иван Баранов
👉 Обзор Notification Bubbles / Инесса Бухонова

Зарегистрироваться нужно 👉 тут
#UI #Framework

Litho: лучшие практики для создания эффективного UI в Android

Многие слышали о Jetpack Compose, но не все знают, что уже давно существует конкурент от Facebook под названием Litho, который представляет собой фрэймворк, позволяющий создавать UI в декларативном стиле в коде. Причем его уже можно использовать в Production!

Основные преимущества этого фрэймворка:
👉 Все вычисления происходят вне UI потока в него передаётся лишь Draw
👉 Значительный прирост в производительности при отрисовке UI
👉 Интерфейс более плоский, потому что сокращается уровень вложенности Layout'ов

При этом существует и ряд недостатков:
Плохая интеграция с Android Studio
Нет поддержки в UI Preview
Интеграция с Kotlin всё ещё в разработке

Если же достоинства превосходят недостатки, то для вас статья от Сергея Рябова, разработчика Litho, в ней он постарался раскрыть большинство аспектов фреймворка.