#Dagger #ArchitectureComponents #ViewModel
Assisted ViewModel
Как много усилий вы тратите на то чтобы написать
Я с коллегами решили написать библиотеку, которая избавит нас от этой тягомотины и поможет убрать необходимость реализации
Пример использования:
Assisted ViewModel
Как много усилий вы тратите на то чтобы написать
ViewModelProvider.Factory для ViewModel из Architecture Components? Процесс не самый удобный, особенно когда в конструктор вы передаете только зависимости из графа . Dagger?Я с коллегами решили написать библиотеку, которая избавит нас от этой тягомотины и поможет убрать необходимость реализации
ViewModelProvider.Factory.Пример использования:
class SampleViewModel @AssistedViewModel constructor( repository:Repository): ViewModelclass SampleFragment: Fragment { private lateinit var viewModel: SampleViewModel @Inject // AssistedViewModelFactory is generated fun init(factory: AssistedViewModelFactory) { viewModel = ViewModelProviders.of(this, factory) .get(SampleViewModel::class.java) }}#Performance
Android app startup time: why we care
Почему важна производительность мобильных приложений? На мой взгляд причины следующие:
👉 Улучшение пользовательского опыта использования приложения
👉 Более высокое расположение в Google Play
👉 Возможность работы на более слабых устройствах, что расширяет аудиторию
В статье разбирается из чего состоит запуск приложения, как измерять скорость и оптимизировать её
Android app startup time: why we care
Почему важна производительность мобильных приложений? На мой взгляд причины следующие:
👉 Улучшение пользовательского опыта использования приложения
👉 Более высокое расположение в Google Play
👉 Возможность работы на более слабых устройствах, что расширяет аудиторию
В статье разбирается из чего состоит запуск приложения, как измерять скорость и оптимизировать её
Medium
Android app startup time: why we care
When we talk about mobile applications, performance is a fundamental concept. The low resource availability in these types of devices…
#News
Опрос Android Broadcast
Чтобы сделать контент лучше на канале, очень важно иметь обратную связь от аудитории и пониманить какой контент ей интересене. Уделите 5 минут чтобы ответить на несколько вопросов
Опрос Android Broadcast
Чтобы сделать контент лучше на канале, очень важно иметь обратную связь от аудитории и пониманить какой контент ей интересене. Уделите 5 минут чтобы ответить на несколько вопросов
#Test #Kotlin #DSL
Kotlin DSL, Fixtures и элегантные UI тесты в Android
Рассказ о том как Kotlin DSL помог эффективнее писать UI тесты в HeadHunter
Kotlin DSL, Fixtures и элегантные UI тесты в Android
Рассказ о том как Kotlin DSL помог эффективнее писать UI тесты в HeadHunter
Хабр
Kotlin DSL, Fixtures и элегантные UI тесты в Android
Когда познакомился с Kotlin DSL, подумал: отличная штука, жалко в продуктовой разработке она не пригодится. Однако, я был неправ: он нам помог сделать очень лако...
#Test #Coroutines
Android Testing Codelab теперь содержит информацию про корутины
Теперь в официальной codelab по тестированию на Android можно найти следующую информацию:
👉 Как создать настроить тест корутин
👉 Когда использовать runBlockingTest
👉 Как тестировать Architecture Components
👉 Как использовать TestCoroutineDispatcher для приостановки выполнения корутин
Android Testing Codelab теперь содержит информацию про корутины
Теперь в официальной codelab по тестированию на Android можно найти следующую информацию:
👉 Как создать настроить тест корутин
👉 Когда использовать runBlockingTest
👉 Как тестировать Architecture Components
👉 Как использовать TestCoroutineDispatcher для приостановки выполнения корутин
#Architecture #DynamicFeature #Modularization
Patterns for accessing code from Dynamic Feature Modules
Модуляризация и динамическая доставка модулей - это самый трендовые направления в архитектуре Android направлений. Проблема динамических модулей в том, что код основного приложения не знает о коде в динамическом модуле.
Решение проблемы в лоб - использование рефлексии. Но это решение влияет на производительность, особенно на старых устройствах. Какие решения можно использовать помимо рефлексии:
👉 ServiceLoader
👉 Интеграция с Dagger 2 или Koin 2
👉 Выделение интерфейса для взаимодействия c динамическим модулем из основного путем создания общего модуля. В основной модуль будет подключаться как
В статье рассматривается как реализовать эти подходы (все кроме последнего) и даются советы по модуляризации вашего приложения.
Patterns for accessing code from Dynamic Feature Modules
Модуляризация и динамическая доставка модулей - это самый трендовые направления в архитектуре Android направлений. Проблема динамических модулей в том, что код основного приложения не знает о коде в динамическом модуле.
Решение проблемы в лоб - использование рефлексии. Но это решение влияет на производительность, особенно на старых устройствах. Какие решения можно использовать помимо рефлексии:
👉 ServiceLoader
👉 Интеграция с Dagger 2 или Koin 2
👉 Выделение интерфейса для взаимодействия c динамическим модулем из основного путем создания общего модуля. В основной модуль будет подключаться как
compileOnly зависимость, а в динамический - implementation. В статье рассматривается как реализовать эти подходы (все кроме последнего) и даются советы по модуляризации вашего приложения.
Medium
Patterns for accessing code from Dynamic Feature Modules
In this post I am going to show you how to solve a common problem that arises when using dynamic feature modules in your project…
Android Broadcast pinned «#News Опрос Android Broadcast Чтобы сделать контент лучше на канале, очень важно иметь обратную связь от аудитории и пониманить какой контент ей интересене. Уделите 5 минут чтобы ответить на несколько вопросов»
Почему только прокачка кодинга не сделает из тебя лучшего разработчика
Как быть крутым разработчиком? Многие программисты задавались таким вопросом. Я также всегда задавался этим вопросом, но мнение мое меняется с течением времени. В начале я делал большой упор на технические навыки, но со временем мои взгляды менялись и начали смещаться приоритеты. Статья очень подробно отразила их. В ней вы найдете навыки, которые важно иметь хорошему программисту, а главное почему.
Как быть крутым разработчиком? Многие программисты задавались таким вопросом. Я также всегда задавался этим вопросом, но мнение мое меняется с течением времени. В начале я делал большой упор на технические навыки, но со временем мои взгляды менялись и начали смещаться приоритеты. Статья очень подробно отразила их. В ней вы найдете навыки, которые важно иметь хорошему программисту, а главное почему.
Хабр
Почему только прокачка кодинга не сделает из тебя лучшего разработчика
Techlead Skyeng Кирилл Роговой (flashhhh) выступает на конференциях с докладом, в котором рассказывает о навыках, развивать которые стоит каждому хорошему разра...
#Coroutines
Using the synchronized keyword in coroutines?
Coroutine-ы отличаются по своему механизму работы от потоков, соответственно требует отличные от Java механизмы для решения стандартных задач, например
Using the synchronized keyword in coroutines?
Coroutine-ы отличаются по своему механизму работы от потоков, соответственно требует отличные от Java механизмы для решения стандартных задач, например
synchronized или ReentrantLock. На замену им рекомендуется использовать Channel или Mutex.Jacques Smuts
Using the synchronized keyword in coroutines?
Working with coroutines is subtly different from normal locking functions. Introduce some thread-safety with mutex.
Какую библиотеку для работы с JSON вы используете?
Final Results
81%
GSON
5%
Jackson
12%
Moshi
1%
JSON Java (org.json)
0%
Другое решение
1%
Не работаю с JSON
#SQLite #Tools
Android SQLite debug tools
Разбор инструментов для дебага SQLite:
👉 SQLScout (платная) - плагин для Android Studio и Intellij IDEA
👉 Facebook Stetho - дебаг Android приложений из Chrome консоли
👉 AppSpector (платная) - сервис для удаленного дебага Android и iOS
👉 SQLiteFlow (macOS, платная) - SQLite редактор
Самый богатая по возможностям из этих утилит - SQLScout. Она строится вокруг работы с SQLite БД и имеет следующие возможности:
👉 поддержка Room
👉 просматривать схему БД
👉 выполнять SQL запросы
👉 просматривать данные, редактировать и экспортировать
👉 визуализировать БД в виде диаграммы
Android SQLite debug tools
Разбор инструментов для дебага SQLite:
👉 SQLScout (платная) - плагин для Android Studio и Intellij IDEA
👉 Facebook Stetho - дебаг Android приложений из Chrome консоли
👉 AppSpector (платная) - сервис для удаленного дебага Android и iOS
👉 SQLiteFlow (macOS, платная) - SQLite редактор
Самый богатая по возможностям из этих утилит - SQLScout. Она строится вокруг работы с SQLite БД и имеет следующие возможности:
👉 поддержка Room
👉 просматривать схему БД
👉 выполнять SQL запросы
👉 просматривать данные, редактировать и экспортировать
👉 визуализировать БД в виде диаграммы
Medium
Android SQLite debug tools
The process of development can be much easier if a developer uses a special tools for debugging.
#Gradle
Gradle Dependency: api vs implementation
Визуализация отличий между подключением зависимостей в Gradle через
Gradle Dependency: api vs implementation
Визуализация отличий между подключением зависимостей в Gradle через
implementation и apiTwitter
Florina Muntenescu
I keep on forgetting what's the difference between api and implementation, so I made this gif #AndroidDev https://t.co/H3kd55JZHw
#AndroidX #Navigation #Yandex
Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.Еды
Вы уже внедряли к себе решение навигации от Google? Если нет, то вам будет полезен опыт интеграции Navigation Arch Component в Яндекс.Еда
от 1.0.0-alpha3 до стабильного релиза 1.0.0
Видео доклада
Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.Еды
Вы уже внедряли к себе решение навигации от Google? Если нет, то вам будет полезен опыт интеграции Navigation Arch Component в Яндекс.Еда
от 1.0.0-alpha3 до стабильного релиза 1.0.0
Видео доклада
Хабр
Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.Еды
В мобильных приложениях всё чаще используются deep links. Это ссылки, которые позволяют не просто перейти в приложение извне, а попасть на конкретный экран. Android-разработчик из Яндекс.Еды...
#AndroidX
AndroidX Versions
Наконец-то Google упростила способ понять какую версию библиотеки из AndroidX сейчас можно использовать: доступна таблица всех библиотек из AndroidX с текущей стабильной, rc, beta и alpha версиями.
AndroidX Versions
Наконец-то Google упростила способ понять какую версию библиотеки из AndroidX сейчас можно использовать: доступна таблица всех библиотек из AndroidX с текущей стабильной, rc, beta и alpha версиями.
#AndroidStudio #Emulator
Moving Android Studio and Android Emulator to 64-bit versions
Google убивает 32-битные версии Android Studio и эмулятора. В первую очередь это затронет пользователей Windows.
Android Studio 3.6 и Android Emulator 28.0.5 станут последними версиями, содержащие x32 варианты. До конца 2020 года их можно будет скачать, а после ссылки на них будут удалены с официального сайта
Google как всегда слишком мягкие 😔
Moving Android Studio and Android Emulator to 64-bit versions
Google убивает 32-битные версии Android Studio и эмулятора. В первую очередь это затронет пользователей Windows.
Android Studio 3.6 и Android Emulator 28.0.5 станут последними версиями, содержащие x32 варианты. До конца 2020 года их можно будет скачать, а после ссылки на них будут удалены с официального сайта
Google как всегда слишком мягкие 😔
#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…