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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#новости

Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor

Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.

Также AppTractor является домом для ребят из Android Dev Podcast (там можно найти их страничку).
#IDEA #Statistics

What's new in IntelliJ IDEA

IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
#IDEA #Performance

Графики улучшений производительности IntelliJ IDEA за 2019 год
#Firebase

Firebase App Distribution - Distributing test releases of your apps

После покупки Google-ом Fabric все части платформы стали интегрироваться или заменяться сервисами в Firebase.

Этого постигло и сервис Fabric Beta на замену которому пришёл Firebase App Distribution. С помощью этого сервиса вы можете распространять тестовые сборки вашего Android или iOS приложения. Есть Gradle Plug-in, поддержка Fastlane и CLI.

В статье вы найдёте интро по сервису и как настроить его интеграцию в Gradle

Внимание: Fabric будет отключена 31 марта 2020 года и миграция для всех пользователей этого сервиса обязательна
#UI

Edge-to-Edge - Android library for enabling edge-to-edge content and insetting views using simple Kotlin DSL

Android 10 стал активнее развивать идею «Edge-to-Edge», когда приложение занимает всю область экрана.

Одной из реализаций этого тренда стала поддержка навигации жестами и новые типы WindowInsets:
👉 MandatorySystemGestureInsets
👉 StableInsets
👉 SystemGestureInsets
👉 SystemWindowInsets
👉 TappableElementInsets

Однозначно стало все сложнее. Библиотека «Edge-to-Edge» призвана упростить работу с WindowInsets
Вы можете подробнее изучить тему Android Insets из Android 10, посмотрев доклад Константина Цховребова - «Android Insets — deal with fears and get ready for Android Q»
#UI #Audio

AudioRecordView

Библиотека для визуализации аудио во время записи
#Gradle

Decommissioning HTTP for Gradle Services

Начиная с 15 января 2020 Gradle сервисы станут доступны только по HTTPS. Если вдруг у вас что-то перестанет собираться - обратите внимание.

Что будет затронуто:
👉 Gradle Plugin Portal (plugins.gradle.org/m2)
👉 Gradle Distributions - сервис для загрузки Gradle Wrapper

Проверьте в своем проекте distributionUrl в файле gradle/wrapper/gradle-wrapper.properties
#Tests #Intro

Серия статей которая делает вступление в типы тестирования на Android и с помощью каких инструментов их можно осуществлять

Статьи:
1️⃣ Типы тестов, пирамида, основные библиотеки и инструменты
2️⃣ Non-instrumented (они же Unit) тесты, Robolectrics
3️⃣ Instrumented тесты: UIAutomator, Espresso
4️⃣ "End-to-End" и ручное тестирование: Appium, типы "End-to-End" тестов
У меня всегда была мечта сделать конференцию для Android разработчиков. Только по этой технологии и все что связано с ней. Но мир суров и на любую конференцию нужен бюджет и аудитория. Очень хочется узнать интересно было ли вам прийти на такую конференцию.

Давайте обсуждать в @android_broadcast_discussions
#Kotlin #Operator

Companion object invoke operator overloading for default constructor argument in generic classes

Встречались ли вы с возможность, что вы можете создать объект интерфейса через конструктор? Спобов для этого 2:
👉 Создать функцию c именем интерфейса в том же пакете где лежит интерфейс (например так делается для List)
👉 Переопределить оператор invoke

В статье разбирается пример как invoke оператор помог задать дефолтное значение в конструкторе, в котором принимается generic параметр
#JetpackCompose

A Deep Dive Into Jetpack Compose

"This article is not about how to use Jetpack Compose or its basics" - вот такой фразой начинается статья. В статье разбирается почему нам нужно заменить систему View и как это делается в Jetpack Compose
#Coroutines

Android Broadcast Podcast #4: "Coroutines Under The Hood" c Ильмиром Усмановым

Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллионы разработчиков ждут покорения новых вершин.

Ильмис Усманов - разработчик Kotlin/JVM компилятора в JetBrains. За его плечами 6 лет опыта разработки компиляторов, 2 из которых - поддержка Coroutine в компиляторе. Также наш гость контрибьютил в ART (Android Runtime).

В выпуске вы узнаете:
- Как устроиться в JetBrains
- Как развлекаются программисты из JetBrains
- Coroutine в Jetpack Compose
- Почему релиз Jetpack Compose может затянуться
- Новый IR backend Kotlin компилятора
- Что будет в Kotlin 1.4 для Coroutine
- Jake Wharton исправляет байт-код от Kotlin/JVM
- Какие возможности могут появиться в Coroutine в будущем
- Улучшения в дебаггере IDEA для поддержки Coroutine
- Inline кода, благодаря которому Flow работают так быстро

Полезные ссылки:
👉 Coroutines Keep
👉 Доклад про inline Coroutine от Ильмира
👉 Kotlin Flow
👉 Kotlin Slack
👉 Kotlin Telegram
#Kotlin

Safely accessing lateinit variables

Рецепт безопасного обращения к lateinit переменным в Kotlin, которое появилось в версии 1.2:
lateinit var fullName: String

if (::fullName.isInitialized) {
print("Hi, $fullName")
}

Только не проще ли бы использовать nullable property и использовать null со старой доброй проверкой if (fullName != null).

Моя рекомендация - не стоит убегать от nullable значений, lateinit должно использовать только в случаях когда у вас инициализация происходит не в конструкторе, а в методе который вызывается сразу за ним, например Activity.onCreate(). Причем метод откуда приходит значения не должен быть асинхронным.

Заменить lateinit можно nullable property или делегатом lazy. А вообще используйте его только с Dagger в Android компонентах.
#MotionLayout #Animation

Creating Onboarding Flow with MotionLayout

MotionLayout и визуальный редактор анимаций на его основе уже стучатся в дверь в Android Studio 4.0. В статье автор разбирает как с помощь нового Layout сделали красивую анимацию Onboarding с Bubble
#Kotlin #CodeQuality #Coroutines

Вышел Detekt 1.4.0

Вышла новая версия статического анализатора Kotlin кода Detekt 1.4.0 в которой появилась поддержка правил для Coroutine. Полный список изменений:
🔥 Новая категория правил coroutines
🔥 Новое правило GlobalCoroutineUsage, которое отслеживает использование GlobalScope. По умолчанию выключено
🔥 Новое правило RedundantSuspendModifier, которое проверят,что suspend модификатор указан только там, где это нужно. Например, у функций у которых есть вызов других suspend функций
👉 KtLint обновлён до 0.36.0
👉 Свойства ignoreOverriddenFunction и ignoreOverriddenFunctions для некоторых правил унифицированы в одно - ignoreOverridden
👉 Улучшен анализ кода некоторыми правилами
👉 Исправление багов
#Gradle

Optional dependencies are not optional

Gradle в версии номер 6.0 добавил много возможностей для управления зависимостями. Также этому помогло введение в боевой режим Gradle Module Metadata, который позволяет описывать больше информации по сравнению с pom.xml.

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