Android Broadcast – Telegram
Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#GooglePlay #InAppUpdates

How Pandao Uses the In-App Updates Flexible Flow to Speed up the App Update Process on Android

Не так давно Google дала всем разработчикам доступ к In-App Updates, которая позволяет обновлять приложение изнутри. Разработчики из Pandao делятся тем как интегрировать работу с библиотекой и какой эффект ее применения.
#Kotlin #Conference #Minsk

7 сентября пройдет крутейшее событие в Беларуси по Kotlin - Kotlin/Everywhere Minsk. Вас ожидают известные спикеры из-за рубежа и нашей страны и классный материал по использованию Kotlin!

В списке спикеров уже подтверждены:
👉 Мarcin Moskala@KtAcademy
👉 Ильмир Усманов@JetBrains
👉 Marharyta Nedzelska@WIX, Kiev Kotlin User Group Lead
👉 Леонид Старцев@JetBrains
👉 Олег Семен@Lviv Kotlin User Group Lead
👉 Nicolas Fränkel@Exoscale

Регистрация уже открыта. Спешите пройти по ссылке
#Kotlin #Dagger #BestPractices #DependencyInjection

Dagger in Kotlin: Gotchas and Optimizations

Dagger на сегодня является самым популярным DI для Android. Почему так? Он богат возможностями, не использует рефлексию и проверят ваш граф во время компиляции.

Для всех любителей Kotlin использование Dagger порой является неудобным и трудным в силу того, что эта библиотека изначально разрабатывалась для Java и до сих пор на официальном сайте нет полноценного руководства как ее лучше использовать с Kotlin.

Команда Android решила исправит это и дать ряд рекомендаций:
👉 Всегда используйте последнюю версию Dagger (сейчас это 2.24)
👉 Включите инкрементальную компиляцию Dagger в kapt
👉 При выполнение inject зависимости в непубличное свойство класса, задавайте квалификатор на поле
👉 Dagger работает эффективнее если зависимости в @Module предоставляются через статические методы. Используйте object для объявления @Module и добавляйте аннотацию @JvmStatic к каждому методу @Provides.
👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
Считаете ли вы набор таких рекомендаций (больше это "костыли") удобным при работе с Dagger в Kotlin?
Anonymous Poll
28%
Норм
63%
Dagger - это всегда была боль
8%
Нет
#RecyclerView #DiffUtil #UnderTheHood

Разоблачаем магию DiffUtil

RecyclerView - компонент который есть в любом приложение. Он имеет возможность с помощью анимации показывать изменения данных в нем. Делается это довольно непросто, поэтому Google дала нам DiffUtil - утилита, которая за нас вычисляет разницу и анимирует список.

Для тех кто хочет понять как работает эта магия (а называется она алгоритм Майерса) ты вы можете узнать это от ребят из Redmadrobot. Объясняют довольно доступно и с красивыми иллюстрациями.
Переключение языка в Android-приложении

Как часто к вам приходит заказчик со своим видением как должно работать приложение в Android? Например, как должен меняться в нем язык (и плевать что этот функционал заложен в системе).

В статье вы найдете руководство как реализовать такую фичу и чтобы форматирование данных и разметка у вас были соответствующими.
#AppBundle #ManifestMerger

Hunting a bug — A True App Bundle Debugging Story

При сборке вашего приложения одним из шагов является запуск Manifest Merger - утилиту, отвечающую за сбор манифестов из всех aar зависимостей, модулей и основного приложения, и получения финального AndroidManifest, который добавляется в APK.

В статье рассказывается как при использование App Bundle разработчик столкнулся с непонятным багом и каким путем прошел, чтобы найти проблему с объединением AndroidManifest. Я сам сталкивался с такими же проблемами, так как не всегда ошибки, не позволяющие вашему приложению нормально работать, приводят к ошибки во время сборки.
#GooglePlay

Make stronger decisions with new Google Play Console data

Google Play представило обновление, которое позволяет вам эффективнее измерять и анализировать статистику вашего приложения!
#GestureNavigation #AndroidQ

Gesture Navigation: Going edge-to-edge

В Android Q была добавлена новая система навигация жестами. Это новинка позволяет приложениям отображаться от края до края вашего экрана! В статье разбирается все особенности новой фичи и адаптации вашего приложения к ней.
#UnderTheHood #Text #Performance

