После покупки Google-ом Fabric все части платформы стали интегрироваться или заменяться сервисами в Firebase.
Этого постигло и сервис Fabric Beta на замену которому пришёл Firebase App Distribution. С помощью этого сервиса вы можете распространять тестовые сборки вашего Android или iOS приложения. Есть Gradle Plug-in, поддержка Fastlane и CLI.
В статье вы найдёте интро по сервису и как настроить его интеграцию в Gradle
Внимание: Fabric будет отключена 31 марта 2020 года и миграция для всех пользователей этого сервиса обязательна
IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor
Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.
Как можно оценить производительность вашего приложения? Стандартный способ - подключить кабелем телефон к вашему компьютеру и запустить Android Studio. Потом вы можете с помощью встроенных средств IDE выполнить проверки.
Но вышеописанный способ не является единственным. Можно воспользоваться инструментов из "Developer Options" прямо на устройстве. Там вы сможете найти: 👉Layout Inspector - отрисовка границ View на экране 👉Simulate Display Cutout - симуляция выреза в дисплее 👉 Изменение Minimum Width (dp) 👉Don’t Keep Activities - уничтожение Activity когда они пропадают с экрана 👉Profile GPU Rendering - проверка успевает ли ваш UI отрисоваться и не допустить просадки 60 FPS 👉Strict Mode 👉Animator duration scale/Transition animation scale - настройка воспроизведения анимации 👉Night Mode - принудительное включение темной темы
и много много других, о которы вы можете найти все подробности в статье
8 января я, Кирилл Розов, автор канала Android Broadcast и Ильмир Усманов, разработчик компилятора Kotlin в JetBrains запишем подкаст на тему того, как обеспечивается работа Coroutine на уровне компилятора: 👉 Как работают Сoroutine под капотом 👉 Оптимизация кода компилятором 👉 Нужно ли разработчику запариваться как вызывать suspend функции определенным образом для более оптимального байт кода 👉 Как эффективнее вызывать suspend функции 👉 Coroutines в JVM/Native/JS 👉 Какие оптимизации ждут Coroutine в новом JVM Backend 👉 Дебаг Coroutine
Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку ViewModel + SavedStateHandle + Dagger 2.
Почему это важно изучить? ViewModel не сохраняет своё состояние при пересоздании процесса, а только при изменении конфигурации, поэтому нужно использовать SavedStateHandle
Как часто в UI вам приходится добавлять View, которые показываются по условию? Один из самых распространённые случаев - это показ UI при ошибках, отсутсвие сети или данных.
Как решают такую задачу разработчики? Зачастую просто складируют весь UI в одном Layout XML и используют visibility=“gone|visible”. Но проблема в таком решение заключается, что все View у которых видимость gone и не отрисовываются на экране, но приложение тратит время на их парсинг, создание и добавление в иерархию, хотя по сути эти View могут даже не понадобиться вовсе.
В Android SDK уже давно есть решение этому - ViewStub, которое позволяет вызывать inflate Layout XML отложено.
Погрузился в исследование каналов по IT тематике на русском языке и наткнулся на канал @itbook_ru.
На канале можно найти множество полезных материалов из мира программирования: 📙 Книги с кратким описание и ссылками на скачивание 🎥 Обучающие видео и записи лекций 👉 Полезные статьи
Канал ориентирован не только на айтишников, но и на тех, кто хочет узнать об этой сфере деятельности больше. Подписывайтесь и узнайте еще больше нового и полезного!
Разбор Channel для предоставления набора значений (горячего): 👉 Что такое Channel и с чем он схож 👉offer() vs send() 👉poll() vs receive() 👉 Закрытие Channel 👉close() vs cancel() 👉 Типы Channel: Rendezvous, Buffered, Unlimited, Conflated
ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех Activity, в котором вы выполняете общие действия, или элегантно решить архитектурную задачу или сделать много чего еще полезного, о чем автор рассказывает в статье: 👉 Изменять темы для всех Activity 👉 Отловить onActivityResult() 👉 Отслеживать запускаемый экраны для аналитики 👉 Улучшить inject зависимостей через Dagger Android
Если вам нужно отслеживать через callback жизненный цикл Fragment, то вы можете использовать FragmentLifecycleCallbacks.
Авторы LeakCanary рассказали о том, как они отслеживают утечки памяти в проде и уже не пропускают ни одной из таких проблем 3 года. Делают это они с помощью выгрузки leak trace на Bugsnag. Как это реализовать вы можете найти по ссылке.
Пример как будет выглядеть отчёт в Bug Snag можно найти в посту ниже ⬇️⬇️⬇️