Привет! Это Podlodka Android Crew. Спешим объявить тему нового сезона — она ле-ген-дарная! Обсудим Jetpack Compose и KMM в продакшене в подробностях.
Мы подготовили уникальный набор докладов, которые представляют собой продвинутый курс по Jetpack Compose. В сети едва ли можно найти больше нескольких разрозненных докладов об этом. Мы же собрали реальный опыт людей, которые применяли Jetpack Compose и KMM на больших проектах. На нашей конфе они готовы этим опытом щедро поделиться. Разберём кросплатформенные кейсы и сценарии, которые ещё никто не раскрывал:
🧩 Научимся переходить на Jetpack Compose без остановки разработки фич с Никитой Куликовым;
🧩 Рассмотрим проблемы навигации Jetpack Compose и как их решить, с Алексеем Пановым;
🧩 Узнаем, как организовать DI в KMM, с Анной Жарковой;
🧩 А ещё поговорим про кроссплатформенный UI.
Стартуем 3 апреля! Ранним пташкам — скидка 🤑
Это не всё — следите за обновлениями и покупайте билет на сайте: https://podlodka.io/droidcrew
Мы подготовили уникальный набор докладов, которые представляют собой продвинутый курс по Jetpack Compose. В сети едва ли можно найти больше нескольких разрозненных докладов об этом. Мы же собрали реальный опыт людей, которые применяли Jetpack Compose и KMM на больших проектах. На нашей конфе они готовы этим опытом щедро поделиться. Разберём кросплатформенные кейсы и сценарии, которые ещё никто не раскрывал:
🧩 Научимся переходить на Jetpack Compose без остановки разработки фич с Никитой Куликовым;
🧩 Рассмотрим проблемы навигации Jetpack Compose и как их решить, с Алексеем Пановым;
🧩 Узнаем, как организовать DI в KMM, с Анной Жарковой;
🧩 А ещё поговорим про кроссплатформенный UI.
Стартуем 3 апреля! Ранним пташкам — скидка 🤑
Это не всё — следите за обновлениями и покупайте билет на сайте: https://podlodka.io/droidcrew
Летние школы Академии Яндекса в этом году пройдут сразу в трех странах: России, Сербии и Казахстане
Продолжается набор разработчиков, менеджеров и аналитиков с опытом работы в IT по 4 направлениям:
- Школа фронтенда
- Школа мобильной разработки (iOS, Android, Flutter)
- Школа бэкенд-разработки (Python, Java, C++, Go)
- Школа менеджеров (управление проектами и продуктами, маркетинг, продуктовая аналитика)
Обучение проходит в 2 этапа: онлайн-лекции с теорией и выполнением заданий, а после — практика с работой над реальными проектами в офисах Яндекса в Москве, Белграде и Алматы. Иногородним студентам, успешно прошедшим онлайн-этап, Яндекс оплатит билеты и проживание на период практики. Лучшим студентам предложат оплачиваемую стажировку или оффер в штат 💻
Чтобы пройти отбор, регистрируйтесь на сайте Летних школ и выполняйте тестовое задание. Дедлайн по вступительным испытаниям: до 13 апреля — для менеджеров, до 27 апреля — для разработчиков.
Продолжается набор разработчиков, менеджеров и аналитиков с опытом работы в IT по 4 направлениям:
- Школа фронтенда
- Школа мобильной разработки (iOS, Android, Flutter)
- Школа бэкенд-разработки (Python, Java, C++, Go)
- Школа менеджеров (управление проектами и продуктами, маркетинг, продуктовая аналитика)
Обучение проходит в 2 этапа: онлайн-лекции с теорией и выполнением заданий, а после — практика с работой над реальными проектами в офисах Яндекса в Москве, Белграде и Алматы. Иногородним студентам, успешно прошедшим онлайн-этап, Яндекс оплатит билеты и проживание на период практики. Лучшим студентам предложат оплачиваемую стажировку или оффер в штат 💻
Чтобы пройти отбор, регистрируйтесь на сайте Летних школ и выполняйте тестовое задание. Дедлайн по вступительным испытаниям: до 13 апреля — для менеджеров, до 27 апреля — для разработчиков.
Android-разработчики, хотите поработать над разработкой новых устройств с ОС «Салют-ТВ»: SberTV, SberBox, SberTime, SberPortal, SberBoxTop? Тогда регистрируйтесь на One Day Offer, который пройдет уже 8 апреля 💻
One Day Offer — крутой шанс всего за 1 день познакомиться с командой, пройти все этапы отбора и, возможно, даже получить оффер от крупнейшего банка страны.
Чем занимаются Android-разработчики в Сбере 👇
✔️ Разрабатывают отказоустойчивые решения и системный/прикладной софт для устройств.
✔️ Решают R&D задачи системного, сервисного и прикладного характера.
✔️ Работают над оптимизацией и перфомансом текущих решений, а также над разработкой на стыке различных software/hardware решений.
Если у вас есть опыт работы Android-разработчиком от 2-3 лет и желание работать с технологиями Kotlin, Coroutines, Flow и Android Architecture Components — переходите по ссылке, заполняйте небольшую анкету и готовьтесь к интервью на One Day Offer 👌
One Day Offer — крутой шанс всего за 1 день познакомиться с командой, пройти все этапы отбора и, возможно, даже получить оффер от крупнейшего банка страны.
Чем занимаются Android-разработчики в Сбере 👇
✔️ Разрабатывают отказоустойчивые решения и системный/прикладной софт для устройств.
✔️ Решают R&D задачи системного, сервисного и прикладного характера.
✔️ Работают над оптимизацией и перфомансом текущих решений, а также над разработкой на стыке различных software/hardware решений.
Если у вас есть опыт работы Android-разработчиком от 2-3 лет и желание работать с технологиями Kotlin, Coroutines, Flow и Android Architecture Components — переходите по ссылке, заполняйте небольшую анкету и готовьтесь к интервью на One Day Offer 👌
Когда правильно предлагать внутренние покупки
Сразу предупреждаю – тред по ссылке в первую очередь про iOS. Но, кажется, большая часть корреляций не должны сильно зависеть от платформы. Короче, в чем дело – бывший ментейнер Fastlane, сейчас запускает новый продукт – ContextSDK. Он предсказывает, когда лучше всего предложить пользователю совершить внутреннюю покупку, основываясь на анализе кучи факторов. Он поделилсянесколькими интересными корреляциями поведения пользователей и конверсии в покупку:
🌟Хуже всего люди совершают покупки, когда пользуются приложением на ходу, когда телефон лежит на столе, у него остается мало заряда батареи, или когда он влспроизводит музыку.
🌟Лучше всего конвертятся те, кто лежит или сидит.
🌟Чем новее модель телефона и чем свежее версия операционной системы, тем выше конверсия в покупку.
🌟Время суток тоже влияет. В первой половине дня конверсии в целом лучше.
Сразу предупреждаю – тред по ссылке в первую очередь про iOS. Но, кажется, большая часть корреляций не должны сильно зависеть от платформы. Короче, в чем дело – бывший ментейнер Fastlane, сейчас запускает новый продукт – ContextSDK. Он предсказывает, когда лучше всего предложить пользователю совершить внутреннюю покупку, основываясь на анализе кучи факторов. Он поделилсянесколькими интересными корреляциями поведения пользователей и конверсии в покупку:
🌟Хуже всего люди совершают покупки, когда пользуются приложением на ходу, когда телефон лежит на столе, у него остается мало заряда батареи, или когда он влспроизводит музыку.
🌟Лучше всего конвертятся те, кто лежит или сидит.
🌟Чем новее модель телефона и чем свежее версия операционной системы, тем выше конверсия в покупку.
🌟Время суток тоже влияет. В первой половине дня конверсии в целом лучше.
X (formerly Twitter)
Felix Krause (@KrauseFx) on X
I’ve spent the last months analyzing how to optimize iOS apps to maximize conversion of in-app purchases. Here are the most important things to look out for:
Все виды диалогов в Jetpack Compose
👉В Jetpack Compose есть много разных видов диалогов, например базовый Dialog(), AlertDialogs из Material 2 и Material 3, DatePickerDialog() и Dialog() из библиотеки Wear.
👉Чтобы отобразить или скрыть диалоги, надо просто добавлить или убрать их из дерева.
👉Создание полностью кастомного Dialog() с нуля не всегда необходимо. Вместо этого можно настроить AlertDialog, передав в параметр shape() нужную форму или правильным образом настроив тему.
👉В Jetpack Compose есть много разных видов диалогов, например базовый Dialog(), AlertDialogs из Material 2 и Material 3, DatePickerDialog() и Dialog() из библиотеки Wear.
👉Чтобы отобразить или скрыть диалоги, надо просто добавлить или убрать их из дерева.
👉Создание полностью кастомного Dialog() с нуля не всегда необходимо. Вместо этого можно настроить AlertDialog, передав в параметр shape() нужную форму или правильным образом настроив тему.
Примите участие в Weekend Offer для мобильных разработчиков и получите возможность за одни выходные присоединиться к команде профессионалов.
Таланты ищут в VK Мессенджер, VK Видео, Почту Mail.ru и Облако Mail.ru для на iOS и Android. Пройдите собеседования 20–21 мая и вливайтесь в крутейшие IT-проекты.
Отправить отклик можно до 18 мая включительно.
Таланты ищут в VK Мессенджер, VK Видео, Почту Mail.ru и Облако Mail.ru для на iOS и Android. Пройдите собеседования 20–21 мая и вливайтесь в крутейшие IT-проекты.
Отправить отклик можно до 18 мая включительно.
Возвращение маскота Kotlin
Главный анонс KotlinConf – это, конечно, обновленный маскот! Главные новости:
🎫Маскота зовут Kodee
👾Маскот теперь фиолетовый
🕺Маскот умеет танцевать и гонять на коньках
Использовать ассеты с маскотом, как и его образ, можно как угодно. Если что, стикер-пак для Телеги уже тут!
🌠Ассеты
📝Гайд по использованию
Главный анонс KotlinConf – это, конечно, обновленный маскот! Главные новости:
🎫Маскота зовут Kodee
👾Маскот теперь фиолетовый
🕺Маскот умеет танцевать и гонять на коньках
Использовать ассеты с маскотом, как и его образ, можно как угодно. Если что, стикер-пак для Телеги уже тут!
🌠Ассеты
📝Гайд по использованию
Ищем тестировщика в Compose Multiplatform
Compose Multiplatform – это новый кроссплатформенный UI фреймворк, который разрабатывается в JetBrains. Мы ищем в его команду человека, который будет отвечать за его качество. И вот тут кроется самое интересное, ведь качество делится на два аспекта:
💻Качественный developer experience тех, кто с помощью фреймворка разрабатывает приложения.
🐞Качество приложений, которые получаются на выходе: перфоманс, UX, функциональность.
Несколько примеров задач, которыми предстоит заниматься:
1️⃣Исследовать, как работает нативный скроллинг в iOS приложениях, сравнить его с реализацией скроллинга в Compose Multiplatform, и составить требования по тому, как сделать их максимально похожими.
2️⃣Протестировать API для тестирования приложений на Compose.
3️⃣Написать простое приложение с формой логина и потестировать, как работают все элементы этой формы.
Вакансия подойдет тем, у кого есть опыт разработки тестов или приложений на Kotlin и кто хорошо разбирается в специфике мобильных приложений. Готовы рассматривать и Android-разработчиков, которым интересно заниматься вопросами обеспечения качества, и которые готовы полностью свтичнуться в новую роль!
Вакансия с релокацией: Нидерланды, Германия, Кипр, Сербия или Армения. Отправляйте резюме, а если будут вопросы – пишите напрямую мне (@etolstoy).
Compose Multiplatform – это новый кроссплатформенный UI фреймворк, который разрабатывается в JetBrains. Мы ищем в его команду человека, который будет отвечать за его качество. И вот тут кроется самое интересное, ведь качество делится на два аспекта:
💻Качественный developer experience тех, кто с помощью фреймворка разрабатывает приложения.
🐞Качество приложений, которые получаются на выходе: перфоманс, UX, функциональность.
Несколько примеров задач, которыми предстоит заниматься:
1️⃣Исследовать, как работает нативный скроллинг в iOS приложениях, сравнить его с реализацией скроллинга в Compose Multiplatform, и составить требования по тому, как сделать их максимально похожими.
2️⃣Протестировать API для тестирования приложений на Compose.
3️⃣Написать простое приложение с формой логина и потестировать, как работают все элементы этой формы.
Вакансия подойдет тем, у кого есть опыт разработки тестов или приложений на Kotlin и кто хорошо разбирается в специфике мобильных приложений. Готовы рассматривать и Android-разработчиков, которым интересно заниматься вопросами обеспечения качества, и которые готовы полностью свтичнуться в новую роль!
Вакансия с релокацией: Нидерланды, Германия, Кипр, Сербия или Армения. Отправляйте резюме, а если будут вопросы – пишите напрямую мне (@etolstoy).
JetBrains: Developer Tools for Professionals and Teams
Become the well-awaited Compose Multiplatform Quality Engineer!
Learn more about the position
This media is not supported in your browser
VIEW IN TELEGRAM
17–18 июня Яндекс проводит Weekend Offer Mobile
Всего за 2 дня можно пройти все технические секции и попасть в проект, который покажется самым интересным. Ищут крутых мобильных разработчиков на iOS, Android и Flutter с опытом от 3 лет.
Ребята предлагают работу в любом офисе в России и Беларуси. Некоторые команды приглашают в свои хабы в Армении, Казахстане и Сербии.
Заявки принимаются до 12 июня.
Подробности ищите здесь
Всего за 2 дня можно пройти все технические секции и попасть в проект, который покажется самым интересным. Ищут крутых мобильных разработчиков на iOS, Android и Flutter с опытом от 3 лет.
Ребята предлагают работу в любом офисе в России и Беларуси. Некоторые команды приглашают в свои хабы в Армении, Казахстане и Сербии.
Заявки принимаются до 12 июня.
Подробности ищите здесь
Разбор новых фичей Figma
👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
Пройдете тест — получите подборку легендарных уроков курса. Курс поможет научиться создавать современные кроссплатформенные приложения с помощью Flutter. Результат обучения — свое приложения на Flutter для портфолио.
— «Аркадные игры на Flutter 3»
— «Создание невероятных визуальных эффектов на Flutter»
— «Создаем свою систему координат для RenderObject»
Нативная интеграция информация о продукте www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Гранты от Kotlin Foundation
На KotlinConf рассказали о программе грантов для авторов библиотек. За два месяца пришло целых 100 заявок, из которых отобрали 5 победителей:
⭐️Coil – библиотека для загрузки изображений, которая планирует поддержать KMP
⭐️Store – KMP библиотека для работы с данными
⭐️http4k – серверный фреймворк, который тоже собирается поддержать KMP
⭐️KMP-NativeCoroutines – адаптер для связки корутин и Swift Concurrency
⭐️Lyricist – i18n библиотека для KMP проектов
На KotlinConf рассказали о программе грантов для авторов библиотек. За два месяца пришло целых 100 заявок, из которых отобрали 5 победителей:
⭐️Coil – библиотека для загрузки изображений, которая планирует поддержать KMP
⭐️Store – KMP библиотека для работы с данными
⭐️http4k – серверный фреймворк, который тоже собирается поддержать KMP
⭐️KMP-NativeCoroutines – адаптер для связки корутин и Swift Concurrency
⭐️Lyricist – i18n библиотека для KMP проектов
Kotlin Foundation – official site
The Kotlin Foundation Announces Grants Program Winners
Kotlin Foundation – protect, promote and advance the development of the Kotlin programming language.
Как выбирать метрики перфоманса
Полезные метрики нужно выбирать их таким образом, чтобы они были напрямую привязаны к пользовательскому опыту. Чаще всего это метрики плавности и отзывчивости. Различные рисерчи подсказывают, что целевыми показателями могут быть:
⭐️Для плавности: 11мс на смену кадров
⭐️Для отзывчивости: 69мс на реакцию на действие пользователя
Плавность обычно измеряют, смотря на frame rate и missed frames. Отзывчивость – сильно зависит от юзкейса, но можно смотреть в сторону APDEX, или Interaction to Next Paint.
Полезные метрики нужно выбирать их таким образом, чтобы они были напрямую привязаны к пользовательскому опыту. Чаще всего это метрики плавности и отзывчивости. Различные рисерчи подсказывают, что целевыми показателями могут быть:
⭐️Для плавности: 11мс на смену кадров
⭐️Для отзывчивости: 69мс на реакцию на действие пользователя
Плавность обычно измеряют, смотря на frame rate и missed frames. Отзывчивость – сильно зависит от юзкейса, но можно смотреть в сторону APDEX, или Interaction to Next Paint.
Redwood вышел в Beta
Redwood – это альтернативная реализация кроссплатформенного UI на базе Compose. В отличие от Compose Multiplatform, который рисует компоненты на канвасе, Redwood рендерится с использованием нативных компонентов на каждой из поддерживаемых платформ.
Работает это следующим образом. Вы описываете все компоненты в виде дата классов. Redwood затем генерирует Jetpack Compose или SwiftUI компоненты на их основе.
Так вот, спустя примерно год после анонса, фреймворк выходит в Beta. Одновременно с этим Square, которые и занимаются его разработкой, планируют зарелизить в прод первые экраны, написанные с его помощью.
Redwood – это альтернативная реализация кроссплатформенного UI на базе Compose. В отличие от Compose Multiplatform, который рисует компоненты на канвасе, Redwood рендерится с использованием нативных компонентов на каждой из поддерживаемых платформ.
Работает это следующим образом. Вы описываете все компоненты в виде дата классов. Redwood затем генерирует Jetpack Compose или SwiftUI компоненты на их основе.
Так вот, спустя примерно год после анонса, фреймворк выходит в Beta. Одновременно с этим Square, которые и занимаются его разработкой, планируют зарелизить в прод первые экраны, написанные с его помощью.
Вышел Kotlin 1.9.0
Релиз состоялся уже на прошлой неделе, но это не повод не рассказать о нем в канале! Из самого важного в этом релизе:
👉Переход К2 компилятора в Beta, что значит, что его уже вполне безопасно можно начинать затаскивать в свои JVM проекты.
👉Новый оператор
👉В KMP поддержали Configuration Cache, который сильно улучшит жизнь авторам библиотек.
👉В Kotlin/Native логика линковки библиотек приблизилась к JVM – например, компиляция теперь не будет падать, если у какой-то из транзитивных зависимостей поменялся экспериментальный API, который не использовался нигде в проекте.
👉Компиляторные опции для Kotlin/JVM теперь можно задавать с помощью нового DSL в билдфайле, в блоке
Релиз состоялся уже на прошлой неделе, но это не повод не рассказать о нем в канале! Из самого важного в этом релизе:
👉Переход К2 компилятора в Beta, что значит, что его уже вполне безопасно можно начинать затаскивать в свои JVM проекты.
👉Новый оператор
..<
, про который я рассказывал на KotlinConf, окончательно стабилизирован и поддержан в stdlib.👉В KMP поддержали Configuration Cache, который сильно улучшит жизнь авторам библиотек.
👉В Kotlin/Native логика линковки библиотек приблизилась к JVM – например, компиляция теперь не будет падать, если у какой-то из транзитивных зависимостей поменялся экспериментальный API, который не использовался нигде в проекте.
👉Компиляторные опции для Kotlin/JVM теперь можно задавать с помощью нового DSL в билдфайле, в блоке
compilerOptions
.The JetBrains Blog
Kotlin 1.9.0 Released | The Kotlin Blog
Kotlin 1.9.0 has been released! Highlights include: Kotlin K2 for JVM is in Beta, other K2 compiler updates, new enum class values function, new operator for open-ended ranges, preview of Gradle configuration cache in Kotlin Multiplatform, changes for Android…
Обновление роадмапа Kotlin
Публичный роадмап Котлина обновляется раз в полгода. В нем подробно расписываются основные планы команды на несколько ближайших релизов. Вот самое интересное из последнего апдейта:
⭐️Можно будет дебажить инлайн функции и классы в Android.
⭐️Kotlin/Wasm планируется переводить в Alpha, а вместе с этим официально поддержать его во всех kotlinx библиотеках.
⭐️Стабильную мультиплатформу все так же планируется выпустить в конце года.
⭐️В Kotlin/Native скоро выйдет первый релиз инкрементальной компиляции, скорость билдов вырастет.
⭐️Улушится поддержка Version Catalogs в gradle.kts.
⭐️Новую библиотеку kotlinx-io продолжат стабилизировать, а заодно будут рисерчить асинхронный API для нее.
Публичный роадмап Котлина обновляется раз в полгода. В нем подробно расписываются основные планы команды на несколько ближайших релизов. Вот самое интересное из последнего апдейта:
⭐️Можно будет дебажить инлайн функции и классы в Android.
⭐️Kotlin/Wasm планируется переводить в Alpha, а вместе с этим официально поддержать его во всех kotlinx библиотеках.
⭐️Стабильную мультиплатформу все так же планируется выпустить в конце года.
⭐️В Kotlin/Native скоро выйдет первый релиз инкрементальной компиляции, скорость билдов вырастет.
⭐️Улушится поддержка Version Catalogs в gradle.kts.
⭐️Новую библиотеку kotlinx-io продолжат стабилизировать, а заодно будут рисерчить асинхронный API для нее.
Как тестируют в 100 компаниях
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
GitHub
GitHub - testableapple/how-they-automate-on-mobile: A curated collection of publicly available resources on how software companies…
A curated collection of publicly available resources on how software companies implement automation on iOS and Android platforms 📱🚢 - testableapple/how-they-automate-on-mobile
План Coil по поддержке Kotlin Multiplatform
Я уже упоминал, что недавно библиотека Coil получила грант от Kotlin Foundation направленный на поддержку KMP.
Вышел блогпост, где автор раскрывает больше деталей про миграцию. Основная задача переезда – полностью отвязать Coil от Android. Самым большим изменением API будет замена
План – завершить миграцию в течение нескольких месяцев.
Я уже упоминал, что недавно библиотека Coil получила грант от Kotlin Foundation направленный на поддержку KMP.
Вышел блогпост, где автор раскрывает больше деталей про миграцию. Основная задача переезда – полностью отвязать Coil от Android. Самым большим изменением API будет замена
Drawable
на Image
, который абстрагирует детали платформенной реализации изображений.План – завершить миграцию в течение нескольких месяцев.
Cash App Code Blog
Multiplatform image loading: Coil 3.0
Building towards Coil 3.0 with a focus on Compose Multiplatform.
Как измерять время старта приложения
В разговорах об оптимизации времени старта все привыкли рассуждать в терминах холодных/горячих стартов приложения, замерять и оптимизировать их отдельно. При этом для пользователя тип старта вообще не важен — для него скорее важен сценарий, то, каким образом он приложение запускает.
В статье разбирается более холистический подход к измерению времени запуска, и то, на какие конкретно метрики можно завязываться.
В разговорах об оптимизации времени старта все привыкли рассуждать в терминах холодных/горячих стартов приложения, замерять и оптимизировать их отдельно. При этом для пользователя тип старта вообще не важен — для него скорее важен сценарий, то, каким образом он приложение запускает.
В статье разбирается более холистический подход к измерению времени запуска, и то, на какие конкретно метрики можно завязываться.