Ответ
Один из последних челленджей — адаптация под Material Design 3 (Material You). Новые динамические цвета, дизайн-токены и кастомизация требуют пересмотра UI.
Jetpack Compose тоже бросает вызовы: оптимизация производительности (например, избегание рекомпозиций), сложные анимации и интеграция с View-системой.
Фоновые ограничения (Android 12+): точные алёрмы, ограничения на запуск сервисов. Решение — WorkManager, Foreground Services с новыми типами.
Пример с Compose:
var state by remember { mutableStateOf(0) }
LaunchedEffect(key1 = state) {
// Логика, зависящая от state
}
Также растёт важность модульности и многомодульных сборок для ускорения разработки.
Ответ 18+ 🔞
Слушай, вот сидишь ты такой, довольный собой, уже всё в приложении работает, как швейцарские часы, и тут бац — выкатывают Material Design 3. Это ж ёперный театр! Ты думал, что с цветами и темами разобрался? Как бы не так. Теперь тебе нужно не просто подобрать палитру, а вписаться в эту всю систему динамических цветов от Material You, где ОС сама, сука, решает, какой оттенок будет доминировать, исходя из обоев пользователя. Чистая магия, а для нас — головная боль. Надо перелопатить все дизайн-токены, переписать стили, чтобы всё это кастомизировалось как надо. Волнение ебать, честно.
А про Jetpack Compose я вообще молчу. Штука, конечно, мощная, но иногда такое вытворяет, что хочется спросить: «Какого хуя?». Вот пишешь ты интерфейс, всё летает, а потом бац — лаги. Оказывается, какая-то хитро написанная композейбл-функция заставляет перерисовываться половину экрана по любому чиху. Оптимизация рекомпозиций — это отдельная наука, чувак. Нужно remember, derivedStateOf, LaunchedEffect с ключами юзать на каждом шагу, чтобы не накосячить.
Смотри, вот простой пример, но в нём уже подвох:
var state by remember { mutableStateOf(0) }
LaunchedEffect(key1 = state) {
// Логика, зависящая от state
}
Казалось бы, всё просто: меняется state — запускается эффект заново. Но если ты этот state неправильно в кучу других состояний завернёшь, то можешь получить овердохуища ненужных пересчётов. А ещё попробуй сложную анимацию сделать или View-систему старого образца в Compose встроить — тут уже без бутылки не разберёшься, ядрёна вошь.
И это ещё цветочки. Приходят обновления ОС, и начинается цирк с фоновыми ограничениями. Начиная с Android 12, система стала такой заботливой, что просто так алёрмы не поставишь, сервисы с заднего плана не запустишь. Всё, бля, для батарейки. Приходится пересаживаться на WorkManager для отложенных задач и юзать Foreground Services с этими новыми типами — camera, microphone, phoneCall. А иначе твое приложение просто уснёт и не проснётся, когда нужно. Доверия к этим фоновым процессам — ноль ебать.
И на десерт — модульность. Сейчас все помешались на многомодульных сборках. И в чём-то они правы: когда проект растёт, компилировать всё каждый раз — это пиздец как долго. Разбиваешь на фичи, на core-модули — и сборки ускоряются, команды могут работать параллельнее. Но вот настройка этих всех зависимостей между модулями, чтобы всё линковалось и не падало… Это та ещё сосалка. Иногда кажется, что проще было бы одним монолитом жить, но нет, прогресс не остановить.
Короче, разработка под андроид — это не про скуку. Это постоянная гонка, где тебе каждый год подкидывают новые правила, а ты должен не просто успевать, а ещё и делать так, чтобы приложение не развалилось на старых устройствах. Весело, бля, как в дурдоме. Сам от себя иногда охуеваю, что всё это выдерживаю.