Более безопасная альтернатива dependsOn(Task) в Gradle
Иногда в разных Gradle тасках приходится работать с одним и тем же файлом. Одна таска записывает туда данные, другая – читает. При их связи через dependsOn появляется много рисков, которые могут отстрелить при рефакторинге. Автор статьи предлагает более гибкий и безопасный способ конфигурации таких тасок.
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 ...
Выводы из года ускорения сборки Яндекс.Браузера
В приложении Яндекс.Браузера ~150 Gradle-модулей, ~2 млн строк кода на Java/Kotlin, десяток Gradle-плагинов и тысячи строк кода в buildSrc. Команда, занимающаяся ускорением сборки проекта, поделилась своим опытом.
- Какие сценарии и с помощью каких инструментов замерять
- Флаги Gradle, которые надо включать
- Оптимизация R.java
- Почему надо отказываться от flavours
- Configuration и build cache
- Работа с версиями зависимостей
Всем привет! Наверняка каждый Android-разработчик хоть раз сталкивался с проблемой скорости сборки своего проекта. После нехороших слов в адрес кодогенерации, покупок более мощного железа,...
KMMT – огромный шаблон для создания KMM проектов
- Networking слой на Ktor
- Async Task Helper для запуска кода на бэкграунд тредах на корутинах
- Обвязка для передачи объектов между экранами
- Обвязка для выполнения платформо-зависимого кода
- Модуль сериализации на kotlinx.serialization
- Хранение данных в key-value store, LiveData, SQLDelight
Видеокурс по корутинам
Кирилл Розов закончил основную часть своего бесплатного видеокурса по корутинам. Самое время его наконец посмотреть! Программа курса:
- Особенности корутин
- CoroutineContext
- Жизненный цикл корутин и structured concurrency
- Обработка ошибок
- Каналы
- Синхронизация между корутинами
- Flow
- Особенности в Android
Первые шаги с Compose в Headhunter
Команда HH поделилась историей того, как они принимали решение затаскивать Compose в свое приложение, проводили первые эксперименты и решали возникающие проблемы.
Обновился роадмап разработки Compose
Основной фокус следующего релиза будет на:
🏎 Перфомансе
🧐 Поддержке advanced кейсов
🎨 Компонентах из Material 3
🛠 Улучшении тулинга, в том числе Preview и Live Edit
Еще из интересного в роадмапе:
- Стабилизация Paging Compose APIs
- Transition animations в Navigation
- Улучшения обработки эксепшнов на уровне compose-runtime
Релиз Jetpack Compose 1.2
- Новые API для работы с Grid вышли из Experimental и стали стабильными
- WindowInsets для определения разных отступов на девайсе
- Поддержка nested scroll из коробки
- Easing curves для анимаций
- Новые экспериментальные фичи: LazyLayout, загружаемые шрифты, много фич по работе с текстом
А кроме этого, стал стабильным и Compose for Wear OS 1.0.
Predictive back gestures
Чтобы помочь пользователям видеть заранее, куда их приведет свайп «назад», в Android появится новая фича – predictive back gesture. Еще до завершения свайпа пользователь будет видеть, на какой конкретно экран этот жест его приведет.
Фича не будет доступна пользователям в Android 13, но в Beta 4 можно ее попробовать, включив соответствующий флаг. Почитайте анонс, чтобы посмотреть на изменения в API, которые вам скоро надо будет заадоптить.
Разбор библиотеки Mosaic
Mosaic – очень подходящий пример, чтобы разобраться, как писать свои библиотеки поверх compose-runtime и compose-compiler. В случае Mosaic это нужно для отображения CLI UI, но в вашем случае может пригодиться для решения любой задачи по управлению состоянием, которое можно описать деревом нод.
- Типы нод, их параметры и имплементация
- Составление нод в дерево
- Управление рекомпозицией
- Связь нод и конкретного UI элемента
Новая инкрементальная компиляция в Kotlin
В Kotlin 1.7.0 появилась поддержка нового механизма инкрементальной компиляции, который работает существенно лучше прежнего. Для разных сценариев бенчмарки показывают улучшения от 26 до 96%. В статье детально разбирается, как новая система работает под капотом.
Appyx – новый фреймворк для навигации от Bumble
Ключевая идея фреймворка – разделение всего приложения на ноды, навигация между которыми происхожит путем перемещения по дереву всех нод. Каждая нода включает в себя и UI, и бизнес-логику. Фреймворк из коробки дает историю переходов, state restoration и поддержку Jetpack Compose Transitions.
Вышел Detekt-1.21.0
- Добавлены 6 новых правил: NullableBooleanCheck, CouldBeSequence, UnnecessaryBackticks, ForbiddenSuppress, MaxChainedCallsOnSameLine, CascadingCallWrapping
- Добавлена поддержка маркдауна для отчетов
- В конфиге для каждого свойства теперь можно указывать reason, в котором объясняется, почему у него именно такое значение
Интерактивный гайд по работе со стейтом с помощью Flow
Страница со статьей собрана на Compose for Web. Благодаря этому, можно не только смотреть на примеры кода, но и на ходу играть со стейтом и смотреть, как обрабатываются его изменения. Автор разбирает:
- Как реализовать UDF с помощью Flows
- Как прокидывать действия пользователя до стейта
- Как мерджить изменения в стейте
- Как решать конфликты при изменениях
Включите Gradle configuration cache в своем проекте
Если вы еще не включили configuration cache, самое время это сделать. В твиттере делятся результатами – в проекте со 135 subprojects использование кеша сократило время сборки на 61-98%, с четырех минут до десятков секунд.
on a gradle android project with 135 subprojects, use of configuration caching made the build 61-98% faster (~4min to ~seconds). This is based on real-world observational data from our users via Gradle Enterprise, not benchmarking.
Разбор приложения Now in Android
Недавно команда Android зарелизила новое семпловое приложение – Now in Android. Его задача – показывать на примере все рекомендуемые подходы к архитектуре, UI и перфомансу. Если у вас пока не дошли руки, чтобы склонировать проект и разобраться с ним самостоятельно, статья даст хорошее понимание, как конкретно спроектирован каждый слой проекта и какие зависимости используются.
Коллекция CLI-команд для обработки изображений
В процессе работы часто приходится что-то делать с изображениями: ресайзить, мерджить или конвертировать между форматами. По ссылке – полезный гайд по самым частым консольным командам, которые вам могут помочь.
Whenever I need to convert, merge, or combine images or PDF files, I pull out my Terminal and attempt doing it first with CLI (command line interface) commands. Over time I’ve built an arsenal of CLI commands that 9/10 times does the trick faster than any other program.
Prerequisites Most of the image manipulation commands require imagemagick and the PDF ones require poppler. Both of which are just a homebrew install away for macOS: