Size: a a a

Android Broadcast

2020 August 27
Android Broadcast
#Material #Animation

Adding Amazing Transitions to Your Android App Easily Using Material Motion

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

Understanding Jetpack Compose — Part 1 of 2

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

В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
источник
Android Broadcast
#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 вам не нужно понять детали этой статьи
источник
Android Broadcast
#Android10 #Thermal

Thermal in Android

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

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

The proper care and feeding of your Gradle build

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

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

Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
источник
Android Broadcast
#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.
источник
Android Broadcast
#Robolectric #Testing

Robolectric 4.4

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

Styled Texts for Android (Replaceable and Localizable)

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

Kotlin Multiplatform Mobile goes Alpha

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

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

Руководство по использованию и установке плагина здесь
источник
Android Broadcast
#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{}
источник
Android Broadcast
#Coroutines #Flow #LiveData

Refactoring from LiveData to Coroutines & Flow

Помните руководство где Google рекомендовала на всех слоях использовать LiveData для коммуникации между слоями? Так вот - это заблуждение. LiveData нужна только на UI слое, а на других - Coroutines, Reactive подход или что-то еще асинхронное

В статье разбирается как мигрировать с LiveData на Coroutines и Flow
источник
Android Broadcast
​​#JetpackCompose

Showkase поможет вам организовать, изучить, найти и визуализировать компоненты Jetpack Compose UI. Фактически это букварь для изучения нового подхода для работы с UI в Android.

Библиотека конфигурирует UI браузер для просмотра все элементов и рендерит их в основных различных режимах.
источник
2020 September 02
Android Broadcast
#Android11 #ART #AndroidStudio

Structural Class Redefinition

Android Runtime (ART) - виртуальная машина, которая исполняет код Android приложений, обновляется регулярно. Проблема в том, что очень мало информации о том что происходит в ней от релиза к релизу. Поэтому рекомендую остановить внимание на посте.

Structural Class Redefinition - это расширение для JVMTI API, которое позволяет улучшить функцию "Apply Changes" в Android Studio. В первой части описывается работа этого функционала на уровне виртуальной машины.
источник
Android Broadcast
#Android11 #ART #AndroidStudio

Structural Class Redefinition and Apply Changes

Реализация Structural Class Redefinition в Android Studio, которая уже работает в Android Studio 4.1 (вчера вышел RC2). К сожалению, не все заработает полноценно в AS 4.1, часть функционала доступна только в 4.2.
источник
Android Broadcast
#ADB

Supercharge Android dev with Scrcpy and ADB WIFI

Удаленное управление вашим устройство без провода с компьютера вашего устройства с помощью scrcpy
источник
2020 September 03
Android Broadcast
#Jetpack

Обновление Jetpack 2 сентября 2020

Новое обновление Jetpack. Основная часть обновления - новые альфа библиотек Compose и переход множества других библиотек на новую стадию alpha, beta, rc.

Однако не обошлось без интересного анонса - библиотека DataStore для сохранения данных, разработанная на Kotlin и под капотом построенная на Coroutines и Flow. Библиотека приходит на замену SharedPreferences.
источник
Android Broadcast
#Jetpack #DataStore #SharedPreferences

Prefer Storing Data with Jetpack DataStore

Всему суждено пасть. AsyncTask уже стали deprecated, UI на основе View будет заменен Compose. Вот и SharedPreferences будет замене новой библиотекой DataStore, разработанной на Kotlin и работающей на основе Coroutines.

Новая библиотека решена всех проблем SharedPreferences:
👉 Полностью асинхронное
👉 Уведомление об ошибках
👉 Транзакционное выполнение
👉 Поддержка миграции с SharedPreferences в DataStore
👉 Возможность работы как "Key-Value" так и хранилище объектов на основе Protobuf

В статье найдете примеры использования DataStore и миграции с SharedPreferences

Важно: DataStore не является заменой Room
источник
Android Broadcast
#Jetpack #Datastore #SharedPreferences

Сравнение SharedPreferences и новой DataStore
источник
Android Broadcast
#CI #CD

«Ну, покати!» или CI/CD мобильных приложений на основе контракта

Avito делится тем как они заводят процесс релиза мобильного приложения на основе TeamCity и Nupokati.
источник
Android Broadcast
​​#Tooling #JakeWharton

Dependency Tree Diff

Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
источник