Tracing - это инструмент для низкооверхедного in-process трейсинга — записи временных срезов выполнения кода прямо внутри процесса приложения.
Полезен, когда нужно:
👉 понять, где именно тормозит код (особенно в корутинах);
👉 собирать детальные трейсы в поле / на проде, а не только в Studio;
👉 инструментировать библиотеки без жёсткой привязки к Android;
👉 потом мёржить эти трейсы с системными (Perfetto).
Особенно пригодится:
👉 Android-разработчикам, которые занимаются перформансом;
👉 авторам библиотек (в т.ч. KMP);
👉 командам с тяжёлым использованием корутин;
👉 тем, кто пишет бенчмарки (хорошо дружит с AndroidX Benchmark 1.5+).
Выход 2.0 обусловлен полностью новым API и архитектурой работы:
👉 Появился полноценный in-process tracing с собственным буфером (не зависит от system trace buffer).
👉 Новая модель:
TraceDriver + Tracer + TraceSink (можно подключать свои бэкенды).👉 Настоящая поддержка корутин с отслеживанием suspend/resume и переключений потоков.
👉 Поддержка KMP (Android + JVM).
👉 Существенно ниже оверхед по сравнению со старым
android.os.Trace / trace {}.Старый API не deprecated его по-прежнему рекомендуют для редких критичных событий, которые обязаны попасть в system trace.
🔗 Полные release notes по ссылке
#AndroidDev #Perfromance #AndroidJetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎5
Вышел
androidx.fragment:fragment-*:1.9.0.Три изменения, которые реально заметны:
👉 Fragment теперь реализует
ContextAware. Можно повесить OnContextAvailableListener и выполнить код в момент, когда контекст стал доступен (аналог того, что давно есть у Activity).👉 У composable
AndroidFragment {} появился параметр maxLifecycle. Можно жёстко ограничить lifecycle вложенного фрагмента — удобно в пейджерах, табах и других сложных UI, где не хочется, чтобы offscreen-фрагмент уезжал в RESUMED.👉 Добавили system tracing lifecycle-событий через Jetpack Tracing. В Perfetto теперь видно, что происходит с фрагментами.
Плюс куча фиксов predictive back и
setMaxLifecycle + popBackStack, которые тянулись с 1.8.x.Если живёте на Fragment + Compose interop — обновляться имеет смысл. Чистый Compose-проект может спокойно пропустить.
#Android #AndroidDev #Jetpack #Fragment
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26👎5🎉4❤2 2
Самое полезное в новом минорном релизе:
👉
WebViewCompat.navigate наконец-то нормальная замена loadUrl. Можно заменять страницу в истории, получать объект Navigation и корректно сохранять/восстанавливать заголовки. Для приложений, где WebView — не просто «открыть ссылку», а нормальный флоу, это давно было нужно.if (WebViewFeature.isFeatureSupported(WebViewFeature.WEBVIEW_NAVIGATE_EXPERIMENTAL_V1)) {
val params = NavigationParameters.Builder()
.setShouldReplaceCurrentEntry(true) // заменяет текущую запись в истории
.addAdditionalHeader("X-Custom-Header", "value")
.build()
val navigation: Navigation
= WebViewCompat.navigate(webView, "https://example.com", params)
// navigation можно потом матчить в NavigationListener
}👉 Контроль HTTP-кэша через
Profile.getHttpCache. Можно посмотреть квоту и при необходимости подкрутить. Полезно, если много статики, или наоборот — когда кэш только место жрёт.if (WebViewFeature.isFeatureSupported(WebViewFeature.HTTP_CACHE_MANAGER)) {
val profile = ProfileStore.getInstance().getOrCreateProfile("my_profile")
val httpCache = profile.httpCache // или profile.getHttpCache()
// Посмотреть текущую квоту
val currentQuota = httpCache.quotaBytes
val defaultQuota = httpCache.defaultQuotaBytes
val isDefault = httpCache.isUsingDefaultQuota
// Задать свою квоту (например, 50 МБ)
httpCache.setQuotaBytes(50L * 1024 * 1024)
// Или вернуть автоматическое управление
// httpCache.useDefaultQuota()
}👉
enqueuePreconnect — можно заранее поставить preconnect в очередь, не заставляя WebView стартовать прямо сейчас.👉 Можно отключить автоматическую загрузку фавиконок (
setDownloadFaviconsEnabled). Мелочь, но экономит память и трафик, особенно если иконок много.👉 Плюс Android Lint, который теперь ругается, если кастомный
WebViewClient не переопределил onRenderProcessGone. Полезно, потому рендерер падает регулярно.🔗 Подробности релиза
#Android #AndroidDev #WebView #AndroidJetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍4👎4🔥4
Ты не пройдешь! Сказал Джейк Вортон всем LLM для контрибьюта в OkHttp, Okio, Retrofit и SQLDelight библиотеки.
Пока не рассказали как будет определяться, что код или PR от LLM, но война объявлена. Так же непонятно какие будут последствия для тех кто попробует что-то зарепортить или влить с LLM.
Как вы оцените такой подход авторов популярного Open Source?
Пока не рассказали как будет определяться, что код или PR от LLM, но война объявлена. Так же непонятно какие будут последствия для тех кто попробует что-то зарепортить или влить с LLM.
Как вы оцените такой подход авторов популярного Open Source?
🔥135👍36👎26❤9🎉2
Яндекс выкатил первый мажор своего DI-фреймворка. Основное:
👉 Единый backend-agnostic
Yatagan entry point в api-public. Reflection или codegen подхватываются автоматически, имплементация с генерацией кода имеет приоритет.👉 Экспериментальный Dagger compatibility mode. Включаешь
yatagan.experimental.enableDaggerCompatibility и Yatagan генерит DaggerMyComponent фасады. Старые DaggerMyComponent.create() / .builder() продолжают работать. Поддерживается ядро (components, modules, scopes, multibindings, assisted), без Hilt/Android/producers.👉 Conditions API почистили: legacy
@Condition/@AnyCondition deprecated в пользу @ConditionExpression, @Provides(Conditional(...)) → отдельный @Conditional на методе.👉 Runtime-конфиг стал declarative (processor options +
parameters.properties), убрали глобальный mutable state.Есть подробный migration guide и даже скилл для агента:
npx skills add yandex/yataganЭто RC. Compatibility mode экспериментальный — граф лучше провалидировать. Но для тех, кто уже страдает от Dagger на больших проектах и смотрел в сторону Yatagan, порог входа заметно снизился.
🔗 Release Notes
#Android #AndroidDev #DI #Яндекс
Please open Telegram to view this post
VIEW IN TELEGRAM
👎44❤11👏2
Технологии на пороге тектонического сдвига 🧠
Мир разработки переживает не просто обновление версий и фреймворков, а смену фундаментальных принципов. AI диктует новые правила игры: перестраиваются архитектура приложений, инженерные процессы и даже взаимодействие с пользователем.
Именно об этом пойдет речь на deep tech night — конференции Яндекса о технологических вызовах в эпоху AI.
Это разговор о реальном опыте команд, которые решают сложные задачи на стыке AI, разработки, инфраструктуры и данных. Выступать будут приглашенные эксперты, среди которых Мо Гавдат (бывший Chief Business Officer Google X) и спикеры Яндекса, которые поделятся своим практическим опытом.
Среди тем докладов:
- Как ИИ изменит разработку ПО, процессы и роль разработчика, Мо Гавдат.
- Как новые подходы помогают перейти от надстройки над классическими системами к одностадийным рекомендациям без ручного фичеинжиниринга, Алексей Гусаков (CTO Бизнес‑группы Поисковых сервисов и ИИ).
- Как в RL для больших моделей искать баланс между алгоритмами и производительностью, Иван Сапожков (руководитель группы базовой ML‑инфраструктуры).
👉 Регистрируйтесь, чтобы получить доступ к трансляции докладов, задать вопросы экспертам в прямом эфире и посмотреть запись после события. Полная программа и подробности про офлайн можно посмотреть на сайте.
Мир разработки переживает не просто обновление версий и фреймворков, а смену фундаментальных принципов. AI диктует новые правила игры: перестраиваются архитектура приложений, инженерные процессы и даже взаимодействие с пользователем.
Именно об этом пойдет речь на deep tech night — конференции Яндекса о технологических вызовах в эпоху AI.
Это разговор о реальном опыте команд, которые решают сложные задачи на стыке AI, разработки, инфраструктуры и данных. Выступать будут приглашенные эксперты, среди которых Мо Гавдат (бывший Chief Business Officer Google X) и спикеры Яндекса, которые поделятся своим практическим опытом.
Среди тем докладов:
- Как ИИ изменит разработку ПО, процессы и роль разработчика, Мо Гавдат.
- Как новые подходы помогают перейти от надстройки над классическими системами к одностадийным рекомендациям без ручного фичеинжиниринга, Алексей Гусаков (CTO Бизнес‑группы Поисковых сервисов и ИИ).
- Как в RL для больших моделей искать баланс между алгоритмами и производительностью, Иван Сапожков (руководитель группы базовой ML‑инфраструктуры).
👉 Регистрируйтесь, чтобы получить доступ к трансляции докладов, задать вопросы экспертам в прямом эфире и посмотреть запись после события. Полная программа и подробности про офлайн можно посмотреть на сайте.
1👎25👍4🔥3❤2
Forwarded from Compose Broadcast
Официально появился
mediaQuery — лямбда, которая смотрит на текущий UiMediaScope и возвращает boolean. Внутри можно проверять:👉
windowWidth / windowHeight👉
windowPosture (Tabletop, Book, Flat)👉
pointerPrecision (Fine → Coarse → Blunt → None)👉
keyboardKind (Physical / Virtual / None)👉
hasCamera / hasMicrophone👉
viewingDistance (Near / Medium / Far)Включается одним флагом при запуске приложения:
ComposeUiFlags.isMediaQueryIntegrationEnabled = true
Для размеров, которые дёргаются часто, лучше использовать
derivedMediaQuery (обёртка над derivedStateOf):// Composable code
val narrowerThanMedium by derivedMediaQuery {
windowWidth < WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND.dp
}
val narrowerThanExpanded by derivedMediaQuery {
windowWidth < WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND.dp
}
when {
narrowerThanMedium -> SinglePaneLayout()
narrowerThanExpanded -> TwoPaneLayout()
else -> ThreePaneLayout()
}
Самый чистый кейс — foldable в tabletop:
// Composable code
if (mediaQuery { windowPosture == UiMediaScope.Posture.Tabletop }) {
TabletopLayout()
} else {
FlatLayout()
}
Это API не замена WindowSizeClass, но удобный единый вход для всего, что меняется в рантайме. Если пишете адаптив под foldable / desktop / TV — возьмите на заметку. Пока не перенесли в Compose Multiplatform.
Документация Media Query API
#Compose #JetpackCompose #Adaptive #UI #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤5👎4🔥2
XR SDK - набор библиотек для разработки приложения для очков и шлемов дополненной реальности на Android XR ОС
Google выкатил beta для трёх ключевых кусков:
-
androidx.xr.scenecore:scenecore:1.0.0-beta02-
androidx.xr.arcore:arcore:1.0.0-beta02-
androidx.xr.runtime:runtime:1.0.0-beta02Compose for XR пока ещё
1.0.0-alpha17 (обещают beta скоро).Тестировать можно на Samsung Galaxy XR или в Android XR Emulator.
🔗 Официальный анонс
#Android #AndroidXR #XR #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👎5🎉3❤2 1
🤯 И ты, Gradle, ударился в AI
Gradle запустил инициативу Agentic Gradle. Цель — сделать сборку понятной не только человеку, но и кодинг агентам.
Что внутри:
👉 официальные skills (инструкции в духе Claude Skills) — как читать ошибки, запускать таски, разбирать Build Scan. Skills обещают в ближайшие недели (после бенчмарков).
👉 бенчмарки, которые измеряют реальный эффект skills;
👉 убирание лишнего текста, чтобы не жечь токены зря.
Ценой стал сдвиг Configuration Cache с Gradle 10 на 11.
Сам кэш уже стабильный — включай руками:
Самое показательное даже не skills. Билд-система — штука, которая вроде бы должна стоять чуть в стороне от хайпа. И вот Gradle тоже идёт в agentic. Потому что пользователи уже этого хотят, потому что открываются новые способы продвижения, потому что инвесторам это нужно показывать. Даже серьёзные инструменты сейчас вынуждены "кланяться".
🔗 Источник - блог Gradle
#Gradle #AI
Gradle запустил инициативу Agentic Gradle. Цель — сделать сборку понятной не только человеку, но и кодинг агентам.
Что внутри:
👉 официальные skills (инструкции в духе Claude Skills) — как читать ошибки, запускать таски, разбирать Build Scan. Skills обещают в ближайшие недели (после бенчмарков).
👉 бенчмарки, которые измеряют реальный эффект skills;
👉 убирание лишнего текста, чтобы не жечь токены зря.
Ценой стал сдвиг Configuration Cache с Gradle 10 на 11.
Сам кэш уже стабильный — включай руками:
org.gradle.configuration-cache=true
Самое показательное даже не skills. Билд-система — штука, которая вроде бы должна стоять чуть в стороне от хайпа. И вот Gradle тоже идёт в agentic. Потому что пользователи уже этого хотят, потому что открываются новые способы продвижения, потому что инвесторам это нужно показывать. Даже серьёзные инструменты сейчас вынуждены "кланяться".
🔗 Источник - блог Gradle
#Gradle #AI
👍41👎17🔥11❤4
В Android 17 на Pixel уже работают per-app memory limits. Сегодня Google написал, что в течение года их начнут включать всё больше производителей на устройствах от 4 ГБ RAM и больше.
Как это работает на практике:
1. Превысил бюджет → страницы приложения насильно уходят в zRAM (сжатая RAM). CPU-оверхед → jank и тормоза.
2. Приложение продолжает есть много памяти дальше → процесс убивают.
Можно отловить причину это ловится через
ApplicationExitInfo:-
reason == REASON_OTHER-
description содержит "MemoryLimiter:AnonSwap"Можно ещё повесить
TRIGGER_TYPE_ANOMALY в ProfilingManager и автоматически снимать heap dump в момент, когда лимит сработал.Для локального теста поведения можно использовать adb:
adb shell am memory-limiter status
adb shell am memory-limiter manual <pid> <limit_mb>
adb shell am memory-limiter ignore <uid>|all|none
В Android Vitals и Crashlytics 20.1.0 уже есть отдельные сигналы по этим убийствам. Если у тебя в приложении есть тяжёлые экраны, кэши, игры или foreground-сервисы - следи за метриками.
🔗 Источник - блог Android Developers
#Android #AndroidDev #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29👎15
Один из форматов изучения вайбкодинга, который зарекомендовал себя
Можно тысячу раз показать, как работать с ИИ, но это будет опыт и настройка от другого человека, которые не позволят выполнить задачи так, как хотите вы, и не дадут нужных результатов. Лучшая аналогия — езда на велосипеде. Можно тысячу раз показывать, как кататься, но вам нужно самостоятельно сесть на «велосипед» и поехать, набить шишки и довести навыки до совершенства, чтобы стабильно рассекать по любым дорогам и реализовать свои идеи.
Погружение в ИИ через формат челленджа от Гладкова — экспресс-курс, где вам не расжевывают теорию в лекциях, а дают вводную каждую неделю, задание — и в бой! Получаете доступ в сообщество таких же энтузиастов + сам Леша будет там отвечать на ваши вопросы.
Подробности про Челлендж на сайте. По промокоду
Можно тысячу раз показать, как работать с ИИ, но это будет опыт и настройка от другого человека, которые не позволят выполнить задачи так, как хотите вы, и не дадут нужных результатов. Лучшая аналогия — езда на велосипеде. Можно тысячу раз показывать, как кататься, но вам нужно самостоятельно сесть на «велосипед» и поехать, набить шишки и довести навыки до совершенства, чтобы стабильно рассекать по любым дорогам и реализовать свои идеи.
Погружение в ИИ через формат челленджа от Гладкова — экспресс-курс, где вам не расжевывают теорию в лекциях, а дают вводную каждую неделю, задание — и в бой! Получаете доступ в сообщество таких же энтузиастов + сам Леша будет там отвечать на ваши вопросы.
Подробности про Челлендж на сайте. По промокоду
AIAB9 получите скидку. Старт нового сезона - 31 августа.👎136🔥8👏4🎉1
😂 Как же долго мы ждали этого - Gemini Enterprise теперь в Android Studio
#AnroidStudio #AI #AndroidDev #Gemini
#AnroidStudio #AI #AndroidDev #Gemini
👎40👍6🎉4 4
🔥 Android-разработчик, твоё приложение — это песочница, но пользователь может пробить в ней дыру в любой момент.
Многие думают, что разрешения — это просто диалог «Разрешить / Запретить». На самом деле это многослойная система с двумя уровнями проверок, временными разрешениями, автоматическим отзывом и политиками Google Play, которые могут заблокировать твоё приложение ещё на этапе публикации.
В этом видео мы копаем глубже документации и разбираем:
👉 Скрытый фреймворк AppOps — второй слой защиты, который может тихо заблокировать доступ, даже если у тебя есть грант.
👉 URI Permission Grants — механизм делегирования доступа без необходимости запрашивать широкие разрешения.
👉 Как проектировать архитектуру, чтобы приложение не падало, когда пользователь говорит «Нет».
Разрешение — это не гарантия доступа. Это формальное разрешение внутри сложной многоуровневой системы ограничений. Если твоя фича не работает без разрешения — это не проблема пользователя. Это баг архитектуры.
🎯 Кому смотреть:
👉 Android-разработчикам, которые хотят строить стабильные и устойчивые приложения
👉 Техлидам и архитекторам, которые проектируют приватность-first системы
👉 Всем, кто устал от крашей после отзыва разрешений в настройках
👉 Хочет лучше формировать требования для AI агентов и понимать что происходит
📌 В видео:
👉 Реальный путь разрешения — от манифеста до системного сервиса
👉 Почему
👉 Как обходиться без разрешений через системные пикеры
👉 Google Play политики, которые могут забанить твоё приложение
Разрешения — это не техническая деталь. Это контракт доверия между твоим продуктом и пользователем.
———
Ставь 🔥, если хочешь видеть больше глубоких разборов Android-архитектуры! (будут только под платной подпиской)
🪙 Полный разбор на Boosty
Многие думают, что разрешения — это просто диалог «Разрешить / Запретить». На самом деле это многослойная система с двумя уровнями проверок, временными разрешениями, автоматическим отзывом и политиками Google Play, которые могут заблокировать твоё приложение ещё на этапе публикации.
В этом видео мы копаем глубже документации и разбираем:
👉 Скрытый фреймворк AppOps — второй слой защиты, который может тихо заблокировать доступ, даже если у тебя есть грант.
👉 URI Permission Grants — механизм делегирования доступа без необходимости запрашивать широкие разрешения.
👉 Как проектировать архитектуру, чтобы приложение не падало, когда пользователь говорит «Нет».
Разрешение — это не гарантия доступа. Это формальное разрешение внутри сложной многоуровневой системы ограничений. Если твоя фича не работает без разрешения — это не проблема пользователя. Это баг архитектуры.
🎯 Кому смотреть:
👉 Android-разработчикам, которые хотят строить стабильные и устойчивые приложения
👉 Техлидам и архитекторам, которые проектируют приватность-first системы
👉 Всем, кто устал от крашей после отзыва разрешений в настройках
👉 Хочет лучше формировать требования для AI агентов и понимать что происходит
📌 В видео:
👉 Реальный путь разрешения — от манифеста до системного сервиса
👉 Почему
checkSelfPermission — это только начало👉 Как обходиться без разрешений через системные пикеры
👉 Google Play политики, которые могут забанить твоё приложение
Разрешения — это не техническая деталь. Это контракт доверия между твоим продуктом и пользователем.
———
Ставь 🔥, если хочешь видеть больше глубоких разборов Android-архитектуры! (будут только под платной подпиской)
Please open Telegram to view this post
VIEW IN TELEGRAM
13👎44🔥21👍4❤3