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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
Android Broadcast
В прошлом году прошел первый курс SchoolKt. В начале следующего хочется сделать его продолжение. Какой формат вы хотели бы увидеть?
Спасибо всем кто поучаствовал в опросе. В ближайшее время я буду формировать программу и собирать команду. Буду рад услышать от вас предложения по темам. Присоединяйтесь в Slack SchoolKt чтобы обсудить что вы хотите услышать и увидеть на курсе. Сейчас именно вы влияете на программу!
#ArchitectureComponents #Navigation #DynamicFeature

Navigation with Dynamic Feature Modules

Android Architecture Components - набор библиотек, который решил много проблем Android разработчиков и дал множество простых решений, одним из который является Navigation, который упрощает переходы между экранами в Android приложениях.

В свою очередь Google до сих пор не представила стабильного решения (пока есть только SNAPSHOT сборки) для навигации по приложению, когда вы используете Dynamic Delivery.

В статье описывается способ как с помощью Deep Link и Activity медиатора для обработки все таких ссылок достигается зен Navigation + Dynamic Delivery.
#Animation

Easy Reveal Android Library

Библиотека, которая упростит вам создание анимации Reveal в разных ее проявлениях: круговой, волна, звезда и пр.
#Kotlin

Вышел Kotlin 1.3.60 и будущие изменения в Kotlin 1.4

В новой стабильной версии языка вас ждут следующие улучшения:
👉 Улучшение работы Inline классов
👉 Более подробные сообщения об ошибках
👉 IDEA: Улучшена поддержка Scratch файлов
👉 IDEA: Улучшена поддержка Gradle Kotlin DSL
👉 IDEA: Улучшение дебага
👉 IDEA: Улучшение автодополнения
👉 IDEA: Новый конвертер из Java в Kotlin

Также стало известно, что Kotlin 1.4 выйдет когда-то в 2020😁, но уже сейчас можно попробовать функции из новой версии, которые уже готовы:
👉 NPE assertions: теперь выбрасывается NullPointerException вместо IllegalStateException, в случае когда вы сталкиваетесь с null из Java кода в Kotlin, там где это не ожидается
👉 Break & continue внутри when
👉 Улучшения в tail-recursive функциях
👉 Запрет на использование open tailrec функций
#Testings

Pixel perfect UI: How to automatize automation testing on Android

Краткий рассказ о подходе к тестированию вашего UI по скриншотам для проверки что при изменении кода или ресурсов в одних местах у вас не едет код в других.
#AndroidDevSummit

Итоги Android Dev Summit 2019

Я давно обещал сделать подведение итогов Android Dev Summit 2019. Прошёл уже месяц, но в итоге я это сделал! Просмотрел много статей, видео и перечитал статьи. Видео содержит мое личное мнение по поводу множества новинок. Буду рад услышать и ваше в @android_broadcast_discussions
#Kotlin

Type-safe time calculations using Duration

В Kotlin 1.3.50 был добавлен новый класс Duration (в статусе experimental), цель которого избавиться от вечного использования long в качестве продолжительности и дать полноценные возможности и более строгие проверки в compile time для типов.

Duration - это inline класс и его влияние на производительность минимально.
#WorkManager

Unifying Background Task Scheduling on Android

Google проводит унификацию своих библиотек для выполнения задач в фоновом режиме. Суть проста - все мигрируем на WorkManager.

Если кто-то пользуется FirebaseJobDispatcher (FJD) или GCMNetworkManager (GCM), то вам пора браться за гайды по миграции: для FJD и для GCM. Поддержка FJD будет закрыта в апреле 2020, GCM - ноябрь 2020.

Если вы обновите targetSdk вашего приложения до Android 10 (API level 29), то FJD и GCM перестанут работать на Android 6.0+
#Calendar

Android Calendar Intent

Подробная инструкция того как работать с системным календарем в Android:
👉 Создать событие
👉 Открыть календарь на необходимой дате или событие
👉 Доступ к деталям события по id

Все описано очень хорошо и подробно!
#Kotlin

Kotlin Delegates in Android: Utilizing the power of Delegated Properties in Android development

Рассказ о возможностях Kotlin delegated properties для решения различных Android задач:
👉 Работы с аргументами в Fragment
👉 Работа с SharedPreference
👉 Работа с составными собственными View

Но помните, что делегаты имеет скрытую цену!
#Security

How to enable logging on any released Android app

Убираете ли вы логирование кода из релизного билда? Именно убираете а не отключаете. Когда в вашем коде остается возможность включить логи - это потенциальная дыра в безопасности и она подробно разбирается в статье.


