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

Размещение рекламы: @tanyasanovna
Download Telegram
Android Good Reads
TikTok поделился опытом миграции на Jetpack Compose Главные цифры и профит: 👉 Объем кода уменьшился на 58% по сравнению с реализацией на классических Views 👉 Время загрузки экранов сократилось до 78% на новых или полностью переписанных экранах (и на 20–30%…
Я думал делать разбор еще 3 статей вышедших в Android блоге, но читать самопохвалы от google команды как то грустно, поэтому вот что стоит вынести из:

👉 Monzo boosts performance metrics by up to 35% with a simple R8 update
👉 Instagram and Facebook deliver instant playback and boost user engagement with Media3 PreloadManager
👉 How WHOOP decreased excessive partial wake lock sessions by over 90%

R8 у многих всё ещё работает не в полную силу из-за старого конфига, Baseline Profiles уже давно надо тащить в релизный цикл, для видосов стоит смотреть на Media3 PreloadManager и подгонять стратегию под конкретный UI, а по поводу работы в фоне пора регулярно смотреть в Android vitals, особенно на wake locks и долгоживущие Worker-ы.

production performance — это часто не “переписать всё”, а докрутить то, что Android уже даёт из коробки


Android Good Reads
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Cascade editor

Composable блочный редактор (как Notion/Craft) с возможностью масштабирования. Удобно встроится в проект, где нужно редактирование текста, но не хочется уводить это в вебвью или костылить свое

👉 Независимое состояние и жизненный цикл у каждого блока
👉 Удобное разделение, объединение и преобразование блоков
👉 Поддержка drag-and-drop для изменения порядка блоков
👉 Вставка новых элементов через slash-команды
👉 Возможность делать собственные рендереры блоков
👉 Поддержка rich-text форматирования внутри блоков
👉 Версионируемая сериализация документа, что упрощает сохранение и миграции

GitHub (70 ⭐️): https://github.com/linreal/cascade-editor
Compose 1.10, Kotlin 2.3, minSdk 28, iOS 16+


Android Good Reads
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3🤯2😨21
Используем @RequireOptIn чтоб пометить Composable для использования только в превью

Собственно говоря, весь код на превьюшке. Будет бодро слать вам ошибку компиляции, пока вы не добавите @Suppress или не уберете помеченную функцию

Android Good Reads
👍4🔥2
Kotlin 2.4.0 Sorted-Order валидация

Добавили новых extension функций в стандартную библиотеку для валидации того как отсортированы коллекции:
.isSorted()
.isSortedDescending()
.isSortedWith(comparator)
.isSortedBy(selector)
.isSortedByDescending(selector)

🔗 Ссылка на документацию

Ну и сразу пример:
data class User(val name: String, val age: Int)

fun main() {
val users = listOf(
User("Alice", 24),
User("Bob", 31),
User("Charlie", 29),
)
println(users.isSortedBy(User::age))
// false
}


Android Good Reads
👍7🔥2😱2
Android: Offline-first system design

Таких статей мы читали и слушали уже миллион. На картинке вы видите конечный результат проектирования, но эта статья неплохо показывает то, как прийти к такому решению последовательно. Такого типа задачки это часть этапа собеседований (system design)

🔗 Freedium link
Внутри: путь от "Апка крашится без доступа к интеренету" к Offline-first

Android Good Reads
👍6🔥6
Android Studio Preview Quail Canary 1

👉 Удобная интеграция App Quality Insight -> Fix with AI
👉 Интеграция LeakCanary в профайлер с новыми фичами
👉 Material Symbol support
👉 Новая считалка рекомпозиций

Android Good Reads
👍3
Тем временем Google активировал Android developer verification, против которого собирали петицию. Хоть и пошел немного на попятную, частично разрешив установку с ОЧЕНЬ херовыми условиями

Все апки пометили галочкой. Весь процесс работы с приложениями превращается в ужас с Apple...

Антоха Разраб
😢12👍2😡21🔥1
Почему используем STOMP c вебсокетами?

Когда у тебя в одном соединении живут входящие звонки, call events и WebRTC signaling, raw WebSocket быстро превращается в ручной роутинг JSON-пакетов.

STOMP решает это за счет:
👉 destination-based routing
👉 подписок на нужные топики
👉 structured frames
👉 heartbeat из коробки

Итог простой: меньше самописной магии, чище обработчики, легче дебажить и расширять real-time фичи
4👍3👏2👎1
Strong Skipping Mode не делает типы stable, лишь позволяет skip’ать composable с unstable параметрами, если передан тот же самый объект по ссылке ===, тогда как stable типы по-прежнему сравниваются через equals() из-за этого он не помогает, если создаются новые инстансы (типа listOf(), copy()), и рекомпозиция всё равно происходит, поэтому stability позволяет пропускать перерисовку для разных объектов с одинаковыми данными, а Strong Skipping - это оптимизация для случаев с переиспользованием одной и той же ссылки, а не замена пониманию стабильности

Внутри много кода, а не воды для самопроверки
🔥82😁2
Dagger, Yatagan или Metro DI?

Android-команда Яндекс Путешествий сравнила DI-фреймворки, чтобы узнать, как ускорить сборку. Что из этого вышло, на чём остановились ребята и как прошла миграция — смотрите в канале Яндекс Вертикалей.

Кстати, сейчас там проходит розыгрыш промокодов на 10 и 20 тысяч рублей на ваши путешествия. Успевайте поучаствовать😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Compose анимации без пересборки

Дебажить анимации трудно и долго. Hot reload помогает и тут. Внутри анимация Grid, кастомная анимация волны на Canvas, изменение типа анимации tween -> spring, изменение animateContentSize
HotSwan обновляет примитивы в обход компиляции Gradle, за счет этого и получается такой результат
🔥8😱4👍3
Android CLI зацикливает на себе весь цикл разработки для андроид c агентами. Вам не нужно прыгать и искать какие скилы подтянуть в проект, какой контекст по андроид разработке предоставить. All-in-one от гугла (sdk, эмуляторы, запуск билдов ... )

Ни для чего другого, кроме как мобильной разработке, это не подходит, так что поставить точно рекомендую!
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Все идет по пути к тому что у каждого тула будет CLI версия. Обсидиан запустил пару месяцев назад, а вот и Google (Пере)представляет Android CLI

По ощущениям оч кастрированный и является надстройкой над adb

(c) Антоха Разраб про AI
😍3🥴2💯2
Если вы используете Metro, в качестве DI, то знайте что оно стало стабильным. Свеженаписанный легковесный DI для android

Релиз ноутс: https://github.com/ZacSweers/metro/releases/tag/1.0.0
🔥95
Что нового в Compose в Апреле

compose-bom:2026.04.01 или Compose 1.11.0
👉 v2 API тестирования стал дефолтным, StandardTestDispatcher вместо UnconfinedTestDispatcher. Коррутины в тестах больше не выполняются сразу — очередь, пока виртуальные часы не продвинутся
👉 Shared Elements: новый composable LookaheadAnimationVisualDebugging показывает границы анимаций, траектории и несовпадения
👉 Поддержка трекпадов: теперь трекпады распознаются как PointerType.Mouse, а не Touch. Исправляет скролл вместо выделения, добавляет поддержку жестов и десктопных контекстных меню
👉 Compose runtime: новый HostDefaultProvider позволяет библиотекам (особенно KMP) получать сервисы без зависимости от compose-ui
👉 Аннотация @PreviewWrapper для переиспользуемых обёрток превью:
class ThemeWrapper: PreviewWrapper {
@Composable
override fun Wrap(content: @Composable (() -> Unit)) {
JetsnackTheme {
content()
}
}
}

@PreviewWrapperProvider(ThemeWrapper::class)
@Preview
@Composable
private fun ButtonPreview() {
// JetsnackTheme in effect
}

👉 Готовимся что в 1.12.0 compileSdk обновится до 37. Будет много боли потому что 37 Sdk тянет за собой AGP 9

Android Good Reads
3👍2
Что нового в Compose в Апреле Часть 2

Экспериментальные API:

👉 Styles API: декларативные стили компонентов с автоматическими анимациями. Судя по бенчмаркам, быстрее модификаторов
👉 MediaQuery: адаптация под окружение (размер окна, тип клавиатуры, режим стола и т.д.)
👉 Grid: 2D-раскладка с треками, фракциями (fr) и авто-размерами
👉 FlexBox: мощный контейнер с гибким распределением пространства, wrap'ом и выравниванием. Замена Row/Column/Flow
👉 Новый SlotTable: ускорение случайных правок в дереве композиции (пока опционально через флаг)

Android Good Reads
👍5🔥2
Теперь будет немножко наглого самопиара. Я параллельно занимаюсь своими приложеньками. Они все без монетизации, я пытаюсь понять и прощупать почву как мне привлекать пользователей в них органически. Поэтому сегодня для вас апка основанная на litert-rm для запуска маленьких AI моделек локально на девайсе. Она только под Android, но запускается на любом девайсе независимо от наличия GooglePlay сервисов

Чуть больше "зачем" можно почитать тут

Ссылка на апку: https://play.google.com/store/apps/details?id=com.lamprof.ai
🔥52👎1💯1