Size: a a a

Android Broadcast

2019 January 22
Android Broadcast
#Podcast #Redex #Proguard

Inside Facebook Mobile‏: Android Bytecode Optimisation with Emma

Я уверен что большинство разработчиков знакомы с ProGuard, но слышали ли вы о решение для оптимизации dex файлов от Facebook - Redex? В подкасте обсуждается о необходимости оптимизации байткода и базовых принципах работы Redex.
источник
2019 January 23
Android Broadcast
#Library #Theme

Dynamic Support - а complete library to build Android apps with a built-in theme engine

Для меня одним из важнейших трендов в текущем развитие приложения является поддержка темной (ночной) темы. Почему? Во первых - это экономия батарейки, в особенности на OLED экранах, также это альтернатива яркому, слепящему цвету, и в принципе наличие выбора - это прекрасно!

Android имеет гибкий API по кастомизации на основе стилей и атрибутов, но есть одно но - вам надо перезапускать Activity, а то и вовсе все приложение 😞.

Библиотека Dynamic Support имеет свой собственный движок тем в приложение и позволяет более гибко менять стилизацию приложения во время его работы, без необходимости перезапуска.
источник
Android Broadcast
#R8 #Optimizations

R8 Optimization Part 3: Value Assumption

Jake Wharton не снижает обороты и радует нас новой статьей из серии об оптимизациях R8 с кодом. В последней части раскрывается анализ использования переменных.

Оптимизация которые стоит применять в таких случаях довольно логичны:
👉 удаление неиспользуемых переменных
👉 удаление веток кода в которых условия постоянны

В статье вы найдете подробности того, как такой анализ выполняется новым оптимизатором кода от Google, как можно избавиться от кучи кода из AndroidX если ваш minSdk выше 14 (спойлер R8 имеет возможность задания ограничения на возвращаемые значения методов).
источник
Android Broadcast
#Library #Localisation #OverTheAir

Philology - библиотека облегчающая распространение строк "по воздуху", без необходимости обновления приложения в Google Play.

С помощью механизмы подмены при обращении за строкой по ключу, она позволяет написать вам свой перехватчик, которые будет брать за строку откуда вам угодно: на сервер, в БД или читать из файлика.

Если хотите воспользоваться библиотекой, то сервер вам придется писать самостоятельно 😀, так что решение неоднозначное, потому что упростило только часть на работы на клиентской стороне.
источник
2019 January 24
Android Broadcast
#Kotlin #Update #Gradle

Вышел Kotlin 1.3.20

Вышло новое обновление Kotlin в котором реализованы:

👉 Поддержка параллельного выполнения Kotlin Gradle Task-ов на основе Gradle Worker API. Компиляция станет быстрее 🚀

Для включения параллельной сборки надо в gradle.properties добавить настройки:
    1️⃣ org.gradle.parallel=true
    2️⃣ kotlin.parallel.tasks.in.project=true

👉 Улучшена производительность kapt 🚀: добавлена поддержка Compile Avoidance, что позволит избежать необходимости генерации кода при некоторых изменениях кода

👉 Поддержка Kotlin Gradle DSL для сборки мультиплатформенных проектов

👉 Улучшения в inline классах: теперь можно объявить inline класс в inline классе и улучшена поддержка различных нетривиальных использований

👉 Улучшения в Kotlin/Native: Code contracts, улучшения interoperability, улучшена производительность

👉 Улучшения в IDEA плагине: проверки для корутин, возможность конвертации SAM в анонимные object

👉 Инкрементальная компиляция Kotlin/JS теперь стабильна и включена по умолчанию

👉 Ну и как же без багфикса и минорных улучшений

Хотите обновиться -> бегов в Android Studio/IDEA и проверяйте обновление плагинов
источник
Android Broadcast
#JaCoCo #Tests #Update

Вышло обновление JaCoCo 0.8.3

Вышло очередно обновление JaCoCo. Обновление не содержит новых функций но было сделано:
👉 Официальная поддержка Java 11
👉 Улучшен анализ Kotlin: теперь в отчет не включается множество кода, которые генерируется для работы Kotlin кода в Java
👉 Улучшения в информации, отображаемой в HTML отчетах
👉 Исправление багов
источник
Android Broadcast
#Kotlin #Coroutines #LibUpdate

Вышли Coroutines 1.1.1

Вышло совсем маленькое обновление Coroutine, без изменений в кодовой базе, Релиз содержит:
👉 Обновление Kotlin до 1.3.20
👉 Обновление Gradle до 4.10
источник
2019 January 25
Android Broadcast
#Activity #LaunchMode

The Android Launch Mode Animated CheatSheet