Чтобы удалить логирование с помощью Logcat вы можете воспользоваться R8/ProGuard для удаления кода:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
#Room #SQLite

Database relations with Room

Статья о поддержки отношений между сущностями в SQLite с помощью аннотации @Relation в Room:
👉 1 - 1
👉 1 - N
👉 M - N

Плюс аннотации @Relation над полем, в том, что связанные сущности из другой таблицы будут запрашиваться автоматически.
#Gradle #AndroidGradlePlugin

Simple Guide to Android Product Flavors

Разбор в подробностях различных сборок приложения и как этот механизм реализован в Android Gradle Plugin c помощью Product Flavor и Build Type.
#JetpackWeekly #Benchmark #ViewPager2

Jetpack Weekly #12
🔥 Benchmark теперь стабильна. Начинайте измерять производительность вашего кода правильно!
🔥 ViewPager мертв. Да здравствует ViewPager2, который базируется на RecyclerView!
👉 RecyclerView 1.1.0
👉 Exifinterface 1.1.0
🛠️ Room 2.2.2 с исправлениями багов
#Podcast

Android Dev Podcast перешел в английскую версию.Новый подкаст - это не дубляж уже существующего, а возможности приглашение новых гостей.

Например, совсем недавно появился выпуск в котором Денис Неклюдов взял интервью у основателя и CEO Gradle Hans Dockter. В рамках Android Dev Summit ребята сделали обзор новостей с Florina Muntenescu, Android Developer Advocate в Google.
#AndroidBroadcastBreakfest #Minsk #Meetup

Всем привет! Общение - это то, что позволяет нам эффективнее делиться знаниями и понимать друг друга. Намного эффективнее что-то обсудить голосом, чтобы найти эффективное решение или вдохновиться мыслью.

В эту субботу (30 ноября) в 11.00 в Минске я предлагаю встретиться всем желающим в кофейне GrayHouse (пр. Дзержинского, 11, метро "Грушевка"). Формат проведения встречи - свободное общение.

Тема встречи - Dependency Injection:
👉 Настолько ли важная роль DI? Есть ли жизнь без?
👉 Как заставить Dagger стать удобным инструментом, а не причинять кучу боли
👉 Koin и Kodein - есть ли жизнь с ними в больших проектах
👉 Отказ от библиотек для DI и решение доставки зависимостей самостоятельно

Задавайте свои вопросы, слушайте разговоры, любое ваше участие важно и позволит вам улучшить свои знания!

Есть вопросы или другие вопросы для обсуждения - предлагайте их в @android_broadcast_discussions
#CodeQuality #Kotlin

Вышел Detekt 1.2.0

В новой версии появились следующие улучшения:
👉 Улучшен HTML отчет
👉 Поддержка отключения правил по группам
👉 Поддержка параллельной фаз компиляции и анализа
👉 Исправление работы правил
👉 Улучшение определение текста во множестве правил
#Dagger

Dagger Party Tricks: Refactoring

Dagger не прост, совсем не прост. Поэтому постигать его дзен можно всю свою карьеру разработчика, если она не закончится раньше чем вы сможете освоить полностью все. В статье вы найдете немного Dagger дзена.
#Kotlin #Parcel

A study of the Parcelize feature from Kotlin Android Extensions

В Kotlin 1.3.40 Parcelize стало стабильным, но только с версии 1.3.60 Android Studio перестало жаловаться, на его нестабильный статус, поэтому как никогда стоит напомнить, что есть способ сохранять ваши данные с использованием Parcel.

В статье разбирается как использовать библиотеку и какой код генерируется под капотом.
#Kotlin #Coroutines #Arhitecture

Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app

"Kotlin First" - лозунг современной Android разработки. В этом случае нельзя не использовать Kotlin Coroutines, чтобы максимально стремиться к этому принципу и получить все преимущества языка.

Авторы приложения для Android Dev Summit 2019 о том, как изменился их взгляд с появлением Flow в разработки Domain (UseCase) и Model (Repository, Data Source) слоев.

Обновление подхода просто. Если раньше ваш слой модели мог возвращать LiveData (например за наблюдением обновление обновление в Room), то теперь все это переходит во Flow и превращается в LiveData только в ViewModel. Если вам не нужно наблюдать за изменениями - используйте обычные suspend функции.

В статье также рассказывается как перейти со старых подходов на Flow и как применять его в новом API. Ну и как же без освещения тестирования!