Твиттер-тред с советами по измерению скорости навигации в приложении от инженера из Square.
https://twitter.com/piwai/status/1462492869160103938?s=21
https://twitter.com/piwai/status/1462492869160103938?s=21
Twitter
Py ⚔
I've learnt a few interesting things about monitoring perf for mobile app from production, more specifically navigation latency. Let's do a quick thread: 👇🧵 #AndroidDev
Тред на Reddit с обсуждением того, есть ли преимущества у Ktor перед Retrofit.
https://www.reddit.com/r/androiddev/comments/rqzdcz/are_you_using_ktor_instead_of_retrofit_in_your
https://www.reddit.com/r/androiddev/comments/rqzdcz/are_you_using_ktor_instead_of_retrofit_in_your
Reddit
r/androiddev on Reddit: Are you using ktor instead of retrofit in your company?
Posted by u/BraveEvidence - 21 votes and 38 comments
Видео с разбором того, как все языковые конструкции Kotlin выглядят в JVM-байткоде.
https://youtube.com/watch?v=6pWXre4gDyM
https://youtube.com/watch?v=6pWXre4gDyM
YouTube
Kotlin: Decompiled – How its features are represented on the JVM
Have you ever wondered how the Kotlin compiler pulls off all those nice features when having the JVM as the target platform? Some of Kotlin's features have no clear equivalent in Java/JVM bytecode which means that the compiler has to do a lot of heavy lifting…
Про использование WorkManager для запуска задач в отдельных процессах на примере библиотеки LeakCanary.
https://py.hashnode.dev/workmanager-multi-process-for-libraries
https://py.hashnode.dev/workmanager-multi-process-for-libraries
P-Y's blog
WorkManager multi-process for libraries
How Leakcanary leverages WorkManager multi-process
Учимся находить и исправлять блокирующие вызовы внутри корутин.
https://www.thedevtavern.com/blog/posts/why-are-my-coroutines-slow/
https://www.thedevtavern.com/blog/posts/why-are-my-coroutines-slow/
Thedevtavern
Why are my coroutines slow?
In this post, we will discover the consequences of making blocking calls inside coroutines, what strategies we can use to deal with them, and how to detect illegitimate blocking calls inside coroutines in practice using Blockhound!
Jetpack Compose позволяет довольно просто реализовать серверсайд-рендеринг на JSON’ах.
https://medium.com/mobile-app-development-publication/jetpack-compose-enables-json-defined-view-layout-b1f8a0d5df8c
https://medium.com/mobile-app-development-publication/jetpack-compose-enables-json-defined-view-layout-b1f8a0d5df8c
Medium
Jetpack Compose Enables JSON Defined View Layout
Making a more dynamic layout from the server payload
Финальная часть шикарной серии статей про работу с Bluetooth LE APIs.
https://www.hellsoft.se/bluetooth-le-for-modern-android-development-part-3/
https://www.hellsoft.se/bluetooth-le-for-modern-android-development-part-3/
Hellsoft
Bluetooth LE for modern Android Development - part 3
This is the final part of my new series on Bluetooth Low Energy for Android. It
took much longer to complete this post than I expected, much because I rewrote
parts of the code I show here when I found a better solution.
In my last two
[https://www.hellsoft.
took much longer to complete this post than I expected, much because I rewrote
parts of the code I show here when I found a better solution.
In my last two
[https://www.hellsoft.
Недавно в Gradle появилась поддержка text fixtures. специального типа зависимости, который позволяет переиспользовать тестовые хелперы в разных модулях проекта. В статье рассказывается про ограничения этой фичи и то, как завести ее на своем проекте.
https://emartynov.medium.com/android-gradle-plugin-with-test-fixtures-support-411383320980
https://emartynov.medium.com/android-gradle-plugin-with-test-fixtures-support-411383320980
Medium
Android Gradle plugin with Test Fixtures support
10 May 2022 UPDATE
Вышел Moshi-IR – компиляторный плагин для Moshi, заменяющий кодогенерацию с помощью Kapt/KSP. Билдитсч быстрее, нет рефлексии, лучше сообщения об ошибках. Больше деталей и ссылка на гитхаб – в треде.
https://twitter.com/zacsweers/status/1479166647839690753
https://twitter.com/zacsweers/status/1479166647839690753
Twitter
Zac Sweers
Introducing Moshi-IR — a Kotlin IR compiler plugin for Moshi (and moshi-sealed) code gen. github.com/ZacSweers/Mosh… It’s available in MoshiX 0.16.1 and a MUCH faster drop-in replacement for Kapt/KSP Moshi code gen plus some improved runtime optimizations…
Используете мультиплатформу? Пора проходить очередной опрос от команды Котлина! Делитесь своим опытом, рассказывайте о болях, и мы обязательно их поправим.
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!