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

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

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

Android Lint Framework — An Introduction

Android Lint - специальная утилита для Android проектов, которая анализирует в нем различные файлы (код, ресурсы, Gradle скрипты и др.). Утилита обнаруживает нарушения правил, которым рекомендуется следовать.

Android Lint можно дополнить своими правилами. В статье разбирается создание правила по обнаружению использованию стандартного ImageView с предложением его замены на собственный.

Исходный код можно найти здесь
#Material #DarkTheme

Dark Theme with Material Design Components

Поддержка темной темы - это важная возможность приложения в современном мире, которая позволяет уменьшить нагрузку на глаза пользователя и экономить заряд батареи.

Material Design Component (MDC) из коробки поддерживают работу с темной темой. Доступна функция для Android 5.0 и выше.

В статье разбирается как вам правильно использовать компоненты и настроить Material Theme, чтобы реализовать темную тему у себя в приложении.
#Testing #Espresso #Jetpack

Вышла библиотека AndroidX Test 1.3.0
👉 Core 1.3.0
👉 Espresso 3.3.0
👉 Intents 3.3.0
👉 JUnit 1.1.2
👉 Monitor 1.3.0
👉 Orchestrator 1.3.0
👉 Runner 1.3.0
👉 Rules 1.3.0
👉 Truth 1.3.0
👉 Test Services 1.3.0

Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
#Gradle

apkscale

Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
#Testing #Coverage

Code Coverage Best Practices

Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
#JetpackCompose #UI

Announcing Jetpack Compose Alpha!

Вышла первая альфа-версия Jetpack Compose 🚀! API все еще нестабильное и могут происходить изменения в нем до Beta

Альфа релиз включает в себя:
👉 Анимация
👉 Constraint Layout
👉 Базовую поддержку A11Y
👉 Ввод и жесты
👉 Взаимодействие с View (полный interop)
👉 Lazy Lists
👉 Material UI
👉 Улучшения в производительности
👉 Тестирование
👉 Темы и графику
👉 Управление окнами

Android Studio 4.2 включает целый ряд инструментов, чтобы удобно работать с Jetpack Compose.

👉 Новые каноничные примеры Jetpack Compose
👉 "Изучение шаг за шагом" - цикл статей и Codelab
👉 Документация

Также рекомендую посмотреть новые видео:
📺 Compose for existing apps (22:05) - интеграция Compose в существующие приложения
📺 Thinking in Compose (25:27) - как правильно мыслить о построение UI в шаблонах Compose
📺 Compose by example (22:07) - примеры использования Compose
Будете пробовать альфу Jetpack Compose в production приложениях?
Anonymous Poll
11%
Да
17%
Жду Beta
43%
Жду Stable
14%
Не планирую использовать Compose
15%
Не участвую в опросе
#Fragment

Android Fragment Result Listener (RU)

Разбор нового API Fragment - Fragment Result API, которое заменить Fragment Target API и позволит передать результат между Fragment в рамках одного. FragmentManager проще.

В статье разбирается как работать с новым API и его тестирование
#Awareness

Smarter apps with Awareness API

Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.

Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
#Kotlin #SAM

Support for Kotlin SAM in release 1.4

SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.

В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.

В статье рассматривается адаптация нового функции языка в вашем коде
#Material #Animation

Adding Amazing Transitions to Your Android App Easily Using Material Motion

В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
#JetpackCompose #UnderTheHood

Understanding Jetpack Compose — Part 1 of 2

Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.

В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
#JetpackCompose #UnderTheHood

Under the hood of Jetpack Compose — part 2 of 2

Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация @Composable
👉 В чем похожи @Composable и suspend из Kotlin
👉 Как строится UI в Jetpack Compose
👉 Что такое Composer
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose

Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
#Android10 #Thermal

Thermal in Android

Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.

Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
#Gradle #Performance

The proper care and feeding of your Gradle build

Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.

С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (apiimplementationcompileOnly и др)
👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины

Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
#AndroidBroadcast #DependencyInjection #Dagger

Dagger Hilt Deep Dive (Livestream EN)

В четверг, 3 сентября, в 19:30 обсуждаем Dagger Hilt с Manuel Vivo, Android Developer Relations Engineer в Google

Dagger Hilt - это надстройка над Dagger под Android, призванная убрать множество boileplate кода, который приходится писать для модулей и компонентов.

Manuel занимается архитектурой приложений, Kotlin, Coroutines, Dependency Injection, а также Jetpack Compose. Ранее работал в Capital One.
#Robolectric #Testing

Robolectric 4.4

Вышла новой версии библиотеки для тестирования Android кода на локальной машине. Изменений огромное количество и подробнее вы с ними можете ознакомиться по ссылке.
#UI #Spannable

Styled Texts for Android (Replaceable and Localizable)

Для всех тех кто используется Spannable строки, рекомендую взять на вооружение практику из статьи. С помощью разметки строк тегами с аннотациями в XML и последующим заданием через код какому Span соответствует кастомная аннотация
#Kotlin #Multiplafrom #iOS

Kotlin Multiplatform Mobile goes Alpha

JetBrains уже говорили о том что концентрируют сейчас усилия в мультиплатформе на мобильном сегменте. Как результат - релиз Kotlin Multiplatform Mobile (KMM).

KMM - это SDK для шаринга кода между iOS и Android, которое включается в себя плагин для Android Studio. Плагин позволяет писать, запускать и дебажить общий код на Android и iOS из одной IDE.

Руководство по использованию и установке плагина здесь
#Kotlin #Coroutines

Why exception handling with Kotlin Coroutines is so hard and how to successfully master it!

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

Обработка ошибок может быть еще тем трюком в Coroutine. Как бы я не любил этот подход, но такая сложность в нем есть (

В статье автор разбирает
👉 интересные случаи обработки ошибок,
👉 почему так происходит
👉 какая в этом роль Structured Concurrency
👉 CoroutineExceptionHandler
👉 try-catch vs CoroutineExceptionHandler
👉 launch{} vs async{}
👉 coroutineScope{}
👉 supervisorScope{}