#AnnotationProcessor #kapt
Making incremental KAPT work
Все мы хотим быструю сборку проектов, но современная Android разработка переполнена различными библиотеками с процессорами аннотаций:
Эту проблему решили в Gradle 4.7, добавив поддержку инкрементальной компиляции в процессорах аннотаций. К сожалению, из коробки это не работает и требует усилий разработчиков библиотек.
В Kotlin 1.3.31 в
Замечание: Gradle модуль будет работать с инкрементальным процесингом аннотаций только если все процессоры, использующиеся в модуле, поддерживают эту возможность.
Making incremental KAPT work
Все мы хотим быструю сборку проектов, но современная Android разработка переполнена различными библиотеками с процессорами аннотаций:
Dagger
, Glide
, AndroidX
, Room
, Butterknife
и пр. Их проблема заключается в том, что каждое изменение кода приводит к повторной генерации кода всеми процессорами.Эту проблему решили в Gradle 4.7, добавив поддержку инкрементальной компиляции в процессорах аннотаций. К сожалению, из коробки это не работает и требует усилий разработчиков библиотек.
В Kotlin 1.3.31 в
kapt
добавили поддержку инкрементальной компиляции. Руководство по настройке вы найдете в статье.Замечание: Gradle модуль будет работать с инкрементальным процесингом аннотаций только если все процессоры, использующиеся в модуле, поддерживают эту возможность.
Medium
Making incremental KAPT work (Speed Up your Kotlin projects!)
Do you have kapt mentioned somewhere in your build.gradledependencies? Are you using Dagger, Glide, Room? Chances are you can make your…
#Gson
Kson - генерация Gson TypeAdapter & Factory для Kotlin data классов
Большинство современных решения для сериализации/десериализации JSON используют рефлексию, которая несете в себе низкую производительность и невозможность оптимизации кода при компиляции. Kson - библиотека, которая была создана с целью чтобы избавить вас от этого.
Kson - генерация Gson TypeAdapter & Factory для Kotlin data классов
Большинство современных решения для сериализации/десериализации JSON используют рефлексию, которая несете в себе низкую производительность и невозможность оптимизации кода при компиляции. Kson - библиотека, которая была создана с целью чтобы избавить вас от этого.
GitHub
GitHub - aafanasev/kson: Gson TypeAdapter & Factory generator for Kotlin data classes
Gson TypeAdapter & Factory generator for Kotlin data classes - aafanasev/kson
#KotlinEverywhere
Kotlin/Everywhere Minsk уже 7 сентября
Последние пару сообщества GDG Minsk и Belarusian Kotlin User Group упорно трудились над тем чтобы сообщить - 7 сентября состоится конференция Kotlin/Everywhere Minsk. Этот ивент является часть большой программы Kotlin/Everywhere от Google и JetBrains. Сейчас мы в начале пути самого масштабного события для наших сообществ. Следите за новостями в @gdgminsk_news и @belarus_kug!
Для тех кто хочет стать спикером открыто CFP
Kotlin/Everywhere Minsk уже 7 сентября
Последние пару сообщества GDG Minsk и Belarusian Kotlin User Group упорно трудились над тем чтобы сообщить - 7 сентября состоится конференция Kotlin/Everywhere Minsk. Этот ивент является часть большой программы Kotlin/Everywhere от Google и JetBrains. Сейчас мы в начале пути самого масштабного события для наших сообществ. Следите за новостями в @gdgminsk_news и @belarus_kug!
Для тех кто хочет стать спикером открыто CFP
#Room #SQLite #ArchitectureComponents
Вышел Room 2.1.0
Вышла новая версия Room в которой появились следующие возможности:
👉 Поддержка FTS
👉 Поддержка AutoValue
👉 Улучшена поддержка RxJava
👉 Поддержка Kotlin Coroutines (пока только suspend функции, ждем поддержки Channel и Flow)
👉 SQL view на основе аннотации @DatabaseView
👉 Исправление багов
Вышел Room 2.1.0
Вышла новая версия Room в которой появились следующие возможности:
👉 Поддержка FTS
👉 Поддержка AutoValue
👉 Улучшена поддержка RxJava
👉 Поддержка Kotlin Coroutines (пока только suspend функции, ждем поддержки Channel и Flow)
👉 SQL view на основе аннотации @DatabaseView
👉 Исправление багов
#DeepLink
How to manage a complex DeepLinks scheme on your Android App
Используете ли вы у себя deep link в приложениях? Когда у вас всего несколько ссылок, то объявление их простое, но с ростом их количества растет и сложность их описания. Android не поддерживает богатых регулярных выражений для описания deep link.
В статье рассматривается Gradle плагин manifestreplace-plugin, который упрощает описание deep link-ов.
How to manage a complex DeepLinks scheme on your Android App
Используете ли вы у себя deep link в приложениях? Когда у вас всего несколько ссылок, то объявление их простое, но с ростом их количества растет и сложность их описания. Android не поддерживает богатых регулярных выражений для описания deep link.
В статье рассматривается Gradle плагин manifestreplace-plugin, который упрощает описание deep link-ов.
Medium
How to manage a complex DeepLinks scheme on your Android App
DeepLinks are essential key elements to a company marketing strategy to engage new customers and bring them straight to your App as much…
#Koin #Dagger #DependencyInjection
KOIN for DEPENDENCY INJECTION on Android ► Is Dagger dead?
Актуален ли все еще Dagger 2 для Android разработки, когда Kotlin - основной язык для создания приложений под эту платформу и есть Koin? Разбор этого проводит Antonio Leiva - сертифицированный JetBrains тренер по Kotlin
KOIN for DEPENDENCY INJECTION on Android ► Is Dagger dead?
Актуален ли все еще Dagger 2 для Android разработки, когда Kotlin - основной язык для создания приложений под эту платформу и есть Koin? Разбор этого проводит Antonio Leiva - сертифицированный JetBrains тренер по Kotlin
YouTube
💰KOIN for DEPENDENCY INJECTION on Android ► Is Dagger dead? 🗡☠️
Koin is an alternative to Dagger that takes advantage of Kotlin features to make dependency injection much easier.
🎁 GET YOUR FREE PRESENT:
🇺🇸https://bit.ly/2HjSQTR
🇪🇸https://bit.ly/2MB62bb
The article about clean architecture mentioned in the video:
👉 h…
🎁 GET YOUR FREE PRESENT:
🇺🇸https://bit.ly/2HjSQTR
🇪🇸https://bit.ly/2MB62bb
The article about clean architecture mentioned in the video:
👉 h…
#ArchitectureComponents #BestPractices
Распространенные ошибки при использовании Android Architecture Components
Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на
Распространенные ошибки при использовании Android Architecture Components
Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка
LiveData
Observer в Fragment
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять
View
изменять LiveData
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на
View
в ViewModelХабр
5 распространенных ошибок при использовании архитектурных компонентов Android
Даже если вы не делаете этих ошибок, стоит о них помнить, чтобы не столкнуться с некоторыми проблемами в будущем. 1. Утечка наблюдателей LiveData во фрагментах...
#CleanArchitecture #Architecture #Kotlin #Multiplatform
Clean Architecture example with Kotlin Multiplatform
Хорошая архитектура - это неотъемлемая часть качественной разработки приложений. Поэтому все мы стараемся следовать Clean Architecture в разработке Android приложений. По ее правилам бизнес логика не должна быть привязана к платформе, а взаимодействие с платформенными частями должно осуществляться через абстракции - интерфейсы.
Что как не Kotlin Multiplatform (MPP) позволяет абстрагироваться от платформы и писать чистую БЛ. В статье рассматривается как это реализовать на примере разработки клиента для TMDb.
Замечание: Вы можете использовать аналогичные подходы без поддержки других платформ кроме как Android в MPP проектах
Clean Architecture example with Kotlin Multiplatform
Хорошая архитектура - это неотъемлемая часть качественной разработки приложений. Поэтому все мы стараемся следовать Clean Architecture в разработке Android приложений. По ее правилам бизнес логика не должна быть привязана к платформе, а взаимодействие с платформенными частями должно осуществляться через абстракции - интерфейсы.
Что как не Kotlin Multiplatform (MPP) позволяет абстрагироваться от платформы и писать чистую БЛ. В статье рассматривается как это реализовать на примере разработки клиента для TMDb.
Замечание: Вы можете использовать аналогичные подходы без поддержки других платформ кроме как Android в MPP проектах
Medium
Clean Architecture example with Kotlin Multiplatform
An exemplary Kotlin Multiplatform project featuring loading movies from TMDb using Clean Architecture to share as much code as possible
#Animations
Seamless Android app launch animations using Intent Source Bounds
Как кастомизировать анимацию запуска приложения из launcher, чтобы ваше приложение появлялось из иконки приложения с помощью различных анимаций: scale, circular reveal и др.?
Все это можно сделать при помощи Intent.setSourceBounds(Rect?). В статье вы найдете подробный разбор как реализовать анимацию запуска в своем приложении
Seamless Android app launch animations using Intent Source Bounds
Как кастомизировать анимацию запуска приложения из launcher, чтобы ваше приложение появлялось из иконки приложения с помощью различных анимаций: scale, circular reveal и др.?
Все это можно сделать при помощи Intent.setSourceBounds(Rect?). В статье вы найдете подробный разбор как реализовать анимацию запуска в своем приложении
#WorkManager #AndroidX
Workout your tasks with WorkManager — Intro
Первая статья из серии, включающих обзор модели памяти Android, существующих решениях для фоновых задач, что происходит под капотом и почему мы должны использовать WorkManager.
В первой статье рассматривается:
👉 Модель памяти Android
👉 Почему важная оптимизация расхода ресурсов (батарея, память и пр.)
👉 Существующие решения для работы приложения в фоне
👉 Почему и когда надо использовать
Workout your tasks with WorkManager — Intro
Первая статья из серии, включающих обзор модели памяти Android, существующих решениях для фоновых задач, что происходит под капотом и почему мы должны использовать WorkManager.
В первой статье рассматривается:
👉 Модель памяти Android
👉 Почему важная оптимизация расхода ресурсов (батарея, память и пр.)
👉 Существующие решения для работы приложения в фоне
👉 Почему и когда надо использовать
WorkManager
Medium
Workout your tasks with WorkManager — Intro
The first blog post in a new series on WorkManager: Android memory model, background processing solutions, when and why to use WorkManger.
#Kotlin
Вышел Kotlin 1.3.40
Новинки минорного обновления языка:
👉 Новая система type inference развивается. В будущем она заменит текущую, но уже сейчас ее можно попробовать в IDE
👉 Новые функции для кодирования/декодирования строк в UTF-8
👉 Добавлена поддержка сторонних nullability аннотаций. Только в IDE 😞
👉 Появилась возможность получения
👉Оптимизированы
👉 Улучшения в Multiplatform Project
👉 Улучшения в Kotlin/JS
👉 Улучшения в Kotlin/Native
👉 Исправление багов
Вышел Kotlin 1.3.40
Новинки минорного обновления языка:
👉 Новая система type inference развивается. В будущем она заменит текущую, но уже сейчас ее можно попробовать в IDE
👉 Новые функции для кодирования/декодирования строк в UTF-8
👉 Добавлена поддержка сторонних nullability аннотаций. Только в IDE 😞
👉 Появилась возможность получения
reified
типа с помощью рефлексии на JVM. Используйте функцию typeOf()
👉Оптимизированы
trimIndent()
и trimMargin()
. Теперь для строковых констант они выполняются во время компиляции, а не во время выполнения кода.👉 Улучшения в Multiplatform Project
👉 Улучшения в Kotlin/JS
👉 Улучшения в Kotlin/Native
👉 Исправление багов
The JetBrains Blog
Kotlin 1.3.40 released | The Kotlin Blog
We’re happy to present the new release today, Kotlin 1.3.40. In addition to the quality and tooling improvements the main focus for this version has been on: Gradle support for NPM, Yarn, and Webpa
#Room #ORM #AcrhitectureComponents
Migrating to Room in the real world — Part 1
Новые технологии появляются постоянно: Kotlin приходит на смену Java, корутины заменяют Rx, Architecture Components активнее используются для построения архитектуры приложения. Каково быть если ваш проект имеет большое количество legacy кода и вы уже работаете со старыми технологиями, но хотите мигрировать?
Ребята из Blinkist делятся своим опытом миграции с работы с SQLite на основе ContentValues и простой обертки Cupboard на Room.
Migrating to Room in the real world — Part 1
Новые технологии появляются постоянно: Kotlin приходит на смену Java, корутины заменяют Rx, Architecture Components активнее используются для построения архитектуры приложения. Каково быть если ваш проект имеет большое количество legacy кода и вы уже работаете со старыми технологиями, но хотите мигрировать?
Ребята из Blinkist делятся своим опытом миграции с работы с SQLite на основе ContentValues и простой обертки Cupboard на Room.
Medium
Migrating to Room in the real world — Part 1
Analysis and planning.
#Kotlin
[Kotlin pearls 6] Extensions: The Good, The Bad and The Ugly
Kotlin
В статье происходит разбор этой функции языка, как она работает под капотом и случаи когда ее стоит использовать, а когда нет.
[Kotlin pearls 6] Extensions: The Good, The Bad and The Ugly
Kotlin
extension function
и property
- это визитная карточка Kotlin для Java разработчиков. Разве что null safety
может сравниться по популярности.В статье происходит разбор этой функции языка, как она работает под капотом и случаи когда ее стоит использовать, а когда нет.
Medium
[Kotlin Pearls 6] Extensions: The Good, The Bad and The Ugly
How to use Extension Functions and Properties to improve the readability of your code
#RecyclerView #Performance
Smooth RecyclerView Scrolling in Android
Отображение списков - довольно популярная задача в современных мобильных приложениях. Требование к таким виджетам высоки - они должны обеспечивать быструю скорость работы и плавность отрисовки при работе пользователя с ними.
Как этого добиваться в
👉 Осуществляйте inflate view для ViewHolder в отдельном потоке при помощи AsyncLayoutInflater и создавайте пул из них
👉 Создайте очередь из UI операций для оптимизации выполнения
👉 Используйте PrecomputedTextCompat, чтобы вынести расчеты для отображения текста на фоновый поток
Smooth RecyclerView Scrolling in Android
Отображение списков - довольно популярная задача в современных мобильных приложениях. Требование к таким виджетам высоки - они должны обеспечивать быструю скорость работы и плавность отрисовки при работе пользователя с ними.
Как этого добиваться в
RecyclerView
? Используйте следующие советы хардкор уровня:👉 Осуществляйте inflate view для ViewHolder в отдельном потоке при помощи AsyncLayoutInflater и создавайте пул из них
👉 Создайте очередь из UI операций для оптимизации выполнения
onBindViewHolder()
👉 Используйте PrecomputedTextCompat, чтобы вынести расчеты для отображения текста на фоновый поток
Medium
Smooth RecyclerView Scrolling in Android
Tips for using complex views without skipping frames
#Compatibility
Android API Level, backward and forward compatibility
Подробный разбор вопросов версий Android SDK и как они влияют. В статье рассматривается:
👉 Что такое API и SDK ?
👉 Что значит API Level ?
👉 Как использовать compileSdkVersion, minSdkVersion и targetSdkVersion ?
👉 Как вы можете убедиться, что приложение будет работать нормально на устройствах с различными версиями ОС?
👉 Что такое forward & backward совместимость (compatibility)?
Android API Level, backward and forward compatibility
Подробный разбор вопросов версий Android SDK и как они влияют. В статье рассматривается:
👉 Что такое API и SDK ?
👉 Что значит API Level ?
👉 Как использовать compileSdkVersion, minSdkVersion и targetSdkVersion ?
👉 Как вы можете убедиться, что приложение будет работать нормально на устройствах с различными версиями ОС?
👉 Что такое forward & backward совместимость (compatibility)?
Medium
Android API Level, backward and forward compatibility
If you get to read this article it might mean you are wondering things like:
Forwarded from Mobile People Talks (Александр Денисов)
Асинхронность - знаешь что об этом ты? Part I
Первоначальной идеей этого выпуска было обсуждение асиннхронности, подходов и решений со всех, так сказать, четырех сторон. Сначала обсудить нативные темы, а потом обсудить кроссплатформенные решения. И начиналось все вроде бы хорошо, обсудили многопоточность, классические проблемы, языки, которые живут без этого, но потом Данис с Кириллом так увлеклись беседой о сходствах и различиях асинхронных подходов в Android и iOS, что на Flutter и React Native просто тупо не хватило времени!
🤪 Так что придется делать два выпуска по цене одного! Асинхронность Flutter vs ReactNative ждите в следующем!
🎧 SoundCloud
🎧 Apple Podcasts
Первоначальной идеей этого выпуска было обсуждение асиннхронности, подходов и решений со всех, так сказать, четырех сторон. Сначала обсудить нативные темы, а потом обсудить кроссплатформенные решения. И начиналось все вроде бы хорошо, обсудили многопоточность, классические проблемы, языки, которые живут без этого, но потом Данис с Кириллом так увлеклись беседой о сходствах и различиях асинхронных подходов в Android и iOS, что на Flutter и React Native просто тупо не хватило времени!
🤪 Так что придется делать два выпуска по цене одного! Асинхронность Flutter vs ReactNative ждите в следующем!
🎧 SoundCloud
🎧 Apple Podcasts
SoundCloud
знаешь что об этом ты?
Первоначальной идеей выпуска было обсуждение асиннхронности, подходов и решений со всех, так сказать, четырех сторон. Сначала обсудить нативные темы, а потом обсудить кроссплатформенные решения. И нач
#Meetup #MobilePeople #Minsk
27 июня состоится митап сообщества Mobile People. В рамках митапа вас ждут 2 доклада:
👉 Android: Under the Hood
Что общего между вашим мобильным телефоном и модемом Промсвязь? Что происходит при вызове startActivity(Intent)? Кто считает секунды до ANR? В своем докладе Дмитрий даст ответы на эти вопросы и раскроет детали работы Android О
👉 Kotlin Multiplatform – швейцарский нож мобильного разработчика
Kotlin Multiplatform – новый инструмент для решения разработки одного приложения для разных платформ. Хотите узнать как можно уже сейчас начать использовать Kotlin и Clean Architecture для разработки приложение под Android и iOS, какие есть ограничения и достоинства подхода? Алексей вам расскажет об этом на основе реального опыта разработки продакшен приложения.
Участие бесплатное по предварительной регистрации
Когда: 19.00, 27 июня 2019 (четверг)
Где: EPAM, ул. Академика Купреевича 3В, Loft
27 июня состоится митап сообщества Mobile People. В рамках митапа вас ждут 2 доклада:
👉 Android: Under the Hood
Что общего между вашим мобильным телефоном и модемом Промсвязь? Что происходит при вызове startActivity(Intent)? Кто считает секунды до ANR? В своем докладе Дмитрий даст ответы на эти вопросы и раскроет детали работы Android О
👉 Kotlin Multiplatform – швейцарский нож мобильного разработчика
Kotlin Multiplatform – новый инструмент для решения разработки одного приложения для разных платформ. Хотите узнать как можно уже сейчас начать использовать Kotlin и Clean Architecture для разработки приложение под Android и iOS, какие есть ограничения и достоинства подхода? Алексей вам расскажет об этом на основе реального опыта разработки продакшен приложения.
Участие бесплатное по предварительной регистрации
Когда: 19.00, 27 июня 2019 (четверг)
Где: EPAM, ул. Академика Купреевича 3В, Loft
EPAM Campus
Industry-focused free IT courses for beginners | EPAM Campus
✅ The international IT company EPAM offers training programs in 30+ different IT directions for beginners around the globe. 🎯 Jumpstart your career in tech with EPAM!