Android Broadcast
14.6K subscribers
3.8K photos
391 videos
11 files
6.26K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
🤖 На Google I/O 2026 Google официально переименовала Android из операционной системы в "intelligence system"

Самое интересное для разработчиков - AppFunctions. Это experimental preview API + Jetpack библиотека, которые позволяют приложению стать on-device MCP (Model Context Protocol) сервером. Агенты вроде Gemini смогут обращаться к функциям приложения через стандартный протокол, без скрейпинга UI. Для отладки выпустили тест-агент, для раннего выхода в production открыта форма early access.

По on-device моделям: ML Kit GenAI APIs теперь работают с Gemini Nano 4 (preview). Prefix Caching уже доступен — кеширует промежуточное состояние LLM для повторяющихся частей промпта, снижает время инференса. Structured Output API скоро - типизированные объекты на выходе вместо свободного текста.

Firebase AI Logic Hybrid Inference добавляет явный контроль маршрутизации — режимы PREFER_ON_DEVICE, PREFER_CLOUD, ONLY_ON_DEVICE, ONLY_CLOUD прямо в коде. ADK for Android в первой версии позволяет строить multi-agent workflows с оркестрацией между on-device и cloud моделями.

Ещё есть A2UI + Compose Renderer: агент "говорит UI", Compose рендерит ответ как нативные компоненты. Пока чистый эксперимент, но направление понятное. Вот для чего делается Compose BDUI

Меня больше всего интересует AppFunctions. MCP как стандарт уже работает в десктопных агентах, и Google принесла это на уровень ОС — правильное решение. Вопрос в том, насколько быстро экосистема это подхватит за пределами флагманских приложений и почему не подключать сервер к этому, я использовать интеграцию через приложение

🔗 Источник - Android Dev Blog

#Android #AndroidDev #GoogleIO #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👎61🔥1054👍4👏3
🤖 Google прилагает много усилий, чтобы сделать разработку адаптивных интерфейсов проще: библиотеки, поддержка в IDE, инструменты и пр. Понятно, ведь растет популярность складных устройств. Компания старается расширить Android за пределы смартфона, а складные смартфоны набирают обороты популярности (хоть и медленно).

‼️ Android 17 вскроет все недостатки ваших приложений на планшетах и складных смартфонах, потому что там теперь будут игнорироваться ограничения окон приложений.

В ближайших постах я пройдусь по основам адаптивности интерфейса, а пока вы можете изучить:
👉 Обзор экосистемы адаптивности от Google для Android
📹 Adaptive development for the expanding Android ecosystem
📹 Make your UI adaptive with Android Studio's AI agent
👉 Build adaptive apps
👉 Критерии качества адаптивных приложений (3 уровня)

#Android #AndroidDev #UI #Foldable #Планшет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35👎71
🤖 R8 Configuration Analyzer - удобный способ изучить как ваша конфигурация R8 влияет на итоговый код в сборке

Keep rules из сторонних библиотек часто написаны с запасом: разработчик библиотеки не знает, как именно вы её используете, и кладёт широкое -keep class com.library.** { *; }. R8 видит это и выключает оптимизацию для всего пакета, даже если вашему приложению нужны оттуда три класса. AGP 9.3.0-alpha05 добавил инструмент, который это наконец показывает с цифрами.

Configuration Analyzer генерирует HTML-отчёт, в котором по каждому keep rule и по каждой библиотеке видны три метрики:
👉 Shrinking score - процент кода, доступного для удаления неиспользуемых классов и методов
👉 Optimization score - процент кода, доступного для инлайнинга, мёрджинга классов и прочих R8-оптимизаций
👉 Obfuscation score - процент кода, доступного для обфускации имён

Начиная с AGP 9.3.0-alpha05 отчёт генерируется автоматически в build/outputs/mapping/release/configanalyzer.html при каждом билде с квлюченной минификацией. Для AGP 9.2 и ниже нужно при запуске ./gradlew assembleRelease передать системный флаг com.android.tools.r8.dumpkeepradiushtmltodirectory с путём до папки куда сохранить отчет.

