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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Obfuscation #Resources #Optimization

AabResGuard - A tool used to obfuscate aab resources

Чтоба защитить свой код от злоумышленников и оптимизировать его исполнение в Android разработке применяют R8/ProGuard. Но эти утилиты оптимизируют только Java byte code. А что с остальными файлами в AAB/APK? Ответ - ничего. Google не предоставляет каких либо инструментов для оптимизации ресурсов.

Энтузиасты решили исправить это и сделать тулзу, которая сможет выполнять с ресурсами:
🔥 Убрать дублирующиеся значения
🔥 Удалять ненужные файлы из папок META-INFO/ и lib/
🔥 Обфусцировать названия ресурсов
🔥 Удалять заданные строки из конечной билда

Проект пока находится в стадии разработке, но я с нетерпением жду стабильного релиза!
#RecyclerView #Sticky

Для всех тех кто реализует секции и sticky header в списках на основе RecyclerView появился новый игрок среди библиотек - StickyDecorator.

Библиотека легковесна и некоторые из декораций делает на основе Drawable, что позволяет достичь более высокой скорости работы по сравнению с View.
#AndroidStudio

Android Studio Design Tools UX Changes — Split View

До релиза Android Studio 3.6 осталось не так много времени.Одним из заметных нововведений для всех тех кто работает с UI станет изменение отображения Design Tool. Новый режим, который назван Design Tools Split View, заменивший старый Layout Preview, теперь позволяет на одном экране совмещать редактор UI в XML и визуальный редактор.

В статье рассказывается о преимуществах этого обновления (на мой взгляд очень спорных).
#MemoryLeak

Вышел Leak Canary 2.0

Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к OutOfMemoryError
👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками Fragment
👉 Новая библиотека Shark, которая используется LeakCanary для анализа и может запускать в любой Java VM. Также доступен CLI, который вы можете использовать с компьютера для сбора информации о расходе памяти с устройства


В обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
#Java #Java14

Пробуем улучшенный оператор instanceof в Java 14

Пока Android разработчики сконцентрировались на Kotlin (да и Google не собирается никого разворачивать от этого пути), разработчик Java нагоняют по наличию фичей современные языки-хипстеров. В Java 14 нас ждет аналог Smart Cast из Kotlin - Pattern Matching.
#Conference #Quiz

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

Купить билет на декабрьский Mobius в Москве со скидкой по промокоду mobius19mskAndroidBpc
#IDEA

IntelliJ IDEA 2019.3: Better Performance and Quality

Разработчики из JetBrains дали свой ответ Project Marble из Android Studio 3.5 и выпустили релиз своей IDE, направленный на улучшение производительности и фиксу багов. Улучшены различные аспекты: индексация проектов, анализ кода, скорость запуска IDE, улучшение работы многих функций IDE и др.

К сожалению, даже будущая Android Studio 4.0 базируется на IDEA 2019.2, поэтому высока вероятность что все эту стабильность мы сможем почувствовать только в Android Studio 4.1. Главное, чтобы код Google не сломал там все!
#Intro

What to consider when starting a new app development

На что стоит обратить внимание когда стартуете разработку нового Android приложения? Конечно же архитектуре, но также важно не забывать про особенности платформы и ее возможности. Автор статьи предлагает уделить внимание:
👉 Работа с местоположением
👉 Push уведомления
👉 Сбор аналитики
👉 Сбор информации о трекинга
👉 Авторизация
👉 Стиль приложения (Тема)
👉 Фоновые сервисы
👉 Локализация (не только переводы но и адаптация под другие регионы)
👉 Возможность работы с приложением без сети
👉 Анимации
#Firebase #CloudMessaging #PushNotification

Особенности работы с Firebase Cloud Messaging

В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷‍♀️

Чтобы не ходить по одним и тем же граблям, разработчики Redmadrobot собрали вместе все найденные неявности и рассказали на митапе Redmadrobot. 🤖

Главное, что надо запомнить:
‼️ если вы в настройках вызвали Force Stop, то ваше приложение совсем перестанет получать пуши до следующего запуска!
‼️ если в данных пуша нет поля notification, но есть поле data, то система ОБЯЗАТЕЛЬНО вызовет ваш сервис обработки пуша
‼️ если в данных есть поле notification, то система покажет уведомление сама ТОЛЬКО если приложение не на экране у пользователя (например, свернуто)

Вывод: лучше не используйте поле notification!
#DynamicFeature #GooglePlay

Exploring Dynamic Feature Modules at Swiggy

Google Play предоставляет хорошую возможность для ваших приложения - Dynamic Delivery. Эта функция, которая позволяет вам загрузить модуль вашего приложения, отложено. Когда это может быть полезно? Например в вашем приложение есть объемная по размеру функция, но пользуется ей небольшое количество пользователей или она специфична для определенных регионов.

Как сделать динамическую загрузку? Ваше приложение должно быть модулизировано (на основе Gradle модулей/проектов). дальше дело техники, которое описывается в статье
#Kotlin #BestPractices

Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.

Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
#Architecture #BestPractices

How to start writing reusable components for Android apps?

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

Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные View
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
#DependencyInjection #Dagger #AssistedInject #Square

Brave New Android World with AssistedInject

Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в Presenter. Раньше это решалось те, что создавался новый Dagger компонента, куда этот параметр передается.

Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
#Jetpack #AndroidX #ktx

Знаете ли вы все расширения для Kotlin из *-ktx библиотек? Где найти по ним документацию? Это можно сделать на сайте developers.android.com, если переключиться на формат документации в Kotlin.

Есть ли способ проще? Теперь да - полный список KTX расширений на официальном сайте. Рекомендую пройтись по списку, чтобы сделать ваш Kotlin код лучше и чище.
#ColorUtils

Contrasting text and icons over background

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

Добиться это можно если перекрашивать иконки с зависимости от картинок. Как это сделать? Нужно рассчитывать яркость и динамически менять иконку. Рецепт в статье
#Coroutines

Suspending over Views

Kotlin Coroutines позволяют интегрировать их подход с любым принципом, основанным на Callback-ах. Где в Android можно найти много callback-ов? Это система View в Android. В статье рассказывается как это сделать и каким образом этом может быть эффективно применить.
#DSL #Anko #Kotlin

Кладбище проектов пополнилось еще одним решением - Anko. Авторы написали прощальный MD, в котором объясняют причины закрытия проекта из-за сложностей развития отдельного функционала и появление хорошего аналога от Google в виде *-ktx. Создатели библиотеки предлагают мигрировать на другие решения, одним из которых является Jetpack Compose.
#CodeQuality #Kotlin

Вышел KtLint 0.36.0 в рамках которой вы найдете:
👉 новую возможность создания HTML отчетов
👉 Новые правила и улучшение старых
👉 Багфикс
#DeepLink

От веба до приложения за один DeepLink

Deep Link - это популярная функция любого приложения. Она позволяет связывать между собой ссылку на страничку и окном в установленном приложении. Что делать если приложение не установлено? Открыть страницу в браузере? Предложить установить приложение? Также помимо Deep Link в Android есть еще и App Link.

Как все это связать между собой? Как решить проблемы с редиректом в разных браузеров на разных платформах. В статье рассматриваются решения OneLink и Firebase Dynamic Link: принципы работы, трудности с которыми столкнулся автор, особенности работы с Chrome Custom Tab.

Firebase Dynamic Link оказалось лучшим решением так как его работа базируется на Google Play Services, что позволяет эффективнее обрабатывать случаи когда приложение не установлено.