Хорошая статья с визуализацией (анимашки) того как работают Launch Mode в Activity (управление back stack Activity).
источник
Android Broadcast
Круть как сделано!
источник
Android Broadcast
#InstantApp

Подводные камни разработки Google Play Instant

Google Play Instant - полезный формат для быстрой работы с вашим приложением: не нужно установки, просто открываешь ссылку и получаешь счастье 😁

Для того чтобы такие приложения могли открываться быстро и работать без установки на них есть ряд ограничений, самое трудное из которых - это размер не более 4 Мб. В ход идут все средства: оптимизация размера графики, ресурсов, ProGuard/R8, "Only Java" путь и пр.

Ребята из PROFI.RU столкнулись с проблемой поддержки Google Play Instant уже существующим приложением. Ребята стали выбирать из 2 путей:
👉 взять готовое приложение и вырезать из него ненужную функциональность
👉 создать пустой проект и перенести в него функциональность, которая необходима

Какой путь выбрали разработчики из PROFI.RU? Какие задачи пришлось решить еще? Все это можете узнать в статье
источник
Android Broadcast
#Kotlin #Coroutines #Mock

Mocking Coroutines

Вы уже втянули свои приложения Kotlin Coroutine? Если да то вы уже могли решить вопрос с тестированием нового асинхронного подхода, а если вы только задумались об этом то вам поможет данная статья. В ней описывается как с помощью библиотеки Mockito-Kotlin:
👉 мокируется Deferred через CompletableDeferred
👉 мокируются suspend функции с помощью onBlocking
источник
Android Broadcast
#Kotlin #DependencyInjection #Koin

Koin 2.0 Beta 1 is Here

Первый анонс Koin 2.0 🎉 Почему стоило сразу после 1.0 нужно было выпускать версию 2.0? Список изменений впечатляет:
👉 Пользователи библиотеки на Android жаловались на медленное получение зависимостей, в новой версии улучшили работу библиотеки под капотом и исправляют упущение
👉 Новый способ инициализации Kotlin при помощи DSL
👉 Упрощено объявление зависимостей в модулях: убраны вложенные модули, namespace-ы и пр.

Ждем стабильного релиза!
источник
2019 January 26
Android Broadcast
#Animation #MaterialDesign #Library

Animated Tri State Checkbox

Красивый CheckBox в Material Design, который использует красивую анимацию для переключения между состояниями
источник
2019 January 27
Android Broadcast
#Kotlin #Google

Kotlin is now an official language for Android development inside Google

Теперь Kotlin официальный язык для Android разработки внутри Google (раньше была только официальная поддержка Kotlin как языка разработки под Android).
источник
Android Broadcast
#Coroutines #Kotlin

Coroutines for Android

Статья с основными советами как использовать корутины на Android. Гайд очень простой и покажет вам только основные моменты использования.

Также нашел там одну проблему - чтобы ваши корутины работали корректно, то вам надо в CoroutineScope.coroutineContext передавать SupervisorJob, а не Job
источник
2019 January 28
Android Broadcast
#Kotlin #Coroutines

The reason to avoid GlobalScope

Structured concurrency - замечательная концепция, которая позволяет вам ограничивать время жизни запущенных корутин. В связи с этим практически любая корутина требует CoroutineScope. Неопытный разработчик может сделать `GlobalScope.launch` чтобы не морочиться. Проблем в том, что это в корне неправильно и нарушает принципы работы, которые вкладывалось авторами корутин 😞

Корутина наследует от CoroutineScope CoroutineDispatcher и прочие элементы из CoroutineContext, а GlobalScope ничего не содержит и ваша корутина будет выполняться, блокируя поток приложения.

Также плохо что ваша корутина не имеет какой либо привязки к объекту с ограниченным временем жизни.

Как это исправить? Ответ на этот вопрос вы найдете в статье от Романа Елизарова
источник
Android Broadcast
"Все эти люди отличаются низкой степенью вовлеченности, не уделяют внимания функциональности своих смартфонов и, как правило, игнорируют все доступные обновления." - я думаю что это и есть те партизаны, которые сидят на Android < 7 Nougat
источник
Android Broadcast
Мнение: Откуда берется фрагментация Android и почему на самом деле ее нет https://androidinsider.ru/?p=184494
источник
2019 January 29
Android Broadcast
#TextWatcher

Using TextWatchers the right way, case study: Naira TextWatcher

Статья с разбором того что приходит в TextWatcher при изменение текста в EditText
источник
Android Broadcast
#Kotlin #Conference

Conference for Kotliners

Этим летом 7 июня в Будапеште пройдет конференция для всех Kotliner-ов
источник