Подробный разбор плюсов и минусов КММ в сравнении с нативной разработкой
- Чтобы оценить готовность КММ к продакшну, ребята реализовали на нем четыре тестовых проекта
- Оценивали сложность дебага, интероп, тулинг, перфоманс, влияние на размер приложения, сложность написания базовой логики и много чего еще
- Чтобы оценить готовность КММ к продакшну, ребята реализовали на нем четыре тестовых проекта
- Оценивали сложность дебага, интероп, тулинг, перфоманс, влияние на размер приложения, сложность написания базовой логики и много чего еще
Plugable Features
Некоторым экранам нужно знать о большом количестве других фичей в проекте. Хороший пример – экран DeveloperSettings, на котором можно включать фичетоглы и менять глобальные настройки. Автор рассказывает, как с помощью Dagger Multibindings или ServiceLoader построить переиспользуемый экран настроек, не привязанный к одному App-модулю.
Некоторым экранам нужно знать о большом количестве других фичей в проекте. Хороший пример – экран DeveloperSettings, на котором можно включать фичетоглы и менять глобальные настройки. Автор рассказывает, как с помощью Dagger Multibindings или ServiceLoader построить переиспользуемый экран настроек, не привязанный к одному App-модулю.
Building Plugable Features on Android
Building Plugable Features on Android :: Ryan Harter
Modularization of Gradle projects can ease a team's growing pains, but can also introduce challenges when architecting features that require knowledge of the specific modules used in an app. This post looks at approaches for dynamically aggregating dependencies…
Релиз Ktor 2.1.0
Вышел новый релиз Ktor, основные изменения в котором касаются его серверной части. Особенно упрощается жизнь для новичков в бэкенде:
- CLI генератор новых проектов, который, помимо создания проекта по шаблону, сразу настраивает все окружение
- Gradle Deployment Plugin, который умеет собирать проект и в docker контейнер, и в fat jar
Вышел новый релиз Ktor, основные изменения в котором касаются его серверной части. Особенно упрощается жизнь для новичков в бэкенде:
- CLI генератор новых проектов, который, помимо создания проекта по шаблону, сразу настраивает все окружение
- Gradle Deployment Plugin, который умеет собирать проект и в docker контейнер, и в fat jar
Типовые архитектурные паттерны переоценены
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
The Pragmatic Engineer
Software Architecture is Overrated, Clear and Simple Design is Underrated
I had my fair share in designing and building large systems. I've taken part in
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
rewriting Uber's distributed payment systems
[https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/]
, designing…
Event Handlers в Compose
Event Handler’ы помогают обеспечить корректное выполнение сайд эффектов: их исполнение в правильные моменты жизненного цикла, управление ресурсами и отмену. В статье разбираются различные виды event handler’ов и подходящий контекст для их использования.
Event Handler’ы помогают обеспечить корректное выполнение сайд эффектов: их исполнение в правильные моменты жизненного цикла, управление ресурсами и отмену. В статье разбираются различные виды event handler’ов и подходящий контекст для их использования.
MAD Skills: За какими метриками перфоманса надо следить
- Фазы старта приложения: cold start, warm start, hot start
- Time to initial display – время до отрисовки первого фрейма приложения
- Time to full display – время до загрузки всего контента, достаточного для работы с экраном
- Frame rates должны сменяться не реже чем раз в 11.1ms
- Фазы старта приложения: cold start, warm start, hot start
- Time to initial display – время до отрисовки первого фрейма приложения
- Time to full display – время до загрузки всего контента, достаточного для работы с экраном
- Frame rates должны сменяться не реже чем раз в 11.1ms
Релиз Qodana 2022.2
- Qodana – платформа для мониторинга качества кода от JetBrains, поддерживающая Kotlin и Java
- Ее легко интегрировать с GitHub Actions, Teamcity и другими CI серверами
- В новом релизе появилась куча дополнительных инспекций, в том числе возможность замены >=/<= на ==, проверка на reassign переменной и verbose nullability.
- Qodana – платформа для мониторинга качества кода от JetBrains, поддерживающая Kotlin и Java
- Ее легко интегрировать с GitHub Actions, Teamcity и другими CI серверами
- В новом релизе появилась куча дополнительных инспекций, в том числе возможность замены >=/<= на ==, проверка на reassign переменной и verbose nullability.
Collecting flows in a lifecycle-aware manner
- Как collectAsStateWithLifecycle работает под капотом
- Как встроить Flow collection в свою архитектуру с учетом жизненного цикла приложения
- В чем отличие от collectAsAtate
- Как collectAsStateWithLifecycle работает под капотом
- Как встроить Flow collection в свою архитектуру с учетом жизненного цикла приложения
- В чем отличие от collectAsAtate
Как работает WorkManager
- WorkManager – библиотека, которая помогает организовать фоновую работу приложения
- Вторая задача WorkManager – гарантированное выполнение переданных ему задач, вне зависимости от режима работы приложения
- Детали того, как конкретно библиотека работает
- Разбор новых возможностей WorkManager на примерах
- WorkManager – библиотека, которая помогает организовать фоновую работу приложения
- Вторая задача WorkManager – гарантированное выполнение переданных ему задач, вне зависимости от режима работы приложения
- Детали того, как конкретно библиотека работает
- Разбор новых возможностей WorkManager на примерах
This media is not supported in your browser
VIEW IN TELEGRAM
Как в Tinder адоптили Compose
Как и в других приложениях с огромной кодовой базой и несколькими мобильными командами, в Tinder не были готовы сходу тащить Compose в бой. Они выбрали очень плавную стратегию внедрения.
- Создали демо-приложение, в котором реализовали несколько типичных для Tinder контролов и экранов с помощью Compose, дали команде с ним поиграться
- Оценили влияние Compose на developer experience: скорость сборки, возня с версиями зависимостей.
- Перевели на Compose наименее популярный экран – список опенсорсных лицензий
- Перевели на Compose свои внутренние инструменты
- Начали постепенно переводить на Compose компоненты своей дизайн-системы, затаскивая таким образом его на все экраны в приложении
Как и в других приложениях с огромной кодовой базой и несколькими мобильными командами, в Tinder не были готовы сходу тащить Compose в бой. Они выбрали очень плавную стратегию внедрения.
- Создали демо-приложение, в котором реализовали несколько типичных для Tinder контролов и экранов с помощью Compose, дали команде с ним поиграться
- Оценили влияние Compose на developer experience: скорость сборки, возня с версиями зависимостей.
- Перевели на Compose наименее популярный экран – список опенсорсных лицензий
- Перевели на Compose свои внутренние инструменты
- Начали постепенно переводить на Compose компоненты своей дизайн-системы, затаскивая таким образом его на все экраны в приложении
Kotlin на Android стукнуло 5 лет
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Kevlar – библиотека с набором проверок безопасности
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение Appyx и Compose Navigation
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Команды Почты и Облака Mail.ru ищут Android-разработчиков и запускают Weekend Offer
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Android 13 – основные изменения для разработчиков
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Гайд по миграции на Android 13
- Изменения в Media и Notifications permission’ах
- Отдельный permission для использования Advertising ID
- Изменения в поведении BOOT_COMPLETED и LOCKED_BOOT_COMPLETED событий
- Пользователь может остановить ваш foreground service и само приложение
- Изменения в Media и Notifications permission’ах
- Отдельный permission для использования Advertising ID
- Изменения в поведении BOOT_COMPLETED и LOCKED_BOOT_COMPLETED событий
- Пользователь может остановить ваш foreground service и само приложение
Medium
Migrating My App To Android 13
Lessons Learned from updating my app to targetSdkVersion 33
Расследование загадочного креша
Автор статьи столкнулся с очень странным крешом на стыке Java и Kotlin кода. Расследование завело его в кишки того, как работают оптимизации R8 и компиляция Kotlin Extensions.
Автор статьи столкнулся с очень странным крешом на стыке Java и Kotlin кода. Расследование завело его в кишки того, как работают оптимизации R8 и компиляция Kotlin Extensions.
Первое продакшн приложение с Compose for iOS
Touchlab, авторы кучи библиотек и инструментов для КММ, выпустили первое приложение, UI которого полностью реализован на Compose для обеих платформ. Код приложения можно посмотреть здесь.
Touchlab, авторы кучи библиотек и инструментов для КММ, выпустили первое приложение, UI которого полностью реализован на Compose для обеих платформ. Код приложения можно посмотреть здесь.
touchlab.co
Droidcon NYC iOS app with Compose
Touchlab has been doing a lot of tooling work and research lately, mostly around iOS developer experience and KMP. We forked the Droidcon app into a private repo to dogfood some of that stuff an...
Micro – простой и удобный текстовый редактор для консоли
- Micro – идейный наследник редактора nano
- Редактор поставляется отдельным бинарником, не нужны никакие зависимости
- Поддержка множественных курсоров и удобных хоткеев
- Отличная работа с мышкой
- Написан на Go и полностью кроссплатформенный
- Есть автокомплишн и подсветка синтаксиса для 130 языков
- Поддерживает плагины
- Micro – идейный наследник редактора nano
- Редактор поставляется отдельным бинарником, не нужны никакие зависимости
- Поддержка множественных курсоров и удобных хоткеев
- Отличная работа с мышкой
- Написан на Go и полностью кроссплатформенный
- Есть автокомплишн и подсветка синтаксиса для 130 языков
- Поддерживает плагины
Недостатки Kotlin и способы их обойти
- Стандартная библиотека и языковые фичи подталкивают к злоупотреблению работой с nullable, из-за чего код становится плохо читаемым
- Использование nullable в качестве возвращаемого значения – не очень выразительно, так как сложно понять, что в конкретном случае означает null
- Отсутствие union-типов ведет к переусложненному коду
- Операции над коллекциями задизайнены так, что очень легко копировать всю коллекцию без реальной необходимости
- Стандартная библиотека и языковые фичи подталкивают к злоупотреблению работой с nullable, из-за чего код становится плохо читаемым
- Использование nullable в качестве возвращаемого значения – не очень выразительно, так как сложно понять, что в конкретном случае означает null
- Отсутствие union-типов ведет к переусложненному коду
- Операции над коллекциями задизайнены так, что очень легко копировать всю коллекцию без реальной необходимости