Size: a a a

Android Broadcast

2020 July 10
Android Broadcast
#UI #ServerDrivenUi

Beagle - еще одно решение для реализации концепции Server-Driven UI. Эта концепция позволяет управлять интерфейсом приложения с бэкенда.

Особенности Beagle:
👉 доступно использование для Android, iOS, Web
👉 используется декларативный UI подход
👉 под капотом применяется Yoga Layout  
👉 примеры кода на Kotlin и Swift
👉 имеется хорошая документация с руководствами
👉 документация для реализации подхода и со стороны бэкенда (примеры кода микросервиса тоже на kotlin)
👉 есть playground - где можно попробовать описать компоненты и страницы в json формате
👉 позволяет управлять контентом, визуальной структурой и действиями.

Действия, это например:
👉🏼 отправка http(s) запросов
👉🏼 показ диалогов и алертов
👉🏼 навигация внутри приложения
👉🏼 открытие url-ссылок в стороннем браузере
👉🏼 и также есть возможность реализовать собственные действия
источник
Android Broadcast
#Kotlin #Generics

Generics in Kotlin

Хороший разбор основных понятий Generic в Kotlin:
👉 Type vs Class vs Subtype
👉 Вариативность
👉 Ковариативность
👉 Контрвариант
👉 Инвариант
👉 Type projection
👉 Star projection
👉 Затирание типов
👉 reified
источник
Android Broadcast
#GooglePlay

Обновление политики Google Play от 8 июля 2020

Что нового:
👉  Политики для новых приложений теперь будут применяться одновременно с существующими, а не как раньше - в день объявления о новых политиках
👉  Больше информации о том, какую политику нарушает ваше приложение и скриншоты, где это обнаружено
👉  Новые требования для приложений в категорию "Новости"
👉  Новые требования по модерации контента в AR, генерируемого пользователям. Например, нельзя разместить его в зоне военной базы или частной собственности.
👉  Обновленные требования по участии в категории "Приложения для семьи и детей"
👉  Новые требования по размещению рекламу, например нельзя будет показывать нескрываемую рекламу дольше 5 секунд в местах, где это нарушает нормальную работу приложения
👉  Новая политика Mobile Unwanted Software (MUwS).

Новые политики вступают в силу 12 августа 2020

Доступ ко всем файлам
👉  Приложения теперь должны запрашивать доступ только к тем директориям, которые критически для их работы
👉 Разрешение MANAGE_EXTERNAL_STORAGE для приложения с targetSdk = 30 (Android 11) будет доступен только с начала 2021 и по критериям, одобренными Google Play. До этого времени размещать приложения с объявлением этого разрешения нельзя
👉 Изменения касательно работы с файлами вступают в силу в начале 2021. Пора готовиться!
источник
Android Broadcast
#Animations

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

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

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

Implementing In-App Updates in Android

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

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

Tick Tock: Desugaring and Timezones

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

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

Huawei объявляет конкурс приложений с призовым фондом в 1 млн. долларов

Конкурс инновационных приложений Huawei под названием Apps UP приглашает разработчиков со всего мира создавать инновационные приложения с использованием HMS Core. Разыгрывается 1 миллион долларов!
источник
Android Broadcast
#AndroidBroadcast #Kotlin #Coroutines

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

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

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

With the receiver in scope

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

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

BaseActivity and BaseFragment are monsters

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

Preventing Android App Cloning

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

В статье можно найти советы, как защитить свое приложение от клонирования. Также вам стоит подумать, что если эта функция имеет место и популярна у пользователей, то вам стоит задуматься об интеграции ее в своё приложение
источник
Android Broadcast
#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 стала самой быстрорастущей версией ОС за всю историю зеленого робота.
источник
2020 July 15
Android Broadcast
#Android11 #Gradle

Preparing your Gradle build for package visibility in Android 11

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

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

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

Вышел OkHttp 4.8.0

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

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

Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
источник
2020 July 16
Android Broadcast
#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 и как это работает
источник
Android Broadcast
#Android11

Improving app startup with I/O prefetching

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

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

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

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

Support for newer Java language APIs

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

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