YouTube
The future unfolds! How to optimize Android apps for adaptive layouts
The future of devices is unfolding with new foldables and large screens, creating unique development opportunities. Optimize your Android app for new form factors, including foldables and large screens by implementing dynamic layouts with Jetpack Compose…
Samsung представила новые складные устройства и новый Fold требует вашего внимания, я точнее адаптации. Соотношение сторон 4:3 внутри и 16:10 снаружи. Формат очень интересный и вызовет интерес аудитооии, так что стоит потестировать. Может и завезут в Andorid Studio преднамеренные эмуляторы от партнёра
https://youtu.be/pLNJ-fNYTKU?si=4k98KxL7e_NYzKpU
Больше подробностей в анонсе
#Android #AndroidDev #Foldable
https://youtu.be/pLNJ-fNYTKU?si=4k98KxL7e_NYzKpU
Больше подробностей в анонсе
#Android #AndroidDev #Foldable
1👎13👍5 1
👉 Работу с Window Size Classes
👉 Уровни (Tier) адаптации приложения. Их всего 3, и выполнить уровни 1 и 2 несложно.
👉 Какие изменения конфигурации могут вызываться, но вы для смартфонов на них забивали.
👉 Поддержка смены ориентации (а планшеты и fold-ы вертят часто).
Помните, что с Android 17 все приложения на планшетах будут растягиваться, игнорируя все ограничения в манифесте вашего приложения!
#Android #Foldable #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23👎5
Media is too big
VIEW IN TELEGRAM
Когда: четверг, 30 июля, 19:00 (GMT+3)
В прямом эфире устрою прожарку нового примера от Google с демонстрацией как встраивать AI в классические Android приложения.
Буду ревьювить код, отвечать на ваши вопросы и классно проведем время.
Смотреть можно на
#AndroidBroacast #AndroidDev #AI #CodeReview
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍44👎12🔥10❤5👏2
Интересная функция Bug Report: одной кнопкой собирается ZIP-архив с интерактивным HTML-дашбордом, скриншотом, логами, сетевой историей и списком падений. Для QA есть
OverlayMode.BugReporterOnly (только FAB для репортов, метрики не мешают тестированию) и Hidden, когда панель вызывается из собственного меню отладки через DebugOverlay.openPanel(context). Это решает вечную проблему «воспроизвёл, но к тикету приложить нечего».Автор не позиционирует это как замену профайлеру. Для internal- и debug-сборок мне такой формат нравится больше, чем поднимать Profiler на каждый чих.
#Android #AndroidDev #Tooling #OpenSource
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27👎6🔥3❤1
#Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Причина на поверхности — стоимость отправки классических SMS для бизнеса выросла настолько, что мобильная связь как канал верификации уходит на второй план. Практически любой крупный ритейлер, банк или сервис сегодня используют каскадную доставку: код сначала летит вам пушом (потому что бесплатный), потом в Telegram, WhatsApp, Viber, и только в крайнем случае — в старую добрую сим-карту. Бизнес банально экономит бюджеты.
И на этом фоне анонсы Android 17 выглядят как привет из прошлого века. Google тратит колоссальные ресурсы на то, чтобы заделать дыры в безопасности SMS, полностью игнорируя тот факт, что коммуникация людей и брендов давно переместилась в мессенджеры.
В новой версии ОС вводится жесткая трехчасовая задержка на доступ к входящим SMS с OTP-кодами для обычных приложений, чтобы защитить пользователей от троянов-перехватчиков. Разработчикам безальтернативно говорят: используйте нативный SMS Retriever API, который автоматически парсит сообщения по специальной хэш-подписи. Но это лечит симптомы старой болезни. Даже с SMS этот API внедрили далеко не все, потому что поддерживать уникальные хэши под разные сборки на бэкенде — та еще головная боль. А для мессенджеров никакого аналога просто не существует.
В итоге мы упёрлись в глухой тупик для UX:
👉 Если код авторизации пришел в Telegram, ваше приложение не может перехватить его легально.
👉 Пытаться читать пуши сторонних приложений через
NotificationListenerService в Google Play строго запрещено — за это прилетает моментальный бан.👉 Никакого доверенного и безопасного
NotificationRetrieverAPI для мессенджеров Google не предлагает.Пользовательский опыт в Android не развивается в соотвествии с трендами. Пользователь вынужден совершать кучу лишних движений: свернуть экран, открыть мессенджер, скопировать код, вернуться и вставить его руками. Пока Apple в iOS пытается развивать автоподстановку кодов из встроенной почты и системных уведомлений, Android-разработчики остаются заложниками ситуации, где безопасность SMS доведена до стерильности, а реальные сценарии из жизни брошены на произвол судьбы. Готовимся к тому, что процесс авторизации в приложениях на Android 17 станет еще чуть более «ручным».
#Android17 #AndroidDev #UX #Безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍48👎14❤6🔥1
Как поменялся рейтинг?
🏆 Claude Opus 5 новый лидер с результатов 91.8%. Прошлый лидер Fable 5 был с результатов 90.9%. По цене Opus вышел дороже
👉 GPT 5.6 Luna показала результат 86.8% но при этом стоимость указана 7.2$ 🤯 (
👉 GPT 5.6 Terra набрала 86.8% потратив 48$,
🤔 Qwen3.8 Max показал достойные 87.0% но при этом потратил больше всех моделей - 196.7$
Бенчмарк все также игнорирует Grok и Compose модели 😡 Что-то не так в отношениях между компаниями Google и Илоном - загадка
UPD Kimi K3 не считается открытой моделью, что неверно. Изначально веса были закрыты и потом открываются. Видно в бенч попадают данные на момент запуска проверки модели.
#AI #Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👎6❤2
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
👍18👎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