Помимо широких правил анализатор выделяет ещё два типа мусора:
👉 unused rules, которые не матчат ни один класс в текущем билде (обычно появляются после рефакторинга)
👉 subsumed rules, когда одно широкое правило перекрывает другое и делает его бессмысленным.

‼️ ВАЖНО: требует R8 9.3.7-dev, который идёт в комплекте только с AGP 9.3.0-alpha05. Это ранняя alpha. На продакшн-сборки без тщательной проверки не стоит.

Это первый инструмент с конкретными цифрами по влиянию сторонних библиотек на R8. Раньше это была область догадок и ручного анализа mapping-файлов. Теперь можно прийти к мейнтейнеру с отчётом и показать: вот твоё правило, вот 35% заблокированной оптимизации у нас в проекте. Круто если такой отчет можно будет получить как XML/JSON чтобы встраивать в другие инструменты.

#Android #AndroidDev #R8 #Performance #agp #Произодвительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46👎31
🤖 ⚙️ Адаптивность под разные экраны — одна из тех вещей, которые откладывают до последнего. А когда приходит требование поддержать планшет, начинается боль. Хотя в Compose это решается в несколько строк.

GridCells.Adaptive сам рассчитывает колонки под доступное пространство — ничего не нужно задавать вручную:

LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 160.dp),
modifier = Modifier.fillMaxSize()
) {
items(list) { ItemCard(it) }
}


Но почти всегда забывают про пагинацию. pageSize хардкодят, и это ломает всю адаптивность. На планшете с 4 колонками те же 20 элементов — это 5 строк. Пользователь упирается в конец страницы раньше чем успел проскроллить.

Правильно — считать pageSize от реального числа колонок:

BoxWithConstraints {
val columns = (maxWidth / 160.dp)
.toInt().coerceAtLeast(1)
val rows = (maxHeight / 120.dp)
.toInt().coerceAtLeast(1)
val pageSize = columns * rows

val items = remember(pageSize) {
Pager(PagingConfig(pageSize = pageSize)) { MyPagingSource() }
}.flow.collectAsLazyPagingItems()

LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 160.dp)
) {
items(items.itemCount) { ItemCard(items[it]) }
}
}


На смартфоне выйдет ~10 элементов, на планшете ~30. Никаких магических чисел — только математика от реального пространства.

Самый хороший пример тут - галерея. Они показывают адаптивную сетку контента и имеет возможность настройки другого расположения элементов

🔗 Lazy lists and grids — Android Developers

#Compose #Android #AndroidDev #Ui #Adaptive #Адаптивность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍548👎7🎉3
🤖 Google как раз выкатила напоминание как оптимизировать расход памяти в Android приложениях. По сути ничего нового для тех кто уже занимался подобным, а остальным на заметку

#Android #AndroidDev #Производительность #Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37👎71
🤖 Android CLI 1.0: зачем это нужно, если всё уже есть

В Android-разработке с помощью агентов есть конкретная проблема — инструменты разбросаны:
👉 Хочешь запустить эмулятор — avdmanager
👉 Поставить пакет SDK — sdkmanager
👉 Задеплоить APK — adb
👉 Получить версии зависимостей — отдельный запрос к Google Maven
👉 Получить актуальную информацию по гайдам — Web-поиск или Google Developer Knowledge API

Агент вынужден знать синтаксис каждого, склеивать их через shell-команды и угадывать правильные пути. Android CLI 1.0 — это единая точка входа, которая агрегирует всё это в один инструмент с предсказуемым интерфейсом.

Почему CLI, а не MCP-сервер? Вопрос разумный. Но ответ простой: CLI работает с любым агентом без дополнительной интеграции. Настроил инструмент один раз, и он работает с Gemini CLI, Codex, Antigravity, чем угодно. Никаких зависимостей от протокола, никакого выбора поставщика. Хочешь взять только часть — берёшь только её.

