Если вам нужно подключить к проекту сразу несколько модулей одной библиотеки, попробуйте использовать BOM файлы – источники правды о том, какие конкретно версии модулей должны использоваться в проекте, с учетом транзитивных зависимостей.
Cash App Code Blog
Synchronize Dependencies with BOM
Keeping multiple dependencies of the same group in sync can be tricky. BOM makes it safe.
Пример того, как Kotlin Sequences могут помочь при реализации пагинации в приложении.
Kessir
Using Kotlin Sequences to abstract pagination
Let's assume you need to process millions of records from some third party data source. This data source will usually provide a pagination mechanism...
Успейте подать заявку на Weekend Offer в мессенджер VK Teams для мобильных разработчиков и получите оффер всего за два дня, а бонусом доп. зарплату на старте.
Зарегистрироваться
📌Первая встреча состоится до 22 апреля: с вами свяжутся после получения заявки.
📌23 апреля вас ждет знакомство с командой и технические собеседования.
📌Финальные собеседования проведут 24 апреля и вечером отправят лучшим кандидатам офферы.
Узнайте подробнее в видеоприглашении о продукте и задачах, которые вас ждут, и не упускайте свой шанс!
Зарегистрироваться
📌Первая встреча состоится до 22 апреля: с вами свяжутся после получения заявки.
📌23 апреля вас ждет знакомство с командой и технические собеседования.
📌Финальные собеседования проведут 24 апреля и вечером отправят лучшим кандидатам офферы.
Узнайте подробнее в видеоприглашении о продукте и задачах, которые вас ждут, и не упускайте свой шанс!
Статья про то, как тестировать анимации в Compose с помощью фреймворка «Compose UI Test», на выходе которых вы получаете скриншоты результата.
Mobile development with Alex
Jetpack Compose: Testing animations
Designers and developers pay more attention to animations. This article will explore how to test animation created with Jetpack Compose.
Выпуск подкаста Happy Path Programming с Романом Елизаровым про то, как принимаются решения по языковому дизайну в Kotlin.
Spotify for Podcasters
#60 Kotlin Language Design with Roman Elizarov by Happy Path Programming
Kotlin Language designer Roman Elizarov, joins us to talk about finding the right balances when designing Kotlin.
Discuss this episode: https://discord.gg/nPa76qF
Discuss this episode: https://discord.gg/nPa76qF
Все еще не разобрались, зачем нужны Context Receivers? Это видео поможет разобраться.
YouTube
Context Receivers Are Coming to Kotlin!
Kotlin 1.6.20 comes with a new toy: Context Receivers. You can use them to elegantly constrain functions (and more!) to a specific context from which they can be called. Sebastian (https://twitter.com/sebi_io) helps you figure out what exactly that means:…
В Jetpack Compose 1.2.0 добавили возможность репортить различные перфоманс метрики во время сборки. Держите лучший пост прошлой недели про то, как Compose работает под капотом и какие решения могут ухудшить или улучшить эти метрики.
Keep rules – это фича ProGuard, которая позволяет сохранять оригинальные имена классов или функций после оптимизации кода. Это нужно, например, для того, чтобы не ломалась логика, основанная на рефлексии. С Java все работает просто, а вот использование keep rules с Kotlin не так очевидно.
Guardsquare
Keep Rules in the Age of Kotlin | Guardsquare
Learn why you need to think in terms of Java when writing keep rules for Kotlin code and how to maintain security in the Age of Kotlin Programming Language.
Текст про историю создания и развития протокола JSON. Пара фактов для затравочки:
📌Ключи в JSON помещаются в кавычки по историческим причинам – чтобы при скармливании его интерпретатору JavaScript не возникало коллизий по зарезервированным словам.
📌Великолепная цитата автора JSON в ответ на набросы про то, что он переизобрел XML: «The good thing about reinventing the wheel is that you can get a round one».
📌Ключи в JSON помещаются в кавычки по историческим причинам – чтобы при скармливании его интерпретатору JavaScript не возникало коллизий по зарезервированным словам.
📌Великолепная цитата автора JSON в ответ на набросы про то, что он переизобрел XML: «The good thing about reinventing the wheel is that you can get a round one».
twobithistory.org
The Rise and Rise of JSON
Команда Slack выложила в открытый доступ свой внутренний Gradle плагин. Посмотрите, чтобы вдохновиться:
📌Базовая конфигурация для Kotlin и Android
📌Специальный DSL для включения и выключения частых зависимостей
📌Метрики модульности
📌И много разных тасок, которые вы сможете попробовать забрать и в свой проект
📌Базовая конфигурация для Kotlin и Android
📌Специальный DSL для включения и выключения частых зависимостей
📌Метрики модульности
📌И много разных тасок, которые вы сможете попробовать забрать и в свой проект
GitHub
GitHub - slackhq/slack-gradle-plugin: Gradle and IntelliJ build tooling used in Slack's Android repo
Gradle and IntelliJ build tooling used in Slack's Android repo - slackhq/slack-gradle-plugin
Гайд из четырех частей по тому, как использовать KSP:
1️⃣Введение
2️⃣Настройка проекта и написание первого процессора
3️⃣Кодогенерация
4️⃣Использование сгенеренных классов в приложении
1️⃣Введение
2️⃣Настройка проекта и написание первого процессора
3️⃣Кодогенерация
4️⃣Использование сгенеренных классов в приложении
DEV Community
Android KSP guide for dummies by a Dummy: Part 1
KSP, Kotlin Symbol Processing is answer to annotation processing for Kotlin by google. It replaces...
Продолжение истории внедрения KMM в приложение Qiwi – в этот раз не столько про код, сколько про выбор технологии, разработку прототипа и продажу решения в другие команды. Ребята пишут, что за последний год каждая новая фича пишется уже с использованием КММ – так что их точно стоит послушать.
Хабр
Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
Это продолжение нашего рассказа о внедрении Kotlin Multiplatform Mobile в QIWI. Если хотите узнать больше про технику, посмотреть на код, переходите в первую часть . В этой статье будет больше...
Twitter рассказали, что все новые фичи в приложении теперь будут разрабатываться на Compose. По их отзывам в результате перехода стало меньше бойлерплейта, упростилось тестирование и уменьшилось общее количество UI багов.
Android Developers Blog
Twitter going all in on Jetpack Compose for feature development: greater productivity, less bugs
Posted by The Android Team As one of the most widely used social media platforms, Twitter is always hunting for ways to...
Хороший вводный материал в Jetpack Macrobenchmark – библиотеку для измерения перфоманса различных сценариев в приложении локально и на CI. В гайде разбирается, как добавить бенчмарк в свой проект, начать измерять время старта приложения и скорость появления фреймов.
Medium
Measure and improve performance with Macrobenchmark
Introduction to Jetpack Macrobenchmark and Baseline Profiles
Еще одна статья с критикой архитектурных гайдлайнов Google. Автор разбирается с тем, в чем конкретно роль View слоя, сколько и какой логики можно там держать.
Rock and Null
What should the View layer be responsible for in Android?
When it comes to software architecture, there's no truly a single universal way of doing things. And the "borders" between layers, no matter how hard you might try to describe them, are subjective.
Подборка коротких Tips&Tricks по работе с Kotlin от команды его разработки:
0️⃣Operators and Nullable Values
⏱Timing Code
👨🎤Elvis Operator
♾Loops
🎁Collections
📘Strings
0️⃣Operators and Nullable Values
⏱Timing Code
👨🎤Elvis Operator
♾Loops
🎁Collections
📘Strings
YouTube
Operator Functions With Nullable Values | Kotlin Tips 2023
In Kotlin, you can override operators like addition and subtraction for your classes and supply your own logic. But what if you want to allow null values, both on their left and right sides?
In this episode of Kotlin Tips, Sebastian (https://twitter.com/sebi_io)…
In this episode of Kotlin Tips, Sebastian (https://twitter.com/sebi_io)…
Разработчики OkHttp рассказывают, как вместо того, чтобы добавлять в библиотеку логи, они решили предоставить абстрактный класс EventListener. Это удобно, потому что пользователи библиотеки могут реализовывать свою логику для обработки ключевых событий библиотеки – использовать свой любимый логгер, подключать метрики. В общем, присмотритесь к использованию EventListener и в своих собственных библиотек и приложениях!
Public Object
EventListener is Like Logging, But Good
In 2013 I opened OkHttp Issue #270, ‘Analytics API’. The request was to just add some debug logging: We should add verbose logging for the response cache. Folks occasionally are puzzled when the cache doesn't work. Let's make it easy for them to figure out…
Слайды топовейшего доклада Zac Sweers про различные способы и инструменты ускорения сборки проекта. Самого доклада в доступе еще нет, но слайды вполне самодостаточны.
Speaker Deck
Improve Build Times in Less Time
Build times are never as fast as we want but there is a lot you can do to improve them today without being a Gradle domain expert or buying everyone new computers! In this talk we'll cover a number of different tools, patterns, and common pitfalls to avoid…
Админ нашего айосного чата Евгений Елчев закончил записывать свой бесплатный курс по Dart и Flutter. Все космические 102 урока доступны на Youtube, смотрите их и подписывайтесь на Женю, он крутой!
Compose, Kotlin Flow, MultiModule: в Ozon Tech открылся набор на бесплатный курс для Android-разработчиков
Тебя ждет:
🔹Два месяца онлайн-занятий
🔹Менторство от экспертов и тьюторов
🔹Опыт разработчиков лидирующего e-com с настоящим highload
🔹Офферы в Ozon для лучших выпускников
🔹Вебинары по вторникам и четвергам с 19:00 до 21:00
🔹Воркшопы по субботам с разбором кейсов от экспертов e-com
Как попасть на курс?
Оставь заявку на сайте ➡️ 15 мая пройди отборочный контест ➡️ попади в рейтинг лучших ➡️ развивайся под менторством экспертов Ozon.
Регистрация на курс
Тебя ждет:
🔹Два месяца онлайн-занятий
🔹Менторство от экспертов и тьюторов
🔹Опыт разработчиков лидирующего e-com с настоящим highload
🔹Офферы в Ozon для лучших выпускников
🔹Вебинары по вторникам и четвергам с 19:00 до 21:00
🔹Воркшопы по субботам с разбором кейсов от экспертов e-com
Как попасть на курс?
Оставь заявку на сайте ➡️ 15 мая пройди отборочный контест ➡️ попади в рейтинг лучших ➡️ развивайся под менторством экспертов Ozon.
Регистрация на курс