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

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

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

Как безболезненно мигрировать с RxJava на Kotlin Coroutines+Flow

Сравнение подходов RxJava и Flow для обработки реактивных стримов и как происходит миграция
#LiveData #Kotlin

Avoid backing properties for LiveData and StateFlow

Использование LiveData, StateFlow и SharedFlow в ViewModel имеет свою неприятную особенность - создание приватного модифицируемого property и публичного только для чтения. Автор предлагает решение в лоб - абстракция в виде интерфейса или абстрактного класса и разведёт модифицируемый и немодифицируемые поля. Встают вопросы интеграции этого с ViewModelFactory, DI и др.

Я жду в языке фичи о которой рассказал Роман Елизаров, решающую проблему (подробнее здесь).
#AndroidStudio

When your Android Studio breakpoint doesn’t stop

Пункты, которые стоит проверить когда дебаггер не останавливается на break point. Часть из них совсем банальная, но есть и интересные, например особенности приложения со множеством процессов или запуск deep link.
Помимо канала Android Broadcast множество всего интересного можно найти в группе @android_broadcast_talks
👉 Задать вопрос сообществу Android разработчиков
👉 Помочь найти аргументы и практики, чтобы разрешить холивар
👉 Получить помощь в выборе ноутбука для разработки под Android

Кучу всего мы обсуждаем там ежедневно. Присоединяйся и ты @android_broadcast_talks
#AndroidBroadcast #Kotlin #ViewBinding

Android ViewBinding KTX (20 мин)

Новое видео на канале Android Broadcast в котором рассказываю о:
👉 История ViewBinding
👉 ViewBinding под капотом
👉 Как упростить работу с помощью ViewBindingPropertyDelegate

Жду ваши лайки и подписки на канал. В следующем видео буду рассказывать о миграции с LiveData на Flow
#Dagger #DependencyInjection

Вышел Dagger 2.31

Новая версия Dagger радует новыми фичами:
🔥 Поддержка Assisted Injection - возможность передать параметры во время создания объекта, а не из DI графа. Подробности здесь

Hilt:
👉 @TestInstallIn - позволяет описывать глобально подмену тестовых модулей вместо @UninstallModules на отдельных тестах
👉 @HiltViewModel - замена @ViewModelInject. Отличается тем что делает inject из ViewModelComponent с @ViewModelScope. Подробнее здесь
👉 Удалили ApplicationComponent. Мигрируемся на SingletonComponent
👉 Небольшие улучшения в настройке Gradle плагина и поддержке многомодульных проектов
#Coroutines #Lifecycle

Deep Dive Into Android Lifecycle Coroutines

Разбор как работают CoroutineScope, которые являются частью библиотеки lifecycle-ktx, и какие особенности есть в их поведении.
#Jetpack

Обновление библиотек Jetpack 13.01.2021

Annotation 1.2.0-beta01
👉 Аннотация @DoNotInline чтобы отключить inline метода в R8

AppCompat 1.3.0-beta01
👉 Часть стандартных иконок была замена на векторные
👉 Изменения в API

Core 1.5.0-beta01
👉 Добавлено Insets Animation API
👉 Улучшения API OnReceiveContentListener
👉 Уведомления могут быть помечены как пропущенный звонок
👉 Впервые увидел раздел "External Contribution"
Кажется, после 1.3.X будет сразу релиз 1.5.0

DataStore 1.0.0-alpha06
👉 Поддержка RxJava 2/3
👉 Изменения в API

Также вышли
👉 Work 2.5.0-rc01
👉 Slice 1.1.0-alpha02 (кто их использует просьба написать @krlrozov)
👉 ShareTarget 1.1.0
👉 Enterprise 1.1.0
👉 MediaRouter 1.2.1
#AndroidBroadcast #LiveStream

🔴 За 2 зайцами: нужно ли уметь разрабатывать под Android и iOS (прямой эфир)

Сегодня в 19.00 (GMT+3) соберёмся, чтобы обсудить стоит ли разрабатывать под две мобильные платформы или сконцентрироваться на одной. Не обойдем стороной и трансформацию нативных разработчиков в кроссплатформенные

Гость - Алексей Гладков, автор канала Mobile Developer, технический архитектор Леруа Мерлен, барабанщик, прогеймер
#Android11 #ScopedStorage

