🔐 GrapheneOS ответила на дело о стёртом телефоне и между строк призналась, что стирать было не обязательно
Продолжение вчерашней истории про активиста, чей Pixel обнулился прямо в руках офицера.
Публичная часть ответа предсказуемая. Команда заявила, что ОС полностью легальна, ослаблять свои механизмы защиты они не обязаны, а законы, которые потребовали бы это сделать, были бы неконституционными. Отдельно уточнили, что помочь американским силовикам восстановить данные с того телефона не могут физически: железо и софт спроектированы так, чтобы обойти шифрование было нельзя.
Интереснее то, что параллельно опубликовал GrapheneOS Foundation. Фонд выкатил разбор своих защит от извлечения данных из заблокированных устройств и довольно прозрачно намекает: телефон на GrapheneOS переживает досмотр и без duress-пароля. А следом идёт прямая оговорка, что стирание данных в некоторых случаях может повлечь юридические последствия 💥 То есть ровно тезис вчерашнего поста, только теперь его пишут сами авторы фичи.
Что предлагается вместо? Ключевая штука это авто-ребут: таймер стартует при блокировке и перезагружает аппарат, если до нуля его так и не разблокировали. По умолчанию 18 часов, настраивается в диапазоне от 10 минут до 72 часов, разблокировка любого профиля таймер сбрасывает. Реализован в
Вывод для инженера скучный и рабочий: лучшая защита на границе не та, что эффектно уничтожает данные, а та, что спрячет их и не даёт повода для уголовной статьи 🎯
#Android #GrapheneOS #Pixel #Security
Продолжение вчерашней истории про активиста, чей Pixel обнулился прямо в руках офицера.
Публичная часть ответа предсказуемая. Команда заявила, что ОС полностью легальна, ослаблять свои механизмы защиты они не обязаны, а законы, которые потребовали бы это сделать, были бы неконституционными. Отдельно уточнили, что помочь американским силовикам восстановить данные с того телефона не могут физически: железо и софт спроектированы так, чтобы обойти шифрование было нельзя.
Интереснее то, что параллельно опубликовал GrapheneOS Foundation. Фонд выкатил разбор своих защит от извлечения данных из заблокированных устройств и довольно прозрачно намекает: телефон на GrapheneOS переживает досмотр и без duress-пароля. А следом идёт прямая оговорка, что стирание данных в некоторых случаях может повлечь юридические последствия 💥 То есть ровно тезис вчерашнего поста, только теперь его пишут сами авторы фичи.
Что предлагается вместо? Ключевая штука это авто-ребут: таймер стартует при блокировке и перезагружает аппарат, если до нуля его так и не разблокировали. По умолчанию 18 часов, настраивается в диапазоне от 10 минут до 72 часов, разблокировка любого профиля таймер сбрасывает. Реализован в
init, так что уронить system_server и сорвать перезагрузку не выйдет. Цель в том, чтобы вернуть телефон в состояние Before First Unlock, где ключей в памяти нет и коммерческие форензик-комбайны резко теряют в эффективности. Ничего не уничтожено, вменять нечего, данные просто лежат зашифрованными.С 2025 Google завезла авто-рестарт через Play services. Только фиксированные 72 часа и без единой настройки.
Вывод для инженера скучный и рабочий: лучшая защита на границе не та, что эффектно уничтожает данные, а та, что спрячет их и не даёт повода для уголовной статьи 🎯
#Android #GrapheneOS #Pixel #Security
❤26👍6👎6
#Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как поменялся рейтинг?
🏆 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
Вышел
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
Яндекс выкатил первый мажор своего 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
👎46❤11👏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
В 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
👍31👎17
Coroutine Leak Detector — IDE-плагин для проверки кода корутин и Flow на предмет утечек:
👉
GlobalScope.launch / async👉
collect / collectLatest без repeatOnLifecycle / flowWithLifecycle👉
runBlocking (особенно на UI)👉
async { } без использования Deferred (исключения не будут перехвачены)👉
Job / SupervisorJob / CoroutineScope без .cancel() в onCleared/onDestroy👉 захардкоженные
Dispatchers.IO/Main/DefaultДоступны quick-fix (
Alt+Enter). Если код находится внутри ViewModel, плагин автоматически подставляет viewModelScope. В Fragment/Activity — lifecycleScope или оборачивает collect в repeatOnLifecycle(STARTED).Пока плагина нет в Marketplace. Установка выполняется через Gradle:
// сборка плагина, он появится в build/distributions/
./gradlew buildPlugin
// затем установить плагин через интерфейс IDE
Идея хорошая, но остался один вопрос: почему именно IDE-плагин? Нельзя ли было реализовать проверки через Android Lint или использовать другой анализатор? Тем более что с ИИ сейчас это можно сделать эффективно, а от IDE я уже совсем отошёл.
#Kotlin #Coroutines #AndroidStudio #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32👎13 4❤3