Отображение текста в Android

Отображение текста одна из самых тяжелых графических операций в UI, так как для того чтобы нарисовать текст нужно сделать множество просчетов. Отключение переноса слов и перенос measuring текста в фоновый поток значительно разгружают ваш UI. Что же такого происходит под капотом в TextView?

В статье вы найдете подробный разбор как объекта строки превращается в картинку на экране:
👉 Нативные библиотеки под капотом
👉 Как происходит перенос текста на новую строку
👉 Использование различных стилей в TextView
👉 Spanы
👉 Как текст располагается в TextView
👉 Оптимизация производительность TextView
#Retrofit #Coroutines #UnderTheHood #JakeWharton

Exceptions and proxies and coroutines, oh my!

В Retrofit 2.6.0 была добавлена поддержка Kotlin Coroutine - функции в интерфейсе Retrofit можно помечать ключевым словом
suspend
. Что стоит за этой реализацией? Какие образом Java Dynamic Proxy может работать с Coroutine? В своей статье Jake делает разбор
#Gradle #Performance

Incremental testing for Gradle multi-projects

Когда ваш проект имеет множество модулей, это позволяет ускорить сборку. А как насчет того чтобы выполнять задачи только на модулях, в которых произошли изменения и зависимых от них? Например тесты и проверку стиля кода

В статье рассматривается как из Gradle найти изменения в Git и запустить тесты только для измененных модулей.
#AndroidX #AndroidXWeekly

AndrodX Weekly Update #2

Последняя неделя подарила нам только один апдейт - WorkManager 2.2.0-rc01, который содержит багфиксы по сравнению с последней beta версией.
#AndroidLint #DarkTheme

Making Android Lint Theme Aware

При добавление поддержкой темной темы в ваше приложение необходимо убедиться, что вы не используете хардкорно заданные цвета. Лучший вариант - это автоматизировать такую проверку. Например, с помощь Android Lint.

В статье рассматривает как написать такую проверку самостоятельно. Исходный код примера можно найти здесь.
#Kotlin #KotlinAndroidExtensions

Kotlin Android Extensions: Using View Binding the right way

Для всех тех кто использует Kotlin Android Extensions для View Binding важно знать как правильно реализовывать его эффективно. LayoutContainer позволяет использовать кэширование View для кастомных контейнеров, например ViewHolder в RecyclerView.
Пример использования Layout Container
#Architecture #ArchitectureComponents #AndroidX #MVVM

С появлением Architecture Components в Android реализация MVVM на основе этих компонентов стала очень популярна. Я и сам выбираю такое решение в связи с тем, что она имеет множество позитивных моментов:
👉 Решение популярных задач в архитектуре Android приложений
👉 Хорошая документация: статьи, видео, примеры и Codelab
👉 Интеграция с инструментарием для разработки
👉 Поддержка от Google
👉 Большинство разработчиков знают как ее реализовывать и это способ единообразен из-за одного источника правды (Google). Это уменьшает время на обучение стажеров и интеграцию новых людей + между проектами становится общий стандарт
👉 Интеграция между различными библиотеками из Architecture Component так и сторонними (RxJava, Kotlin Coroutines)

Я не считаю ее идеалом, но Arch Components значительно упрощают создание приложений на Android и дает взгляд на архитектуру приложений от создателя Android SDK.
#Conference #Minsk

Йонатан Левин приедет 9 августа на Mobile People Day и расскажет как строить архитектуру на современном стеке, который предлагает Google, эффективно и правильно.
#Style #DarkTheme #Material #BestPractices

Темы и стили в Android-приложениях

Возможности кастомизации View на основе ресурсов style и атрибутов довольно обширны. В статье вы найдете подробный разбор:
👉 Отличия между темой, стилей, ThemeOverlay
👉 Что такое атрибут
👉 Как работает механизм кастомизации View на основе стилей
👉 Реализация Material Design 2.0 (Material Components)
👉 Как правильно работать со стилями, чтобы поддержать темную тему
👉 Советы по работе со стилями
#Firebase #RoboTest #Testing

Firebase Robo Test - это инструмент, которые умеет анализировать структуру UI вашего приложения и затем осуществлять клики по элементам, осуществляю навигацию, так же как это делают пользователи. Robo Test также используются для Google Play Pre-launch отчетов.