Конкретно для агентов в 1.0 есть три вещи, которые раньше было негде взять:
1️⃣ Скиллы. android init ставит android-cli skill с Android-контекстом, android skills add --all добавляет готовые паттерны под конкретные задачи: CameraX, Perfetto SQL, Adaptive UI, AppFunctions. Агент работает не вслепую.
2️⃣ Анализ экрана девайса/эмулятора. android screen capture --annotate делает скриншот с числовыми лейблами на каждом UI-элементе, android screen resolve переводит лейбл в координаты. android layout отдаёт дерево UI в JSON без скриншота вообще.
3️⃣ Запуск Journeys. Описываешь сценарий словами, агент проходит его на устройстве и проверяет результат.
4️⃣ Поиск по Android-документации.

Можно было бы сделать MCP. Он дал бы более тесную интеграцию, но CLI универсальнее и проще в поддержке с любой стороны инструмента, который должен работать везде — это правильное решение.

#Android #AndroidDev #GoogleIO
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33👎13🔥31
🤖 Что за хрень с androidx.biometric?

Решил обновить compileSdk до Android 37, а там, оказывается, удалили старый Fingerprint API, который был до BiometricPrompt. Чем он им помешал? Ведь теперь обеспечивать поддержку старых версий Android сложнее, но это отдельный разговор.

В ходе миграции я узнал, что обновления библиотеки androidx.biometric — сущий хаос:
👉 Самая свежая версия — 1.4.0, и она только в альфе.
👉 Версия 1.3.0 вообще не делалась.
👉 Версия 1.2.0 не получила стабильного релиза, остановившись на альфе.
👉 Самая свежая стабильная версия — 1.1.0, которая вышла в 2021 году!

💬 Такого я давно не встречал. Может, вы уже решали задачу миграции на свежий compileSdk?

#Android #AndroidDev #Security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍399👎4🎉3👏1
🤖 Gradle-плагин, который сам защищает APK от рута, хукинга и клонирования

Hydra — это RASP-плагин для Android: подключаешь одной строкой в build.gradle.kts, и на выходе assembleRelease APK несёт обфусцированное нативное ядро с защитой.

plugins {
id("com.android.application")
id("com.github.iamjosephmj.hydra") version "1.9.0"
}


Что проверяет на старте процесса: рут-доступ, Frida/hooking-инструменты, клонирование через virtual spaces (Parallel Space и похожие), эмуляторы, целостность APK. Нашёл критичное — завершает процесс. Без advisory-режима, сразу kill.

secrets {} в конфиге шифрует строки при сборке, в classes.dex попадает только цифертекст, расшифровка только на чистом устройстве:

val url = withContext(Dispatchers.IO) { Hydra.secret("apiUrl") }


Всё on-device, без сети, без телеметрии. INTERNET permission не объявляется вообще.

⚠️ Ядро libdicore.so закрыто и обфусцировано — проверить что именно кладётся в APK нельзя. Для финтех-продакшна это принципиальный вопрос. Kill-by-default сломает эмуляторы в QA — тестировать только на реальных чистых устройствах. QUERY_ALL_PACKAGES потребует декларации в Play Console.

В продакшн только после того, как понял, что именно ты кладёшь в свой APK.

🐱 GitHub

#Android #AndroidDev #Безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👎20👍1752
‼️ Каждый год 31 августа наступает дедлайн по повышению targetSdk. В этом году дедлайн потребует минимум 36 (Android 16), и это не просто цифра в Gradle-скриптах!

Чуть больше двух месяцев до дедлайна Google Play. С 1 сентября новые публикации и обновления должны таргетировать Android 16 (API 36). Пропустить срок — приложение пропадёт из выдачи для новых пользователей на устройствах с Android новее вашего текущего таргета.

Главная ловушка: переход на targetSdk = 36 включает breaking changes, которые начинают работать сразу после сборки. Что поменяется после смены цифры:

👉 onBackPressed() больше не вызывается. На Android 16 его переопределение игнорируется. Нужен OnBackPressedDispatcher или OnBackInvokedCallback.

👉 Native .so и 16KB page size. Если в приложении или транзитивных зависимостях есть нативный код — нужна проверка совместимости. NDK 27+ и useLegacyPackaging = false. Без этого возможны краши на части устройств.

👉 USE_FULL_SCREEN_INTENT требует явного разрешения. Звонки, будильники, доставка — всё, что показывает уведомления поверх экрана блокировки, перестанет работать без декларации в манифесте.

