Используете мультиплатформу? Пора проходить очередной опрос от команды Котлина! Делитесь своим опытом, рассказывайте о болях, и мы обязательно их поправим.
https://kotl.in/multiplatform-survey-winter-22
https://kotl.in/multiplatform-survey-winter-22
Jetbrains
RSCH-3434 Kotlin Multiplatform User Survey: Winter 2022
RSCH-3434 Kotlin Multiplatform User Survey: Winter 2022.
Доклад про то, как в Twitter используется Compose, как в целом устроена архитектура их UI слоя, как происходил адопшн технологии и с какими проблемами команда столкнулась на масштабе.
https://youtu.be/ujC_YkZMEqg
https://youtu.be/ujC_YkZMEqg
YouTube
Android UIs at Scale: UI Architecture in the Compose world
This is a recording of the talk that I presented in 360AnDev 2021, "Android UIs at Scale: UI Architecture in the Compose world".
Android UIs are experiencing a paradigm shift with the advent of Jetpack Compose, and it's necessary for us to prepare for it.…
Android UIs are experiencing a paradigm shift with the advent of Jetpack Compose, and it's necessary for us to prepare for it.…
Обновился официальный гайд по тому, как правильно процессить данные в бэкграунде. Если кратко, то рекомендуется использовать WorkManager для персистентных задач и корутины для всего, что не требует хранения данных.
https://goo.gle/background-guide
https://goo.gle/background-guide
Android Developers
Guide to background work | Android Developers
Команда мобильной разработки Slack поделилась историей масштабного рефакторинга своих мобильных приложений, получившего название «Дупло». По ссылке – первая часть цикла, в которой команда рассказывает про историю развития их архитектуры, цели рефакторинга и выбранные метрики. Если вы тоже работаете над проектом с огромной легаси кодовой базой, обязательно прочитайте!
https://slack.engineering/stabilize-modularize-modernize-scaling-slacks-mobile-codebases/
https://slack.engineering/stabilize-modularize-modernize-scaling-slacks-mobile-codebases/
Slack Engineering
Stabilize, Modularize, Modernize: Scaling Slack’s Mobile Codebases - Slack Engineering
When do you need to overhaul a large code base to address tech debt? What is the best way to address widespread inconsistencies and outdated patterns? How can you make significant architectural improvements to a complex application while still continuing…
Сборник законов и принципов разработки софта, с каждым из которых стоит быть знакомым в том числе при разработке iOS приложений.
Несколько примеров:
- Закон Конвея. Архитектура системы отражается в структуре организации, которая ее разрабатывает.
- Закон Галла. Любая работающая сложная система начиналась с другой работающей системы меньшей сложности. Иначе говоря, сложные системы, задизайненные с нуля, обречены на провал.
- Закон Хайрума. Не важно, что вы обещаете в контрактах своего API – при достаточном количестве пользователей, кто-то будет зависеть от всех его свойств, даже не явных и приватных.
https://github.com/dwmkerr/hacker-laws
Несколько примеров:
- Закон Конвея. Архитектура системы отражается в структуре организации, которая ее разрабатывает.
- Закон Галла. Любая работающая сложная система начиналась с другой работающей системы меньшей сложности. Иначе говоря, сложные системы, задизайненные с нуля, обречены на провал.
- Закон Хайрума. Не важно, что вы обещаете в контрактах своего API – при достаточном количестве пользователей, кто-то будет зависеть от всех его свойств, даже не явных и приватных.
https://github.com/dwmkerr/hacker-laws
GitHub
GitHub - dwmkerr/hacker-laws: 💻📖 Laws, Theories, Principles and Patterns that developers will find useful. #hackerlaws
💻📖 Laws, Theories, Principles and Patterns that developers will find useful. #hackerlaws - dwmkerr/hacker-laws
На выходных копнем чуть в сторону от мобильной разработки. Держите классный материал от Cloudflare про то, как работают UDP сокеты.
https://blog.cloudflare.com/everything-you-ever-wanted-to-know-about-udp-sockets-but-were-afraid-to-ask-part-1/
https://blog.cloudflare.com/everything-you-ever-wanted-to-know-about-udp-sockets-but-were-afraid-to-ask-part-1/
The Cloudflare Blog
Everything you ever wanted to know about UDP sockets but were afraid to ask, part 1
Historically Cloudflare's core competency was operating an HTTP reverse proxy. We've spent significant effort optimizing traditional HTTP/1.1 and HTTP/2 servers running on top of TCP. Recently though, we started operating big scale stateful UDP services.
Кстати, Костя Цховребов запилил классную штуку – web-визард для создания Kotlin Multiplatform проектов. Выбираете нужные платформы, библиотеки и версию языка – и проект готов!
https://terrakok.github.io/kmp-web-wizard/
https://terrakok.github.io/kmp-web-wizard/
Новая часть цикла статей про корутины. На этот раз разбирается механизм Jobs, их жизненный цикл и то, как в него встраивается обработка исключений. Помимо общей теории есть много конкретных примеров и разбор эдж кейсов.
https://maxkim.eu/things-every-kotlin-developer-should-know-about-coroutines-part-4-exception-handling
https://maxkim.eu/things-every-kotlin-developer-should-know-about-coroutines-part-4-exception-handling
Art and science of writing good code
Things you should know about Coroutines. Part 4: Exception Handling.
In this article, we discuss everything you need to know about exception handling in coroutines.
Если вы работете с Flow, то обязательно посмотрите на библиотеку turbine от cashapp. Она позволяет очень просто писать тесты – достаточно просто вызвать
https://github.com/cashapp/turbine
.test
на флоу и вызвать нужные ассерты.https://github.com/cashapp/turbine
GitHub
GitHub - cashapp/turbine: A testing library for kotlinx.coroutines Flow
A testing library for kotlinx.coroutines Flow. Contribute to cashapp/turbine development by creating an account on GitHub.
19 и 20 января в 20:00 в OTUS пройдет 2-дневный интенсив по мобильной разработке «Flutter engine, анимация и ее оптимизация».
✔️ Рассмотрим самые глубокие механизмы Flutter engine.
✔️ Научимся создавать сложные и плавные анимации как на мобильных платформах, так и на веб.
✔️ Научимся использовать инструменты профилирования для исключения «замерзания» интерфейса.
✔️ Обсудим тему использования WebGL в веб-приложениях на Flutter для создания трехмерных сцен.
Интенсив бесплатный и позволяет протестировать обучение на онлайн-курсе «Flutter Mobile Developer» от OTUS. Программа подойдет тем, у кого уже есть опыт в программировании. Для записи на интенсив пройдите вступительный тест.
👉 Регистрация на 1-й день интенсива: https://otus.pw/YXYb/
👉 Регистрация на 2-й день интенсива: https://otus.pw/aYbn/
✔️ Рассмотрим самые глубокие механизмы Flutter engine.
✔️ Научимся создавать сложные и плавные анимации как на мобильных платформах, так и на веб.
✔️ Научимся использовать инструменты профилирования для исключения «замерзания» интерфейса.
✔️ Обсудим тему использования WebGL в веб-приложениях на Flutter для создания трехмерных сцен.
Интенсив бесплатный и позволяет протестировать обучение на онлайн-курсе «Flutter Mobile Developer» от OTUS. Программа подойдет тем, у кого уже есть опыт в программировании. Для записи на интенсив пройдите вступительный тест.
👉 Регистрация на 1-й день интенсива: https://otus.pw/YXYb/
👉 Регистрация на 2-й день интенсива: https://otus.pw/aYbn/
Otus
Мобильный разработчик на Flutter. Освойте навыки кроссплатформенной мобильной разработки
Станьте профессиональным разработчиков но FLutter. Пройдите курс в Otus и научитесь профессиональной мобильной разработке на Flutter
Лайфхак. Если эмулятор на вашей машине тормозит, попробуйте использовать более старую его версию. Например, API 21 намного более шустрый, чем API 30.
https://twitter.com/alexstyl/status/1481947417700454401?s=21
https://twitter.com/alexstyl/status/1481947417700454401?s=21
Twitter
Alex Styl ☕️ 📘
An Android dev tip that no one is talking about: If the emulator is too slow for you, consider using an older emulator instead of the latest one. 🐢 API 30 can barely be used on my 7 y.o mbp 🚀 API 21 is near smooth and Compose works great!
Duration API выходит из Experimental, а значит, самое время разобраться с ним поподробнее. В заметке рассматриваются его основные функции и примеры использования в стандартной библиотеке языка.
https://lengrand.fr/measuring-time-and-durations-in-kotlin/
https://lengrand.fr/measuring-time-and-durations-in-kotlin/
Julien's DevRel corner
Measuring time and durations in Kotlin
The DurationAPI is coming out of experimental stage, and offers a nice DSL to easily work with Time durations (duh!). If offers the obvious but also nice extra goodies like coercions and ISO/ String conversions and is notably used to calculate processing…
А стоит ли экспериментировать с кроссплатформой? Какое решение выбрать? Если эти вопросы периодически всплывают в обсуждениях в вашей команде, то вот неплохое видео со сравнением плюсов и минусов Flutter и Kotlin Multiplatform.
https://youtube.com/watch?v=jIgiHYn9xbo
https://youtube.com/watch?v=jIgiHYn9xbo
YouTube
Что хуже: Кotlin Multiplatform или Flutter? // Мобильный разработчик
В интернетах не утихают споры о том, какую из двух технологий использовать - Flutter или Kotlin Multiplatform? В этом видео мы попытаемся разобраться и разложить по полочкам, что из этого лучше использовать
Тайм коды
00:00:00 — Введение
00:00:37 — Что и…
Тайм коды
00:00:00 — Введение
00:00:37 — Что и…
Один из плюсов затаскивания КММ в свой проект – возможность иметь один общий тест сьют на iOS и Android. Тесты пишутся один раз, проверяют один и тот же код, красота. Ребята из TouchLab написали хороший гайд про то, как подойти к написанию мультиплатформенных тестов.
https://touchlab.co/understanding-and-configuring-your-kmm-test-suite/
https://touchlab.co/understanding-and-configuring-your-kmm-test-suite/
touchlab.co
Understanding and Configuring your Kotlin Multiplatform Mobile Test Suite
Writing tests is part of every developer's day-to-day routine. They help you write better and more reliable code. In addition, they can verify that your code does what it was supposed to do, and...
Я хочу активно развивать канал дальше, но для этого мне хочется узнать побольше про вас: как давно вы занимаетесь Android разработкой, зачем подписаны на канал и какими темами интересуетесь. Я подготовил небольшой опрос, прохождение которого займет у вас не больше 3-5 минут. А чтобы мотивировать вас ответить на мои вопросы, между участниками я разыграю две проходки на ближайшую конференцию Podlodka Android Crew, и замечательную книгу "Код: Тайный язык информатики"!
https://forms.gle/wyPuYdbexrekrepaA
https://forms.gle/wyPuYdbexrekrepaA
Google Docs
Опрос подписчиков Android Good Reads
Чтобы понять, как дальше развивать канал, мне надо получше узнать его текущих читателей. Ответьте на несколько вопросов – а я за это разыграю несколько билетов на Podlodka Android Crew (podlodka.io/droidcrew) и замечательную книгу «Код: Тайный язык информатики»!
Работа с контактами в Android никогда не была простой. На днях вышла Kotlin-first библиотека, которая скрывает за собой всю сложность работы с ContactsProvider.
https://github.com/vestrel00/contacts-android
https://github.com/vestrel00/contacts-android
GitHub
GitHub - vestrel00/contacts-android: Android Contacts API Library written in Kotlin with Java interoperability. No more ContentProviders…
Android Contacts API Library written in Kotlin with Java interoperability. No more ContentProviders and cursors. Say goodbye to ContactsContract. Build your own contacts app! - vestrel00/contacts-a...
Новый выпуск Android Developers Backstage подкаста. В этот раз ребята из Google обсуждают недавно обновленные архитектурные гайдлайны, которые вызвали немало шума.
https://adbackstage.libsyn.com/episode-181-architecture-fewer-bugs-at-the-end
https://adbackstage.libsyn.com/episode-181-architecture-fewer-bugs-at-the-end
Libsyn
Android Developers Backstage: Episode 181: Architecture → Fewer bugs at the end
In this episode, we chat with Yigit Boyar (again!) from the Android Toolkit Team and Manuel Vivo from the Developer Relations team about application architecture. The team has released new architecture guidance, and we talk about that guidance here, as well…
С приходом Compose дизайн-системы получают второе рождение, потому что создавать новые и расширять существующие компоненты стало проще. Автор статьи приводит пример создания простой дизайн-системы поверх Material UI. Отталкиваясь от него, сможете затащить похожий подход и в свои проекты.
https://proandroiddev.com/building-design-system-with-jetpack-compose-1208c250ae75
https://proandroiddev.com/building-design-system-with-jetpack-compose-1208c250ae75
Medium
Building design system with Jetpack Compose
Understand Material Design and custom design systems built in Jetpack Compose
Как только ваш проект и команда вокруг него начинают расти, вы все чаще слышите недовольство про растущее время билда. Первый шаг на пути к его исправлению – научиться его измерять и мониторить ситуацию. Square делятся своим опытом измерения билдтайма как на CI, так и на машинах отдельных разработчиков.
https://developer.squareup.com/blog/measure-measure-measure/
https://developer.squareup.com/blog/measure-measure-measure/
Square Corner Blog
Measure, measure, measure
A journey about how to measure build times for Android
Продолжим тему скорости билда. Кирилл Розов собрал бенчмарк по скорости сборки Android проектов на различных машинах. Обязательно посмотрите на результаты перед тем, как выбирать себе новый макбук.
https://habr.com/ru/company/surfstudio/blog/646677/
https://habr.com/ru/company/surfstudio/blog/646677/
Хабр
Бенчмарк реальных Android-проектов на современных MacBook
Если вы интересуетесь разработкой под Android, то, скорее всего, слышали о Telegram-канале «Android Broadcast» с ежедневными новостями для Android-разработчиков и одноимённом...