#Animation
Вышла Lottie 3.1.0
В новой версии произошли небольшие изменения API, улучшение производительности и багфикс.
Вышла Lottie 3.1.0
В новой версии произошли небольшие изменения API, улучшение производительности и багфикс.
#Immersive
Gesture Navigation: Immersive Modes (IV)
Продолжение серии статей о адаптации приложений под новую систему навигации жестами в Android 10. В новой части речь зайдет о Immersive Mode
Gesture Navigation: Immersive Modes (IV)
Продолжение серии статей о адаптации приложений под новую систему навигации жестами в Android 10. В новой части речь зайдет о Immersive Mode
Medium
Gesture Navigation: Immersive Modes (IV)
In the third post in this blog post series on Gesture Navigation, we covered how to handle any gesture conflicts which can occur with your…
#JetpackCompose
Пробуем Jetpack Compose в бою?
Первая dev версия развязала руки разработчикам и как бы Google не стала останавливать людей от интеграции Jetpack Compose в production приложения, найдутся те кто это станет сделать.
В статье описаны впечатления разработчика от интеграции Jetpack Compose для простого "About" экрана в приложении.
Танцев с бубном было много и диагноз следующий "Абсолютно понятно, что Compose не готов к применению даже в маленьких боевых приложениях"
Пробуем Jetpack Compose в бою?
Первая dev версия развязала руки разработчикам и как бы Google не стала останавливать людей от интеграции Jetpack Compose в production приложения, найдутся те кто это станет сделать.
В статье описаны впечатления разработчика от интеграции Jetpack Compose для простого "About" экрана в приложении.
Танцев с бубном было много и диагноз следующий "Абсолютно понятно, что Compose не готов к применению даже в маленьких боевых приложениях"
Хабр
Пробуем Jetpack Compose в бою?
Наконец, настал момент, когда не нужно собирать самостоятельно Android Studio, чтобы попробовать новый декларативный UI framework для Android. Jetpack Compose ст...
#Coroutines #LiveData #Test
Testing two consecutive LiveData emissions in Coroutines
В статье рассматривается проблема тестирования эмита 2 последовательных значений
Автор рассказывает о нескольких решениях:
1️⃣ TestCoroutineDispatcher из библиотеки
2️⃣ Использование
Хорошие практики использования
👉 Не используйте стандартный класс Dispatchers, а доставляйте зависимости сами с помощью DI. Это позволит вам подменять их в тестах и иметь больший контроль
👉Используйте TestCoroutineDispatcher вместо Dispatchers.Unconfined для тестов.
Testing two consecutive LiveData emissions in Coroutines
Kotlin Coroutines
получают все большую популярность и активнее интегрируются в последние решения от Google, поэтому стоит рассматривать подходы, которые рекомендуется использовать.В статье рассматривается проблема тестирования эмита 2 последовательных значений
LiveData
, одно из которых приходит из Coroutine
. Автор рассказывает о нескольких решениях:
1️⃣ TestCoroutineDispatcher из библиотеки
kotlinx.coroutines.test
, который позволяет приостанавливать и возобновлять CoroutineDispatcher
2️⃣ Использование
LiveData.asFlow()
. Пример можно найти в Pull RequestХорошие практики использования
Dispatcher
-ов в тестах:👉 Не используйте стандартный класс Dispatchers, а доставляйте зависимости сами с помощью DI. Это позволит вам подменять их в тестах и иметь больший контроль
👉Используйте TestCoroutineDispatcher вместо Dispatchers.Unconfined для тестов.
TestCoroutineDispatcher
дает больше гибкости для тестирования, чем Dispatchers.Unconfined
, но последний все также может успешно выполнять Coroutine синхронно.Medium
Testing two consecutive LiveData emissions in Coroutines
This article is about how we unit tested two consecutive LiveData emissions by pausing and resuming the CoroutineDispatcher of a Coroutine
#Arhitecture #CleanArhitecture
Why you need Use Cases/Interactors
Разбор роли
👉 Слои Clean Arhitecture
👉 Почему
👉 Бесполезный
👉 Когда использовать
Why you need Use Cases/Interactors
Разбор роли
Use Case
/Interactor
в Clean Architecture:👉 Слои Clean Arhitecture
👉 Почему
Presenter
/ViewModel
не должны общаться с источниками данных напрямую👉 Бесполезный
Use Case
👉 Когда использовать
Use Case
Medium
Why you need use-cases/interactors
Since Clean Architecture became the new hot topic in the Android world there have been loads of code samples and articles that tried to…
👍1
#Kotlin #Coroutines
How can we use CoroutineScopes in Kotlin?
Structured Concurrency - это хороший подход, который был применён в Coroutine. Также он очень хорошо лег на Android, где есть компоненты с жизненным циклом, например
В статье подробно разбирается CoroutineScope:
👉 Создание
👉 Принцип работы Coroutine в рамках
👉
👉
👉 Переключение
How can we use CoroutineScopes in Kotlin?
Structured Concurrency - это хороший подход, который был применён в Coroutine. Также он очень хорошо лег на Android, где есть компоненты с жизненным циклом, например
Activity
или Fragment
.В статье подробно разбирается CoroutineScope:
👉 Создание
CoroutineScope
👉 Принцип работы Coroutine в рамках
CoroutineScope
👉
CoroutineScope
+ Flow
👉
CoroutineScope
+ Channel
👉 Переключение
CoroutineScope
Medium
How can we use CoroutineScopes in Kotlin?
Let’s examine how we can manage the lifecycles of our components with CoroutineScopes and Structured Concurrency in Kotlin.
#NDK
Introducing NDK r21
Вышла новая версия Android NDK - 21. Пока только в Beta, но новая версия привнесла важные новости:
👉 Первая версия с длительной поддержкой (LTS)
👉 LTS релизы будут выходить каждый год
👉 Отказ от поддержки Windows x32
👉 Обновление GNU Make до 4.2
👉 Обновление GDB до 8.3
👉 Обновление LLVM до r365631 (master 10 Июля 2019)
👉 Обновление libc++ до r369764
👉 Fortify включается по умолчанию при использование ndk-build или CMake toolchain
👉 ARM код теперь по умолчанию собирается с Neon по умолчанию. Это позволяют коду работать эффективнее
Хотите узнать что будет дальше, то смотрите Roadmap
Introducing NDK r21
Вышла новая версия Android NDK - 21. Пока только в Beta, но новая версия привнесла важные новости:
👉 Первая версия с длительной поддержкой (LTS)
👉 LTS релизы будут выходить каждый год
👉 Отказ от поддержки Windows x32
👉 Обновление GNU Make до 4.2
👉 Обновление GDB до 8.3
👉 Обновление LLVM до r365631 (master 10 Июля 2019)
👉 Обновление libc++ до r369764
👉 Fortify включается по умолчанию при использование ndk-build или CMake toolchain
👉 ARM код теперь по умолчанию собирается с Neon по умолчанию. Это позволяют коду работать эффективнее
Хотите узнать что будет дальше, то смотрите Roadmap
Android Developers Blog
Introducing NDK r21: our first Long Term Support release
Android NDK r21 is now in beta! It’s been a longer than usual development cycle (three months since NDK r20), so there’s quite a lot to discuss for this release. We have the usual toolchain updates, improved defaults for better security and performance, and…
#Exception
Обработка ошибок в Kotlin/Java: как правильно это делать?
Ошибки - это то с чем мы постоянно сталкиваемся в наших программах. Они возникают по вине программиста либо по причинах среды выполнения: отсутсвие сети, ошибка в данных, отсутствие места на диски и др.
Как с этим бороться? В статье вы найдете различные подходы:
👉 try-catch
👉 Sealed классы для представления успешного результата и ошибок
👉 Функциональный тип программирования
👉 Использовать
👉 Nullable тип из Kotlin
👉 Хардкодное значение как маркер ошибки (например -1 для метода, который возвращает
Обработка ошибок в Kotlin/Java: как правильно это делать?
Ошибки - это то с чем мы постоянно сталкиваемся в наших программах. Они возникают по вине программиста либо по причинах среды выполнения: отсутсвие сети, ошибка в данных, отсутствие места на диски и др.
Как с этим бороться? В статье вы найдете различные подходы:
👉 try-catch
👉 Sealed классы для представления успешного результата и ошибок
👉 Функциональный тип программирования
Either
👉 Использовать
Option
👉 Nullable тип из Kotlin
👉 Хардкодное значение как маркер ошибки (например -1 для метода, который возвращает
int
)Хабр
Обработка ошибок в Kotlin/Java: как правильно это делать?
Источник Обработка ошибок в любой разработке играет важнейшую роль. В программе может пойти не так практически всё: пользователь введёт некорректные данные, или...
#Coroutines #Coroutines
Making Android unidirectional data flow with Kotlin coroutines 🦄
Разбор нового взгляда на архитектура от автора библиотеки Koin. Архитектура строится на основе
Новый взгляд вылился в фреймворк Uniflow, который еще находится в разработке.
Making Android unidirectional data flow with Kotlin coroutines 🦄
Разбор нового взгляда на архитектура от автора библиотеки Koin. Архитектура строится на основе
Architecture Components
и Kotlin Coroutines
и основными компонентами в ней являются ViewModel
, Actions
& States
. Новый взгляд вылился в фреймворк Uniflow, который еще находится в разработке.
Medium
Making Android unidirectional data flow with Kotlin coroutines 🦄
How about structuring development around ViewModel? How can we write it as States and Events? With Kotlin coroutines, Mockk or even Arrow..
#GestureNavigation #Android10
Gesture Navigation: Handling gesture conflicts
Продолжение серии статей о новой системы навигации в Android 10. В новой часте рассматривается как разрешать конфликты, когда ваше приложение должно обрабатывать жесты в зонах, где находится системное управление жестами, например жесты на виджетах внизу экрана.
Gesture Navigation: Handling gesture conflicts
Продолжение серии статей о новой системы навигации в Android 10. В новой часте рассматривается как разрешать конфликты, когда ваше приложение должно обрабатывать жесты в зонах, где находится системное управление жестами, например жесты на виджетах внизу экрана.
Medium
Gesture Navigation: Handling gesture conflicts (III)
This is the third post in our blog post series on we covered how to handle visual overlaps after updating an app to draw ‘edge-to-edge’.
#Performance
Fighting Regressions with Benchmarks in CI
Одна из новинок Android - библиотека Jetpack Benchmark, уже успела дойти до первой беты. Библиотека позволяет вам писать правильные тесты производительности. Библиотека отвечает за "разогрев" устройств для теста, определение проблем конфигурации и замер производительности вашего кода.
В статье рассматривается как команда Jetpack тестируется производительности своих библиотек на CI и определяет регрессии в скорости их работы.
Fighting Regressions with Benchmarks in CI
Одна из новинок Android - библиотека Jetpack Benchmark, уже успела дойти до первой беты. Библиотека позволяет вам писать правильные тесты производительности. Библиотека отвечает за "разогрев" устройств для теста, определение проблем конфигурации и замер производительности вашего кода.
В статье рассматривается как команда Jetpack тестируется производительности своих библиотек на CI и определяет регрессии в скорости их работы.
Medium
Fighting Regressions with Benchmarks in CI
Find out how to use Jetpack Benchmark to catch performance regressions in your Android app before they make their way to users.
#Conference #Minsk #Review #MobileOptimized
Впечатления от Mobile Optimized 2019 - крупнейшей конференции по мобильным технология в Беларуси
Впечатления от Mobile Optimized 2019 - крупнейшей конференции по мобильным технология в Беларуси
Telegraph
Впечатления от Mobile Optimized 2019
Привет! Меня зовут Кирилл Розов и я разработчик с 8 годами опыта разработки в Android. Я возглавляю Android разработку в компании Humans и веду Telegram канала с новостями об Android разработке - Android Broadcast. Хочу поделиться своими впечатлениями от…
Понравилась вам идея с обзором конференции?
Final Results
69%
Да, стоит делать такое в будущем
3%
Да, но больше не стоит
4%
Нет
24%
Не читал
#Kotlin
The problem with extension functions
Что с этой прекрасной возможность языка может быть не так? Как с этим связано Kotlin DSL? В этом разбирается Мартин Москала
The problem with extension functions
Extension функции
- одна из самых популярных и любимых функций разработчиков, использующих Kotlin. Extension функции
позволили решить проблему с расширением API классов, делать его консистентным со сторонни и использовать новые подходы для проектирования API.Что с этой прекрасной возможность языка может быть не так? Как с этим связано Kotlin DSL? В этом разбирается Мартин Москала
Medium
The problem with extension functions
Extension functions are a great feature. Although they started being overused what leads to problems we don’t know how to solve yet.
#новости
По семейным обстоятельствам я беру перерыв на ближайшие 2 недели. Что это значит? Частота новостей будет снижена и новости будут выходить реже.
По семейным обстоятельствам я беру перерыв на ближайшие 2 недели. Что это значит? Частота новостей будет снижена и новости будут выходить реже.
#Automotive
Android Automotive OS updates for developers
Google развивает свою ОС для автомобилей - Android Automotive OS (не путайте с Android Auto).
Отличие этих ОС в том, что Android Automotive встраивается в ваш автомобиль, имеет доступ к датчикам автомобиля и может работать независимо от внешнего устройства. Для работы Android Auto требуется подключение смартфона на Android и она выступает простой медиа системой и имеет доступ только к датчикам телефона.
Google добавили возможность использовать эмулятор Android Automotive OS с магазинон Google Play. Уже сейчас вы можете запросить доступ к консоле Google Play для новой ОС от Google.
Android Automotive OS updates for developers
Google развивает свою ОС для автомобилей - Android Automotive OS (не путайте с Android Auto).
Отличие этих ОС в том, что Android Automotive встраивается в ваш автомобиль, имеет доступ к датчикам автомобиля и может работать независимо от внешнего устройства. Для работы Android Auto требуется подключение смартфона на Android и она выступает простой медиа системой и имеет доступ только к датчикам телефона.
Google добавили возможность использовать эмулятор Android Automotive OS с магазинон Google Play. Уже сейчас вы можете запросить доступ к консоле Google Play для новой ОС от Google.
Android Developers Blog
Android Automotive OS updates for developers
Posted by Madan Ankapura, Product Manager, Android Google’s vision is to bring a safe and seamless connected experience to every car. ...
#Dagger #Multibindings
Dagger 2 Multibindings Illustrated
Dagger 2 имеет множество возможностей, хотя множество разработчиков используют его по простому сценарию: "1 модуль. 1 компонент. @Inject. AppComponent.inject(...)". Но в Dagger есть много интересного функционала. Например, Multibinding, который позволяет вам объединять зависимости одного типа из разных модулей и компонентов в
Когда это может пригодиться? Когда у вас есть обработчики для создания элементов по типу элементов. Это эффективно можно применить для выполнения доставки зависимостей в конструктор
1. Предоставляете способ создания
2. Из Dagger вы можете получить
Код получается гибким и хорошо расширяемым. А значит мы и улучшили нашу архитектуру
В статье вы найдете руководство как использовать эту возможность библиотеки и делать архитектуру ваших приложений более гибкой.
Dagger 2 Multibindings Illustrated
Dagger 2 имеет множество возможностей, хотя множество разработчиков используют его по простому сценарию: "1 модуль. 1 компонент. @Inject. AppComponent.inject(...)". Но в Dagger есть много интересного функционала. Например, Multibinding, который позволяет вам объединять зависимости одного типа из разных модулей и компонентов в
Set
или Map
.Когда это может пригодиться? Когда у вас есть обработчики для создания элементов по типу элементов. Это эффективно можно применить для выполнения доставки зависимостей в конструктор
Fragment
(поддерживается в androidx.fragment 1.1.0):1. Предоставляете способ создания
Fragment
в Dagger модуле2. Из Dagger вы можете получить
Map<Class<Fragment>, Provider<Fragment>>
Код получается гибким и хорошо расширяемым. А значит мы и улучшили нашу архитектуру
В статье вы найдете руководство как использовать эту возможность библиотеки и делать архитектуру ваших приложений более гибкой.
Medium
Dagger 2 Multibindings Illustrated
Dagger 2 has a multibindings capability. It is a powerful feature package dependencies into SET and MAP automatically.
Используете ли вы Dagger 2 Multibinding?
Anonymous Poll
21%
Да
10%
Знаю, но не использую
28%
Не знал/знала что это такое
20%
Нет
21%
Использую другой DI
#FBReader
Пишем читалку электронных книг на Android с помощью FBReader SDK
EPUB, FB2 и MOBI - это самые популярные форматы для распространения электронных книг. Для решения задачи интеграции отображения таких файлов можно воспользоваться FBReader SDK.
Библиотека имеет множество возможностей:
👉 Открытие множество файлов электронных книг
👉 Чтение метаданных из файла книги
👉 Особенности движка FBReader
👉 Возможность менять стиль текста книги и яркость
👉 Выделение текста
👉 Закладки
👉 Поиск по тексту
👉 Оглавление
👉 Дополнительная навигация по тексту
👉 Поддержка сносок и гиперссылок
Библиотека платная. В бесплатном режиме можно отображать только несколько первых страниц. Подробнее о ценах.
Пишем читалку электронных книг на Android с помощью FBReader SDK
EPUB, FB2 и MOBI - это самые популярные форматы для распространения электронных книг. Для решения задачи интеграции отображения таких файлов можно воспользоваться FBReader SDK.
Библиотека имеет множество возможностей:
👉 Открытие множество файлов электронных книг
👉 Чтение метаданных из файла книги
👉 Особенности движка FBReader
👉 Возможность менять стиль текста книги и яркость
👉 Выделение текста
👉 Закладки
👉 Поиск по тексту
👉 Оглавление
👉 Дополнительная навигация по тексту
👉 Поддержка сносок и гиперссылок
Библиотека платная. В бесплатном режиме можно отображать только несколько первых страниц. Подробнее о ценах.