👉 Health permissions. BODY_SENSORS и BODY_SENSORS_BACKGROUND заменяются на гранулярные android.permission.health.*READ_HEART_RATE, READ_OXYGEN_SATURATION и т.д.

Тестировать breaking changes можно уже сейчас, не повышая targetSdk, через compat framework:

adb shell am compat enable-all com.yourapp


Или точечно по конкретному флагу — удобнее разбирать изменения по одному. Подробнее читайте в документации.

#Android #AndroidDev #Android16
👍586👎5
🐱 Coroutine Tracer: иерархия корутин прямо на устройстве без внешних профайлеров

Стандартный Android Profiler показывает потоки. Не корутины. Kotlinx-coroutines-debug работает в unit-тестах, но не на реальном девайсе с живым UI. Яндекс Go сделали для этого отдельный инструмент.

Coroutine Tracer — плагин в их открытой библиотеке Demeter. Gradle-плагин на этапе сборки находит все launch/async через ASM и вставляет хук без единой правки в исходниках. В рантайме хук перехватывает возвращённый Job, регистрирует invokeOnCompletion и всё отображается как интерактивное дерево прямо на девайсе.

Два технических момента, которые зацепили:

👉 Перехватывают launch$default, а не только launch. Это та версия, которую компилятор Kotlin генерирует для вызовов с default-параметрами. Именно она выполняется в большинстве реальных вызовов.

👉 Parent-child связи строятся через обратный индекс Job → traceId. Без него launch-в-цикле даёт квадратичный оверхед на горячем пути. Дерево собирается итеративно — страховка от StackOverflowError на глубоких иерархиях.

Zero overhead по умолчанию: без includedClasses в конфиге плагин ничего не инструментирует.

Отсутствие нормального рантайм-инструментария для корутин давно раздражало. Это первый инструмент из тех, что видел, который работает на живом девайсе без ручной расстановки меток.

🔗 Статья на Хабре

#Kotlin #Coroutines #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍38👎93
🤖 Samsung убивает процесс во время Custom Tab, даже когда Google обещал защиту через KeepAliveService

Команда Android в Банки.ру полторы недели дебажила Seamless-авторизацию (вход по номеру через HTTP Header Enrichment): на iOS всё стабильно, на Android соединения рвались случайным образом. Логи врали, таймаут без причины, снифать мобильный трафик оператора нельзя, а сам оператор банил номер за десятки попыток авторизации подряд.

Причина не в бэкенде и не в DNS. Когда открывается Custom Tab для SSO, Activity приложения уходит в onPause() → onStop(). По документации Chrome, браузер должен поднимать process importance приложения через bound KeepAliveService, и процесс не попадает под сетевые ограничения. Но проприетарные слои энергосбережения Samsung и Xiaomi этот механизм игнорируют и убивают процесс по таймеру, не глядя на bound services. У Huawei логика другая — он смотрит на реальный сетевой трафик и не трогает активный процесс, поэтому там всё работало стабильно.

Фикс — ForegroundService с типом shortService:

override fun onCreate() {
super.onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
startForeground(
NOTIFICATION_ID,
createNotification(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE,
)
} else {
startForeground(NOTIFICATION_ID, createNotification())
}
}

`shortService доступен с Android 14 (лимит ~3 минуты, для 10–15 секунд поллинга с запасом), на более старых версиях работает как обычный ForegroundService. Процесс получает importance PERCEPTIBLE_APP_ADJ, и даже Samsung не трогает foreground service на One UI 6+.

‼️ ВАЖНО: сервис стартует и работает, даже если пользователь запретил приложению уведомления —
POST_NOTIFICATIONS` для запуска foreground service не требуется, просто плашка не появится в шторке.

Хороший повод лишний раз не доверять только официальной доке по process lifecycle и тестировать не на одном Pixel, а хотя бы на паре вендоров с разной агрессией энергосбережения.

🔗 Полная статья — там же разбор всех отвергнутых гипотез (DNS, оператор, регион) и код привязки к жизненному циклу SSO.

#Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115👎93🔥3👏2
🚀 Вышел Room 3.0 Stable и это не просто поднять версию, а надо мигрировать на новую библиотеку!

