This media is not supported in your browser
VIEW IN TELEGRAM
Appyx – новый фреймворк для навигации от Bumble
Ключевая идея фреймворка – разделение всего приложения на ноды, навигация между которыми происхожит путем перемещения по дереву всех нод. Каждая нода включает в себя и UI, и бизнес-логику. Фреймворк из коробки дает историю переходов, state restoration и поддержку Jetpack Compose Transitions.
Ключевая идея фреймворка – разделение всего приложения на ноды, навигация между которыми происхожит путем перемещения по дереву всех нод. Каждая нода включает в себя и UI, и бизнес-логику. Фреймворк из коробки дает историю переходов, state restoration и поддержку Jetpack Compose Transitions.
📆Каждый день я стараюсь публиковать хотя бы один классный и полезный материал про Android разработку. За месяц их набегает несколько десятков, и ориентироваться в них не всегда легко. Чтобы облегчить вам задачу, я периодически публикую дайджест самых популярных постов, разбитых на категории.
📰Новости Kotlin
Новая инкременталка в Kotlin 1.7.0
Расширенные билд репорты в Kotlin 1.7.0
🧱Архитектура и перфоманс
Полная история рефакторинга Яндекс.Музыки
Как строить архитектуру приложений с шарингом кода с КММ
Год в продакшне с КММ и 70% реюзом кода
Оптимизация перфоманса разных этапов сетевого запроса
🎁Прочее
Как упростить рутинные задачи в Android Studio
Сайт с актуальными версиями и совместимостью зависимостей Compose
Собеседование на Андроид-разработчика: Антон Дудаков и Артем Зиннатуллин
Советы по дебагу кода
🕵️♀️Кстати, у меня есть еще один канал, на который стоит подписаться тем, кто хочет расти в управление командой – TechLead Good Reads. Держите несколько интересных материалов оттуда на закуску!
Как устроиться тимлидом в европейскую компанию
Как решать конфликты дизайнеров и разработчиков
Как рассказывать про свой опыт работы с помощью методики STAR
Если дайджест вам понравился – ставьте ❤️, 👍 и 🔥. Благодаря этому я пойму, что собирал его не зря! А если у вас будут конкретные предложения по его улучшению – смело пишите в комментарии!
#digest
📰Новости Kotlin
Новая инкременталка в Kotlin 1.7.0
Расширенные билд репорты в Kotlin 1.7.0
🧱Архитектура и перфоманс
Полная история рефакторинга Яндекс.Музыки
Как строить архитектуру приложений с шарингом кода с КММ
Год в продакшне с КММ и 70% реюзом кода
Оптимизация перфоманса разных этапов сетевого запроса
🎁Прочее
Как упростить рутинные задачи в Android Studio
Сайт с актуальными версиями и совместимостью зависимостей Compose
Собеседование на Андроид-разработчика: Антон Дудаков и Артем Зиннатуллин
Советы по дебагу кода
🕵️♀️Кстати, у меня есть еще один канал, на который стоит подписаться тем, кто хочет расти в управление командой – TechLead Good Reads. Держите несколько интересных материалов оттуда на закуску!
Как устроиться тимлидом в европейскую компанию
Как решать конфликты дизайнеров и разработчиков
Как рассказывать про свой опыт работы с помощью методики STAR
Если дайджест вам понравился – ставьте ❤️, 👍 и 🔥. Благодаря этому я пойму, что собирал его не зря! А если у вас будут конкретные предложения по его улучшению – смело пишите в комментарии!
#digest
Telegram
Android Good Reads
Новая инкрементальная компиляция в Kotlin
В Kotlin 1.7.0 появилась поддержка нового механизма инкрементальной компиляции, который работает существенно лучше прежнего. Для разных сценариев бенчмарки показывают улучшения от 26 до 96%. В статье детально разбирается…
В Kotlin 1.7.0 появилась поддержка нового механизма инкрементальной компиляции, который работает существенно лучше прежнего. Для разных сценариев бенчмарки показывают улучшения от 26 до 96%. В статье детально разбирается…
Разбор библиотеки Mosaic
Mosaic – очень подходящий пример, чтобы разобраться, как писать свои библиотеки поверх compose-runtime и compose-compiler. В случае Mosaic это нужно для отображения CLI UI, но в вашем случае может пригодиться для решения любой задачи по управлению состоянием, которое можно описать деревом нод.
- Типы нод, их параметры и имплементация
- Составление нод в дерево
- Управление рекомпозицией
- Связь нод и конкретного UI элемента
Mosaic – очень подходящий пример, чтобы разобраться, как писать свои библиотеки поверх compose-runtime и compose-compiler. В случае Mosaic это нужно для отображения CLI UI, но в вашем случае может пригодиться для решения любой задачи по управлению состоянием, которое можно описать деревом нод.
- Типы нод, их параметры и имплементация
- Составление нод в дерево
- Управление рекомпозицией
- Связь нод и конкретного UI элемента
Predictive back gestures
Чтобы помочь пользователям видеть заранее, куда их приведет свайп «назад», в Android появится новая фича – predictive back gesture. Еще до завершения свайпа пользователь будет видеть, на какой конкретно экран этот жест его приведет.
Фича не будет доступна пользователям в Android 13, но в Beta 4 можно ее попробовать, включив соответствующий флаг. Почитайте анонс, чтобы посмотреть на изменения в API, которые вам скоро надо будет заадоптить.
Чтобы помочь пользователям видеть заранее, куда их приведет свайп «назад», в Android появится новая фича – predictive back gesture. Еще до завершения свайпа пользователь будет видеть, на какой конкретно экран этот жест его приведет.
Фича не будет доступна пользователям в Android 13, но в Beta 4 можно ее попробовать, включив соответствующий флаг. Почитайте анонс, чтобы посмотреть на изменения в API, которые вам скоро надо будет заадоптить.
Android Developers Blog
Prepare your app to support predictive back gestures
Posted by Jason Tang, Product Management, Diego Zuluaga, Developer Relations, and Michael Mauzy, Developer Documentation Since we...
В androidx завезли поддержку мультиплатформы
В сорцах androidx.collection и datastore появились коммиты, добавляющие поддержку iOS и macOS таргетов.
В сорцах androidx.collection и datastore появились коммиты, добавляющие поддержку iOS и macOS таргетов.
Релиз Jetpack Compose 1.2
- Новые API для работы с Grid вышли из Experimental и стали стабильными
- WindowInsets для определения разных отступов на девайсе
- Поддержка nested scroll из коробки
- Easing curves для анимаций
- Новые экспериментальные фичи: LazyLayout, загружаемые шрифты, много фич по работе с текстом
А кроме этого, стал стабильным и Compose for Wear OS 1.0.
- Новые API для работы с Grid вышли из Experimental и стали стабильными
- WindowInsets для определения разных отступов на девайсе
- Поддержка nested scroll из коробки
- Easing curves для анимаций
- Новые экспериментальные фичи: LazyLayout, загружаемые шрифты, много фич по работе с текстом
А кроме этого, стал стабильным и Compose for Wear OS 1.0.
Обновился роадмап разработки Compose
Основной фокус следующего релиза будет на:
🏎 Перфомансе
🧐 Поддержке advanced кейсов
🎨 Компонентах из Material 3
🛠 Улучшении тулинга, в том числе Preview и Live Edit
Еще из интересного в роадмапе:
- Стабилизация Paging Compose APIs
- Transition animations в Navigation
- Улучшения обработки эксепшнов на уровне compose-runtime
Основной фокус следующего релиза будет на:
🏎 Перфомансе
🧐 Поддержке advanced кейсов
🎨 Компонентах из Material 3
🛠 Улучшении тулинга, в том числе Preview и Live Edit
Еще из интересного в роадмапе:
- Стабилизация Paging Compose APIs
- Transition animations в Navigation
- Улучшения обработки эксепшнов на уровне compose-runtime
Android Developers
Jetpack Compose Roadmap | Android Developers
Первые шаги с Compose в Headhunter
Команда HH поделилась историей того, как они принимали решение затаскивать Compose в свое приложение, проводили первые эксперименты и решали возникающие проблемы.
Команда HH поделилась историей того, как они принимали решение затаскивать Compose в свое приложение, проводили первые эксперименты и решали возникающие проблемы.
Видеокурс по корутинам
Кирилл Розов закончил основную часть своего бесплатного видеокурса по корутинам. Самое время его наконец посмотреть! Программа курса:
- Особенности корутин
- CoroutineContext
- Жизненный цикл корутин и structured concurrency
- Обработка ошибок
- Каналы
- Синхронизация между корутинами
- Flow
- Особенности в Android
Кирилл Розов закончил основную часть своего бесплатного видеокурса по корутинам. Самое время его наконец посмотреть! Программа курса:
- Особенности корутин
- CoroutineContext
- Жизненный цикл корутин и structured concurrency
- Обработка ошибок
- Каналы
- Синхронизация между корутинами
- Flow
- Особенности в Android
YouTube
Курс Kotlin Coroutines
Авторский курс Кирилл Розова по Kotlin Coroutines для Android разработчиков
Обновление dependency-analysis-android-gradle-plugin
Dependency Analysis Plugin – очень полезная штука, которая позволяет детектить неиспользуемые зависимости, транзитивные зависимости, ненужные плагины и неправильную конфигурацию зависимостей. В версии 1.11.0 появилось несколько новых фичей:
- Таска fixDependencies, которая автоматически применяет все предлагаемые плагином исправления к вашим билд-скриптам.
- Более детальное объяснение предлагаемых исправлений по структуре модулей.
Если вы хотите узнать про плагин больше, вот релевантные статьи:
- The proper care and feeding of your Gradle build
- Dependency Analysis Gradle Plugin: Using bytecode analysis to find unused dependencies
- Dependency Analysis Gradle Plugin: What’s an ABI
- Reducing my Gradle plugin’s impact on configuration time: A journey
Dependency Analysis Plugin – очень полезная штука, которая позволяет детектить неиспользуемые зависимости, транзитивные зависимости, ненужные плагины и неправильную конфигурацию зависимостей. В версии 1.11.0 появилось несколько новых фичей:
- Таска fixDependencies, которая автоматически применяет все предлагаемые плагином исправления к вашим билд-скриптам.
- Более детальное объяснение предлагаемых исправлений по структуре модулей.
Если вы хотите узнать про плагин больше, вот релевантные статьи:
- The proper care and feeding of your Gradle build
- Dependency Analysis Gradle Plugin: Using bytecode analysis to find unused dependencies
- Dependency Analysis Gradle Plugin: What’s an ABI
- Reducing my Gradle plugin’s impact on configuration time: A journey
KMMT – огромный шаблон для создания KMM проектов
- Networking слой на Ktor
- Async Task Helper для запуска кода на бэкграунд тредах на корутинах
- Обвязка для передачи объектов между экранами
- Обвязка для выполнения платформо-зависимого кода
- Модуль сериализации на kotlinx.serialization
- Хранение данных в key-value store, LiveData, SQLDelight
- Networking слой на Ktor
- Async Task Helper для запуска кода на бэкграунд тредах на корутинах
- Обвязка для передачи объектов между экранами
- Обвязка для выполнения платформо-зависимого кода
- Модуль сериализации на kotlinx.serialization
- Хранение данных в key-value store, LiveData, SQLDelight
GitHub
GitHub - jittya/KMMT: Kotlin Multiplatform Mobile App Template
Kotlin Multiplatform Mobile App Template. Contribute to jittya/KMMT development by creating an account on GitHub.
Выводы из года ускорения сборки Яндекс.Браузера
В приложении Яндекс.Браузера ~150 Gradle-модулей, ~2 млн строк кода на Java/Kotlin, десяток Gradle-плагинов и тысячи строк кода в buildSrc. Команда, занимающаяся ускорением сборки проекта, поделилась своим опытом.
- Какие сценарии и с помощью каких инструментов замерять
- Флаги Gradle, которые надо включать
- Оптимизация R.java
- Почему надо отказываться от flavours
- Configuration и build cache
- Работа с версиями зависимостей
В приложении Яндекс.Браузера ~150 Gradle-модулей, ~2 млн строк кода на Java/Kotlin, десяток Gradle-плагинов и тысячи строк кода в buildSrc. Команда, занимающаяся ускорением сборки проекта, поделилась своим опытом.
- Какие сценарии и с помощью каких инструментов замерять
- Флаги Gradle, которые надо включать
- Оптимизация R.java
- Почему надо отказываться от flavours
- Configuration и build cache
- Работа с версиями зависимостей
Хабр
Как мы ускоряли сборку Android-приложения из двух миллионов строк кода
Всем привет! Наверняка каждый Android-разработчик хоть раз сталкивался с проблемой скорости сборки своего проекта. После нехороших слов в адрес кодогенерации, покупок более мощного железа,...
Более безопасная альтернатива dependsOn(Task) в Gradle
Иногда в разных Gradle тасках приходится работать с одним и тем же файлом. Одна таска записывает туда данные, другая – читает. При их связи через dependsOn появляется много рисков, которые могут отстрелить при рефакторинге. Автор статьи предлагает более гибкий и безопасный способ конфигурации таких тасок.
Иногда в разных Gradle тасках приходится работать с одним и тем же файлом. Одна таска записывает туда данные, другая – читает. При их связи через dependsOn появляется много рисков, которые могут отстрелить при рефакторинге. Автор статьи предлагает более гибкий и безопасный способ конфигурации таких тасок.
www.liutikas.net
Better Not Depend On Tasks - That's the Old Timey Way
In Gradle it is very common to have one task write to a file, and then that file is read by another task to do more work. A couple of years back these tasks ...
Масштабируемое решение по загрузке текста для отображения во View
Автор статьи критикует получение текста для отображения в компонентах из зависимостей, инжектируемых во View слой. Вместо этого он предлагает более масштабируемое решение на экстеншнах.
Автор статьи критикует получение текста для отображения в компонентах из зависимостей, инжектируемых во View слой. Вместо этого он предлагает более масштабируемое решение на экстеншнах.
Telegraph
Хватит использовать ResourceProvider во ViewModel
Каждый по разному обрабатывает показ того или иного текста. В большинстве своём, картина простая: создаётся ResourcesProvider/ResourceManager/etc с applicationContext внутри и ижектится в Presentation-слой, будь то Presenter или ViewModel. Проблема Смена…
Gradle Convention Plugins в приложении Now in Android
Convention Plugins – это удобный способ пошарить кусочки логики билда между разными модулями в проекте. В новом образцовом приложении Now in Android можно посмотреть на то, как они используются.
- Общие функции, нужные разным плагинам, вынесены в отдельные файлы
- Compose и Kapt подключаются только к тем модулям, где они действительно нужны
- В статье есть прямые ссылки на все интересные моменты в реализации
Convention Plugins – это удобный способ пошарить кусочки логики билда между разными модулями в проекте. В новом образцовом приложении Now in Android можно посмотреть на то, как они используются.
- Общие функции, нужные разным плагинам, вынесены в отдельные файлы
- Compose и Kapt подключаются только к тем модулям, где они действительно нужны
- В статье есть прямые ссылки на все интересные моменты в реализации
Brush API в Compose 1.2
Разбор новых возможностей кастомной окраски текста, появившихся в новой версии Compose.
Разбор новых возможностей кастомной окраски текста, появившихся в новой версии Compose.
Запуск third-party инструментов из Android Studio
В Android Studio можно настраивать External Tools – по сути, запуск любого стороннего исполняемого файла с аргументами с помощью иконки в тулбаре или хоткея.
В Android Studio можно настраивать External Tools – по сути, запуск любого стороннего исполняемого файла с аргументами с помощью иконки в тулбаре или хоткея.
Как CompositionLocal может помочь с аналитикой
CompositionLocal – это API в Compose, который позволяет получить доступ к каким-то данным из любого Composable без необходимости передачи их вручную через параметры функции. Пример использования – работа с темами.
CompositionLocal удобен и для того, чтобы настроить аналитику – ведь ее инициализация находится где-то в точке общей конфигурации приложения, а непосредственное логивание событий – в листьях дерева нод.
CompositionLocal – это API в Compose, который позволяет получить доступ к каким-то данным из любого Composable без необходимости передачи их вручную через параметры функции. Пример использования – работа с темами.
CompositionLocal удобен и для того, чтобы настроить аналитику – ведь ее инициализация находится где-то в точке общей конфигурации приложения, а непосредственное логивание событий – в листьях дерева нод.
Как в N26 подошли к автоматизации Gradle бенчмарков
Слайды отличного доклада про то, как команда N26 решала задачу автоматизации бенчмарков для большой команды.
Слайды отличного доклада про то, как команда N26 решала задачу автоматизации бенчмарков для большой команды.
Снепшот-тесты для Android
- Такие тесты позволяют хорошо контролировать регрессии на экранах, которые редко изменяются
- QuickBird выпустили библиотеку kotlin-snapshot-testing, которая позволяет легко писать такие тесты
- Она автоматически записывает целевое состояние экрана и строит визуальный дифф, если оно изменится
- Такие тесты позволяют хорошо контролировать регрессии на экранах, которые редко изменяются
- QuickBird выпустили библиотеку kotlin-snapshot-testing, которая позволяет легко писать такие тесты
- Она автоматически записывает целевое состояние экрана и строит визуальный дифф, если оно изменится