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
#Animations

Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet

Наличие анимаций делает приложение более приятным для использования, однако их добавление - не всегда самая простая задача, особенно когда это касается BottomSheet.

Авторы статьи пытались использовать animateLayoutChanges, setCustomAnimations для FragmentTransaction, Shared Element Transition, но в итоге остановились на кастомном Transition. Так же рассматриваются альтернативные способы и почему они не были использованы.
#GooglePlay

Implementing In-App Updates in Android

Обновление приложения может быть критически необходимым, например, в случае проблем с безопасностью или в случае падения. Однако не у всех пользователей установлено автоматическое обновление приложений в Google Play. Чтобы решить эту проблему, можно воспользоваться In-app обновлениями из Play Core library.

В статье рассматривается 2 способа настройки обновлений:
👉 Flexible (выполняется в фоне, не прерывая пользователя)
👉 Immediate (полноэкраннный, требующий установки и перезагрузки приложения для дальнейшего использования).
#DateTime

Tick Tock: Desugaring and Timezones

В Android Studio 4 появился desugaring некоторых Java 8+ APIs, в том числе и java.time. Однако для таймзон по умолчанию используется java.util.TimeZone, которая зависит от рантайма, что является проблемой для Android, так как многие устройства уже перестали получать обновления, а только в 2019 году в мире было 7 изменений таймзон.

Чтобы решить данную проблему, была создана библиотека Tick Tock, которая использует провайдер таймзон, зависящий от вшитого словаря.
Какую библиотеку как основную вы используете для работы с датой и временем при разработке Android приложений?
Anonymous Poll
46%
Старый java.util.Datе
10%
Java 8 Date/Time API
16%
ThreeTen или ThreeTenABP
14%
Joda Time
1%
Другая библиотека
1%
Не разрабатываю под Android (вообще или нативные приложения)
12%
Не учавствую в опросе
#AndroidBroadcast #Kotlin #Coroutines

Библиотеки kotlinx.* (Livestream)
Когда: вторник, 14 июля, 20:00 (GMT+3)

Обсуждаем библиотеки Kotlin с их разработчиком. В программе Coroutines, Serialization, IO, DateTime, Стандартная Библиотека, новинки Kotlin 1.4 и ближайшее развитие экосистемы Kotlin.

В гостях Всеволод Толстопятов из JetBrains. Всеволод занимается библиотеками и экосистемой вокруг Kotlin с фокусами на Coroutines и Serialization.
#Kotlin

With the receiver in scope

Kotlin поддерживает 2 типа функций:
👉 Обычные (T) -> E
👉 С Receiver-ом T.() -> E

Функции с receiver-ом позволяют сделать код более читабельным в отдельнх случаях, но всегда ли стоит прибегать к ним? Ответ - нет! Не стоит ставить во главу минимальное количество строк и символов в коде. Главное требование должно быть легкая читаемость кода разработчиками
#Activity #Fragment

BaseActivity and BaseFragment are monsters

Y вас есть BaseActivity и BaseFragment в проекте? Если да - вам стоит обратить внимание на статью, где автор рассказывает что это за монстры и как их избегать:
👉 Наследование от классов из Jetpack
👉 Extension-функции
👉 ActivityResultContract
👉 Lifecycle callback
#AppsCloning

Preventing Android App Cloning

"Клонирование" приложения - возможность запускать 2 инстанса одного приложения на одном и том же устройстве. Некоторые производители устройств добавляют такую функцию в свою прошивку из коробки, создавая фейкового пользователя для запуска второй копии приложения. Так же в маркете есть приложения, дающий схожий функционал, создавая некоторое подобие песочницы внутри своей /data директории. В обоих случаях приложение может работать нестабильно, например при попытке доступа к файловой системе.

В статье можно найти советы, как защитить свое приложение от клонирования. Также вам стоит подумать, что если эта функция имеет место и популярна у пользователей, то вам стоит задуматься об интеграции ее в своё приложение
#Android

Accelerating Android Updates

В последние годы Google делает множество попыток ускорить обновление Android устройств до новых версий ОС:
👉 Project Treble - отделение OEM и SoC зависимостей от основного кода ОС
👉 Generic System Images - чистый образ Android (без модификаций AOSP)
👉 Project Mainline - обновление части компонентов ОС через Google Play (безопасность, приватность и др.)
👉 Обновление других важный компонентов ОС: авторизациях, push уведомления, Google Play Protect, WebView и др.

Все это дала своё результаты - Android 10 стала самой быстрорастущей версией ОС за всю историю зеленого робота.
#Android11 #Gradle

Preparing your Gradle build for package visibility in Android 11

В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию <queries>. Поддерживается она только в Android Gradle Plug-in 4.1 выше поэтому без обновления не обойдётся
#Android11 #Notifications

People Notification
4 минуты чтения

В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
#Network

Вышел OkHttp 4.8.0

👉 Работы в направление отказа от зависимости Bouncy Castle в okhttp-tls
👉 Улучшения для приложений с большим количеством параллельных запросов
👉 Обновление до Okio 2.7.0
👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier"
👉 Баг фикс
#Testing

Юнит-тесты переоценены

Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
#Kotlin #R8 #Reflection

Shrinking Kotlin Libraries and Applications using Kotlin Reflection with R8

В R8 добавлена поддержка работы с Kotlin Metadata. Новый функционал доступен, начиная с Android Gradle Plugin 4.1.0-beta03.

В статье разбирается, что такое Kotlin Metadata и как это работает
#Android11

Improving app startup with I/O prefetching

Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)

IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.

Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.

В статье вы найдете множество графиков и подробности работы IORap на устройстве.
#Java8 #D8 #R8

Support for newer Java language APIs

Android Gradle Plugin 4.0 дал нам возможность вызывать Java API, которые появились в более поздних версиях Android SDK на всех предыдущих.

В статье вы найдете подробности о D8/R8 Java API Desugaring: как работает и какие API теперь стали доступны
#IDEA

Shared Indexes Plugin Unveiled

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

Для решения этой проблемы JetBrains представили новый плагин, который позволяет делиться частью индексации большого проекта.
#Coroutines

Вышла kotlinx.coroutines 1.3.8

Вышла новая версия Coroutine которая по большей части исправила баги. Появился новый оператор Flow.transformWhile
#Kotlin #DefaultMethod

Kotlin 1.4-M3: Generating Default Methods in Interfaces

В Kotlin 1.4 появится новый режим компилятора для default методов в интерфейсах с Java 8 Target. Вместо генерации отдельного класса со статическими методами, Kotlin компилятор сможет генерировать сразу Java 8 байткод, причем аннотация JvmDefault больше не понадобится.
#LiveData #Corotines #Flow

LiveData with Coroutines and Flow

Серия статей от гуглера о реактивном UI на основе Coroutine Flow. В серии статей рассказывается о:
👉 Реактивном UI
👉 Scope выполнения операций
👉 Почему Kotlin Coroutine хорошо подходят для решения асинхронных UI задач
👉 Интеграция Coroutines и Arch Components
👉 Отмена выполнения Coroutine
👉 Подходы для работы с LiveData и Coroutine в ViewModel