Scoped Storage: Не надо бояться (33 мин)

С августа 2021 все новые приложения и с ноября 2021 все обновления существующих приложений должны использовать targetSdk 30.

К изменениям лучше готовиться заранее и одно из самых крупных изменений, пришедшее с Android 11 - Scoped Storage. Начиная с targetSdk=30 флаг android:requestLegacyExternalStorage будет игнорироваться и вопрос миграции становится более актуальным. По данной теме Redmadrobot выложили запись со своего внутреннего митапа:

Таймкоды:
01:15 Disclaimer
02:10 Почему не нужно бояться
04:10 App-specific files
06:35 Cпособы обращения к Storage
08:05 Моменты из практики
16:03 Чек-лист для проверки
18:35 Permissions
21:35 Миграция
24:10 Вопросы

Ссылки из доклада:
📄Scoped Storage
📄Storage updates in Android 11
📄App data and files
👍1
#AndroidBroadcast #Новости

📺 Пилотный выпуск новостей от Android Broadcast (14 мин)

Обсуждаем новости, статьи и самые интересные события в мире мобильной разработки и около неё.

Оставляйте ваши отзывы в комментариях на YouTube. Это очень помогает улучшать качество контента.

P.S. Качество звука получилось не очень. В ближайшее время будет исправлено с помощью нового микрофона.
#GooglePlay

Google Play начал показывать рост или падение в рейтингах

Google Play в списках самых популярных приложений начал показывать, растет ли приложение в чартах или падает. Это стрелка вверх или вниз.

Повлияет ли такой индикатор на ваше решение установить приложение? Голосуем 👍 или 👎
#AndroidOS

The legend about AIDL

Разбор механизма для коммуникации между процессами в Android

Статья из трёх частей:
1️⃣ Основы
2️⃣ AIDL в действии
3️⃣ Где используется AIDL в Android
#Безопасность #Networking

📺 Android Guards "Как прикрутить и отломать SSL pinning. CetificatePinner & NSC vs Reverse Engineer" (36 мин)

Автоматическое откручивание SSL pinning-а не всегда хорошо работает и порой приходится выпиливать его руками, чтобы посмотреть трафик приложения.

Автор пишет приложение с двумя видами пиннинга сертификатов и обфусцирует его. Также продемонстрировал работу взломщика с таким приложением.
#Jetpack #AppStartup

A Warning Regarding Android App Startup with Multiprocess Apps

Библиотека Jetpack App Startup, должна ускорить запуск приложения, но не тут так все было. Есть проблемы при работе с приложениями, которые используют несколько процессов, потому что чтоб App Startup работает только на процессе по умолчанию. В статье найдете рецепт как изменить процесс на котором работает библиотека
#AndroidStudio

StudioFlags.java - файл, содержащий все флаги Android Studio. Вы сможете узнать пару секретов и включить/выключить то что вам нужно/не нужно.
#LiveData #Coroutines #Flow

Migrate from LiveData to StateFlow and SharedFlow

Руководство по миграции с LiveData на Flow и его вариации. Также рассматривается почему это надо делать и какие преимущества даёт Flow.
#AndroidStudio #Performance

Can you trust time measurements in Profiler?
6 минут 📺 Видео версия

Если нужно проанализировать производительность, то в первую очередь надо взять замеры. В этом нам поможет Profiler, который встроен в Androdi Studio.

В статье/видео приводятся доказательства, что не всегда он показывает верные результаты. Решением служит использование Systrace или Jetpack Benchmark Library.
#Gradle #Kotlin

Вышел Gradle 6.8

Новый релиз Gradle сосредоточился на скорости, а именно:
🚀 Ускорение компиляции build скриптов на Kotlin DSL
👉 Добавлена поддержка пропуска компиляции для Gradle Kotlin DSL скриптов
👉 Больше совпадений кэша
👉 Улучшение конфигурационного кэша
👉 Улучшение composite builds
👉 Улучшение управления зависимостями: консистентность между runtime и compile зависимостями
👉 В settings.gradle(.kts) теперь можно объявить репозитории для всех зависимостей проектов, component metadata rules и блокировку динамического версионирования (1.+)
👉 Исправление багов