Android Good Reads
3.88K subscribers
344 photos
13 videos
1 file
2K links
Самые интересные статьи, видео и новости, связанные с Android разработкой. Не больше трёх материалов в день.

Автор канала: @Lamprof

Размещение рекламы: @tanyasanovna
Download Telegram
Окей, сделаем это воскресенье мультиплатформенным! Интервью с разработчиками Compose Multiplatform – Колей Иготти и Игорем Деминым.
🔄 Архитектурные решения, использованные при мультиплатформизации фреймворка
🤔 Текущие решаемые задачи и ограничения
📆 Планы развития на будущее

Видео на YouTube
Отличный пример использования появившихся в 1.6.20-М1 контекстных ресиверов для того, чтобы сделать DSL более чистыми.

А если вы хотите разобраться с контекстными ресиверами подробнее, почитайте текст соответствующего пропозала.
Стоило только вспомнить на прошлой неделе про синтетики, как пришла новость от Google – они будут удалены из Kotlin этой осенью, вместе с выходом версии 1.8. Parcelize при этом остается жить, но как отдельный плагин.

Если вы все еще не перешли на View Binding, то вот гайд по миграции.
Обновились официальные гайды по тестированию:
🤔Раздел «Что тестировать»
👨‍❤️‍👨Раздел «Test Doubles»
📝Примеры локальных и инструментальных тестов
🛠Раздел «Инструменты тестирования»
📰Статья «Advanced test setup»

Про детали и причины обновления можно прочитать в блогпосте.
Быстрая проверка на то, не включаете ли вы в релизные сборки какие-нибудь тестовые зависимости:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -e test -e junit
В kotlinx-coroutines недавно завезли новые возможности, которые упрощают тестирование кода с корутинами. В блогпосте разбираются два кейса:
- Написание теста для кода, который вызывает suspend функции
- Написание теста для кода, который запускает внутри себя новую корутину
Branch by Abstraction – это техника разработки, позволяющая защититься от болезненного мерджа долгоживущих веток. Вместо того, чтобы вести рефакторинг в отдельной ветке в VCS, изменяемый кусок системы выделяется в закрытую интерфейсом абстракцию. Вы рефакторите его копию, и сохраняете оригинал до тех пор, пока работа не будет закончена.

Больше деталей и примеров – в статье.
Интересный пример того, как на скорость выполнения кода влияет на каком типе вызывается функция intersect.
Всем привет.

Война – это ужасно, и того, что происходит, не должно происходить. Я считаю недопустимой войну, развязанную Россией, и безумными действия российского правительства.

Бояться в этой ситуации – абсолютно нормально, потому что никто не может представить, как дальше будут развиваться события. Но постарайтесь не давать страху перерастать в панику. Это – плохое состояние, в котором любые принятые решения будут, скорее всего, неверными.

Чтобы у вас была возможность отвлечься от новостных лент, я продолжу выкладывать в свои каналы технический контент. Кроме этого, я обязательно буду делиться ссылками, актуальными сейчас – новостями про работу важных для нас сервисов, советами по релокации. Если вы не захотите его читать – можете замьютить канал или отписаться от него.

Ребята из 🇺🇦, держитесь ❤️
Начался еще один цикл статей про structured concurrency. У этого, правда, довольно многообещающее начало – хорошо разбираются исходные проблемы, а базовые концепции объясняются на понятных схемах.
Интересное эссе про то, что использование IDE при разработке не даст вам стать действительно крутым специалистом. Проблема, по мнению автора, в том, что когда вы слишком привыкаете к автоматическим саджестам от IDE, вы не пытаетесь придумать способы сделать свой код лучше. А новые инструменты вроде Copilot делают проблему еще более острой.
Spotify выпустили Ruler – Gradle плагин для измерения и анализа размера APK. Из основных фичей:
- Анализирует APK, собранные под разные профили девайсов
- Замеряет Download Size и Install Size
- Строит дерево зависимостей от конкретных файлов до модулей, в которых они содержатся
- Дает оценку по влиянию на размер каждого класса
- Умеет маппить все классы на владельцев кода

В блоге ребята говорят, что благодаря инструменту уменьшили свое приложение уже на 9%.
Вдогонку еще одно обсуждение в Твиттере про Gradle – есть ли смысл мигрировать с buildSrc на Gralde Version Catalogs. Если кратко, то стоит, и вот почему:
- Использование buildSrc увеличивает время компиляции
- При любом изменении buildSrc инвалидируется весь билд кэш
- В будущем даст дополнительные плюшки при более тесной интеграции Gradle с GitHub

Из минусов – в Android Studio пока не работает автокомплишн, но вот тут есть воркэраунд.
На прошлой неделе я выкладывал подборку полезных плагинов для Android Studio и судя по реакциям, вам было полезно. Держите еще одну подборку. А в комментариях расскажите про самые полезные плагины, которые вы сами используете!
RIBs – это архитектура, которую использовали при масштабном рефакторинге приложения Uber. Если вы раньше с ней особо не сталкивались, то вот эта серия статей поможет разобраться, что к чему:
Плюсы RIBs
Минусы RIBs