Google зарелизил Room 3.0 (androidx.room3), и это самый серьёзный мажор Room за всю его историю: библиотеку переписали под Kotlin Multiplatform с нуля.

Ради обратной совместимости 3.0 живёт в отдельном пакете и maven-координатах (androidx.room3:room3-runtime вместо androidx.room:room-runtime), поэтому 2.x и 3.x спокойно уживаются в одном проекте на разных базах данных. Мигрировать можно постепенно, модуль за модулем.

Cама миграция не косметическая. Cursor и SupportSQLite слой под Android убраны, всё теперь через корутины:

// было (Room 2.x)
roomDatabase.query("SELECT * FROM Song").use { cursor -> ... }

// стало (Room 3.x)
roomDatabase.useReaderConnection { connection ->
connection.usePrepared("SELECT * FROM Song") { stmt -> ... }
}


KAPT для Room больше не работает вообще, только KSP и весь код генерируется на Kotlin. InvalidationTracker.Observer заменили на Flow (createFlow()). Конфигурация через Executor тоже ушла, теперь CoroutineContext.

Из нового:
🔥 FTS5 через @Fts5
🔥 поддержка JS и WasmJS (драйвер поверх Web Worker и OPFS)
🔥 кастомные DAO return type converters. Paging, RxJava и LiveData интеграции теперь строятся на одном общем API вместо трёх разных костылей ранее.

‼️ ВАЖНО: это не «обновил зависимость и всё скомпилировалось». Если у тебя много прямых обращений к SupportSQLiteDatabase или ты завязан на Executor-конфигурацию, то закладывай время на миграцию.

#Android #AndroidDev #KMP #Web #WASM #AndroidJetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👎30👍102
🤖 Google пересчитал Android Bench для AI-кодинга: новый движок оценки и восемь новых моделей

В июльском релизе апдейта Android Bench (лидерборда LLM для Android-задач) изменились не только модели, но и сам механизм оценки. Ранее бенчмарк использовал кастомный mini-swe-agent v1, теперь — фреймворк Harbor.

Весь лидерборд пересчитали заново: баллы всех моделей изменились, а старые результаты сохранены в архиве.

Добавили восемь моделей: Claude Fable 5, Claude Sonnet 5, Claude Opus 4.8, GLM 5.2, Kimi K2.7 Code, MiniMax M3, Qwen 3.7 Plus и Qwen 3.7 Max. Лидер — Claude Fable 5 с 84,5 баллами. GPT-5.5 отстаёт на четыре балла (80,2), а Sonnet 5 — почти на 10 баллов. Ожидаем добавления семейства GPT 5.6.

#Android #AndroidDev #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27👎112
🤖 Помимо это в Android Bench теперь можно предложить добавить задачу в подборку для оценки или прогнать и опубликовать собственные тесты через Harbor.

Раньше методика Android бенча была открытой, но доступной только для ознакомления. Теперь же бенчмарк можно адаптировать под свою кодовую базу и реально проверить модели на ваших задачах.

#Android #AndroidDev #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👎9👍61
Android Broadcast
🤖 Google пересчитал Android Bench для AI-кодинга: новый движок оценки и восемь новых моделей В июльском релизе апдейта Android Bench (лидерборда LLM для Android-задач) изменились не только модели, но и сам механизм оценки. Ранее бенчмарк использовал кастомный…
📈 Моя аналитика обновленного Android Bench и личные впечатления:

👍 Топ 5 моделей вполне оправдан и скоро там ворвутся модели GPT 5.6. Nek активно работает с ними и можете почитать в его блоге, а я ему доверяю. Проблема топов - очень высокая цена для достижения этих цифр, хотя другие показали затраты меньше, потому что просто не смогли справится и остановились на пол пути

😂 GLM 5.2 выдаёт результат на уровне Opus 4.8, но стоит на 33% дороже ($117 против $88). Почти треть переплаты за тот же результат. Мой личный опыт это подтверждает отдельно от бенчмарка: на подписке за $60 я за час съел недельный лимит, не сделав ничего полезного. Не знаю, кому такие открытые модели вообще нужны в таком виде.

⭐️ Gemini 3.5 Flash — реально худшая сделка во всём рейтинге. Хуже Fable 5 по score (71.1 против 84.5) и при этом дороже ($165.6 против $133.2). Flash в названии обычно значит дешёвый быстрый тир, тут наоборот: дороже топа при качестве почти на 13 пунктов ниже.

🏆 Kimi K2.7 Code — результат между Opus 4.7 и 4.8 (70.4), а стоит примерно вдвое дешевле. Пока лучший баланс качество/цена среди моделей с внятным score.

🤔 DeepSeek V4 (Pro и Flash) заметно отстают от топа по качеству, но стоят копейки. Для дешёвого чернового прогона это рабочий вариант.

Жду появления в рейтинге моделей Composer 2.5 и Grok 4.5, так как они явно не дали мне глубины Opus, но справились довольно неплохо, и продолжаю их тесты. GLM 5.2 оказался мусором, съедающим бюджеты.

#Android #AndroidDev #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26👎143
🤖 Reddit переписали обёртку над ExoPlayer с нуля

Алексей Быков выложил разбор: точечные перформанс-оптимизации ExoPlayer выросли в полноценную архитектуру:
👉 self-hosted UI-компоненты для видео
👉 пул плееров с прогревом
👉 четыре реальных продакшн-бага по пути (гонка позиций при паузе, повторное использование MediaSource между плеерами, Choreographer для плавного seekbar).

🚀Итог — задержка старта видео упала на 65% на P50.

Полезно прочитать, если в приложении видео больше одного плеера на экране или вы сами проектируете архитектуру поверх ExoPlayer/Media3. Найдёте в статье готовые паттерны и грабли, мимо которых можно пройти.

🔗 Все детали в подробном разборе

#Android #AndroidDev #ExoPlayer
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍62🔥94👎3
🔨 Android Studio Quail 2 вышла в stable:

👉 Параллельные чаты агента. Открываешь несколько вкладок Agent Mode и гоняешь задачи одновременно: рефакторинг UI в одной вкладке, правка ProGuard-правила в другой, генерация документации в третьей. У каждого чата можно выбрать свою модель.
⚠️ Worktree пока не поддерживается, так что параллельные агенты работают в одном рабочем дереве, за конфликтами следить самому.


👉 LeakCanary встроен в Profiler. Популярный детектор утечек памяти теперь встроенная фича профайлера, не отдельная зависимость в проекте. На компьютере разработчика анализ идёт быстрее, заявлено до 5 раз в сравнении запуском на телефоне. Есть интерактивная трассировка утечки, переход к коду и кнопка Fix with Agent.

👉 App Quality Insights теперь сам предлагает план фикса краша по данным из панели и может применить правку кода.

#Android #AndroidStudio #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎22👍1831
🤖 Вышла Android 17 QPR2 Beta - первая бета Android 17.1, которая выйдет в 4 квартале. Пока там только багофикс

#Android #AndroidDev #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
15👎7
Samsung представила новые складные устройства и новый Fold требует вашего внимания, я точнее адаптации. Соотношение сторон 4:3 внутри и 16:10 снаружи. Формат очень интересный и вызовет интерес аудитооии, так что стоит потестировать. Может и завезут в Andorid Studio преднамеренные эмуляторы от партнёра

https://youtu.be/pLNJ-fNYTKU?si=4k98KxL7e_NYzKpU

Больше подробностей в анонсе

#Android #AndroidDev #Foldable
1👎12👍51
🤖 Гайды по адаптации Android-приложений под широкие раскладушки (Galaxy Fold8) и трифолды на официальном сайте освещают различные аспекты адаптации:

👉 Работу с Window Size Classes
👉 Уровни (Tier) адаптации приложения. Их всего 3, и выполнить уровни 1 и 2 несложно.
👉 Какие изменения конфигурации могут вызываться, но вы для смартфонов на них забивали.
👉 Поддержка смены ориентации (а планшеты и fold-ы вертят часто).
🚀 Готовность Android Jetpack библиотек.

Помните, что с Android 17 все приложения на планшетах будут растягиваться, игнорируя все ограничения в манифесте вашего приложения!


#Android #Foldable #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎4