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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Java #D8 #Desugarung #JakeWharton

D8 Library Desugaring

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

Есть одно "НО" - проблема не решена для Java API. Android разработчики стали чувствовать проблему меньше с приходом Kotlin, но все же в JDK есть интересные API:
👉 Java 8 Stream Collection (API 24)
👉 Java 8 Date Time (API 26)
👉 Optional (API 24)
👉 CompletableFuture (API 24)
Использовать в большинстве приложений не получится т.к. наиболее распространенные minSdk - это 21 или 23.

В Android Studio 4.0 (а точнее в Android Gradle Plugin и D8) была добавлена новая возможность “core library desugaring”, которая позволяет делать бэкпорт этих API, а также новых методов, появившиеся в других API (более подробный список здесь) и исправлять баги в Java API на старых версиях Android.

В своей статье Jake разбирается как устроена новая фича в D8
#IDEA

IntelliJ Platform Roadmap for 2020

Скорее всего любой Android разработчик пользуется Android Studio, а также Flutter разработчики. Базируется на Android Studio на основе InjelliJ IDEA от JetBrains. Авторы перед наступающим годом рассказали о свои планах по улучшению IDE в 2020:
👉 Скорость индексации проекта
👉 Улучшение в многопоточности
👉 Загрузка/выгрузка плагинов без перезагрузки
👉 Поддержка «парного программирования» (Collaborative Editing)
👉 Сборка и дебаг кода на удаленной машине (Cloud Execution)
👉 Редизайн модели проекта, которая позволит убрать текущие ограничения

Нас ждет очень много интересного и часть этих изменений будет попадать в Community Edition, что позволит нам получить их в Android Studio, естественно с задержками.
#Kotlin #Multiplatform #Podcast

Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock

Поговорили c Android разработчиками из компании IceRock об их опыте разработке на Kotlin не только под Android, но и под iOS с использованием Kotlin Multiplatform: как прошел этот переход, пришлось ли изучать множество новых технологий, помогло ли им это развиваться и улучшило ли это скорость написания проектов и их качество.
#JetpackCompose

Если вы следите за развитием Jetpack Compose, то вам стоит обратить внимание на официальный пример JetNews. В develop ветке репозитория обновляется все на основе последних изменений в snapshot версии Jetpack Compose.
#Codelab #Coroutines #ArchitectureComponents

Advanced Coroutines with Kotlin Flow and LiveData
Продолжительность: 57 минут

В библиотеках ViewMode, Lifecycle и LiveData 2.2.0 было добавлена расширенная поддержка Kotlin Coroutines:
👉 Специальный билдер liveData {}, который внутри может выполнять suspend функции
👉 Конвертация Flow <-> LiveData
👉 Поддержка запуска Coroutine с Lifecycle и соответсвующие CoroutineScope в Fragment и Activity

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

Почему стоит обратить внимание на Flow?
1️⃣ Это полностью нативный для Kotlin способ для работы с реактивными потоками данных
2️⃣ Он проще чем RxJava. Написать свой оператор намного проще
3️⃣ Flow быстрее RxJava и других существующих реализации Rx на Java/Kotlin (тесты есть в репозитории kotlinx.coroutines)
#Kotlin #Coroutines #Flow

Instant Search with Kotlin Coroutines

В продолжение темы работы с Coroutine Flow - в статье разбирается задача организации поиска «на лету» (по мере ввода) в UI для Android на основе Flow.
#Coroutine

В последнее время я нахожу много материалов по Kotlin Coroutine. Думаю, что это связано с тем что Kotlin Coroutine активно пропагандируются командой Android для решения асинхронных задач и то что Flow - это способ решения задач для обработки потоков данных (замена RxJava). С одной стороны я понимаю, что пропаганда этого подхода - закономерный шаг при лозунге «Kotlin First» в Android. Но что там с альтернативами? На подходе RxJava 3, есть Reaktive - Rx на чистом Kotlin, возможно кто-то строит асинхронные запросы на основе стандартного API в Android SDK/JDK.

Не могу скрывать, что я и сам придерживаюсь подхода Kotlin Coroutine. Тяну ли я Coroutine в свои проекты - регулярно! Я люблю поделиться своим опытом или рассказать о результатах интересных исследований, поэтому выступаю с докладами, в рамках которых я имею возможность проводить краткие опросы. Результаты опроса «Используете ли вы Coroutine?» меня печалят - большая часть зала пользуется RxJava для асинхронных задач.

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

Присоединяетесь к обсуждению в @android_broadcast_discussions
#Kotlin #CodeQuality

Вышел Detekt 1.3.0

Вышла новая версия утилиты для проверки качества Kotlin кода. В обновлении произошли следующие важные изменения:
👉 Новые правила: UnnecessaryAnnotationUseSiteTarget и MapGetWithNotNullAssertionOperator
👉 Минимальная поддерживаемая версия Gradle выросла до 5.0
👉 Исправление багов
👉 Улучшения в документации
#Git #Tests #Modularization

Selectively running Android modularized unit tests on your CI server

Рецепт как запускать тесты только в тех модулях, в которых произошли изменения в вашем ПР. Это позволит уменьшить количество применяемых тестов и быстрее проверять ПР.
#News

Для всех кто слушает подкаст от Android Broadcast и любит Apple сервисы есть радостная новость - подкаст стал доступен в Apple Podcasts.

Для тех же кто пользуется Android подкаст можно найти в SoundCloud и Pocket Cast. Пишите в личку @krlrozov, если хотите увидеть подкаст и в других ваших любимых сервисах.
#MotionLayout #Animation

MotionLayout: A new way to create animations on Android

Обещанного 3 года ждут? Мы ждали Motion Editor всего 2 😁. Уже в Android Studio 4.0 Motion Editor доступен всем! Теперь мы получили удобный визуальный редактор для анимаций и пора вспомнить, что было и как MotionLayout меняет игры в анимацию!
#Новости

Всем привет! Вот уже пошел третий день как на канале не появляются новости. Я не ленюсь и все также смотрю и читаю новости, пытаюсь найти что-то интересное, но видно все авторы ушли в новогодние 🎄и рождественские 🔔праздники, в связи с чем и контента пока будет меньше чем обычно.

Вы всегда можете поскролить вверх, посмотреть ранние статьи или нажать хэштег и найти всё по интересующей вас теме.
#BestPractices

The Seven (Actually 10) Cardinal Sins of Android Development

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

В статье разбираются ошибки, которые не стоит допускать в вашем коде. С чем-то из этого вы будете знакомы, а с чем-то нет:
👉 Статические ссылки на Android компоненты с жизненным циклом (Activity/Fragment/View и др.)
👉 Неправильно получение ссылки на Fragment
👉 Хранение Fragment в FragmentPagerAdapter (ViewPager)
👉 Аргументы в конструкторе Fragment
👉 Задание переменных Fragment с использованием set функций при создании
👉 Не сохранять состояние через в Bundle при использование ViewModel
👉 Загружать данные только при savedInstanceState == null
👉 Инициализация Fragment в некорректном состоянии
👉 Переопределение onResume()/onPause() для всего подряд
👉 Не final static переменные
#LiveData #Kotlin #Nullability

Improving LiveData nullability in Kotlin

Не раздражало ли вас, что при объявлении LiveData<Value> в Kotlin, вы все равно можете получить null в Observer или задать null значение через LiveData.value?

Проблема заключается в том, что LiveData написана на Java и ничего не знает о системе типов в Kotlin и особенностях Generic. Исправить это через -ktx библиотеки не получится, так как надо переписывать LiveData на Kotlin или иметь спец аннотации для Java, чтобы обеспечивать совместимость.

В статье автор описывает не самое красивое решение, но эффективное - создание подкласса MutableLiveData с полной поддержкой Kotlin.
#Coroutines #Flow #Reactive

Back-pressure in Kotlin Flows

Back-pressure - это та вещь про которую надо задумываться когда вы работает с Reactive подходами. Back-pressure - это когда источник данных посылает новые данные быстрее чем им может обработать подписчик. Из-за этого возникает необходимость задания политики что делать с очередью данных.

В статье разбирается как об Back-pressure не надо задумываться когда вы используете Coroutine Flow, благодаря suspend функциям и принципам их работы.
#AndroidX #Browser

AndroidX Browser 1.2.0

Вышла новая мажорная версия библиотеки Browser 1.2.0 в которой произошли следующие ключевые изменения:
👉 Поддержка Trusted Web Activities вышла в Stable
👉 Поддержка темной темы для ChromeCustomTab
👉 CustomTabsSession может быть создана с заданным заранее id, что позволяет объединять сессию с одного клиента для последовательно запущенных CustomTab
#Dagger #IDEA

Introducing Scabbard: Easily visualize Dagger 2 dependency graphs

Это случилось - плагин для визуализации графа зависимостей Dagger 2. И называется это счастье - Scabbard. Он позволяет увидеть Component, Subcomponent, зависимости, их Scope и отношения между ними.

Проект еще в разработке и находится в версии 0.1.0
👉 Gihub проекта
👉 Инструкция по настройке
This media is not supported in your browser
VIEW IN TELEGRAM
Пример визуализации графа из Android Studio