Android Broadcast
14.5K subscribers
3.84K photos
399 videos
11 files
6.32K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
A2UI - прокотол для AI агентов, чтобы описать текстом, что надо показать пользователю (ага, очень похоже на BDUI)

Текстовый ответ AI агента ломается, когда нужна визуализация. Остается полагаться только на то как модель умеет строить UI. Обычно нечитаемая markdown каша, еще нормальным может быть HTML/JS, но для нативной мобилки не очень.

Стнадарт A2UI предлагает делать иначе. AI агент не рисует UI и ничего не исполняет. Шлёт JSON (дерево + данные), клиент рисует своими виджетами. Очень похоже на BDUI, где JSON отправляет сервер.

Протокол открытый под Apache 2.0 за которым стоит Google. Уже совсем скоро будет релиз первой финальной версии.

Клиент заранее объявляет каталоги компонентов, поэтому агент строит UI только из них. Обновления идут сообщениями createSurface / updateComponents / updateDataModel. Клики и поля уходят обратно, агент патчит дерево.

#AI #Agents #A2UI
❤14👍3
Media is too big
VIEW IN TELEGRAM
Лучшая демонстрация A2UI - чат с ИИ агентом в мобильном приложении, где агент дает ответы, а они нативно показываются в UI

#AI
🔥51
🚀 Google выкатила первую реализацию A2UI на Compose (пока в Альфе)

Решение от Google уже включает всё для интеграции с агентом, встроенным в ваше приложение.

Есть поддержка собственных каталогов компонентов и уже готовый на основе Material 3

Надеюсь, что это перенесут на Compose Multiplatform и получится удобно писать UI с агентами на Kotlin + Compose под все платформы!

🔗 Документация A2UI Compose

#Android #Compose #A2UI #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍7🔥1
🐘 Вышел Gradle 9.8.0

Что нового
👉 Поддержка Java 27
👉 Улучшили отображение ошибок в логах
👉 Прокачали скорость работы на отдельных Windows компах
🛠 Исправление багов

#Gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥2❤1
🚀 Google готовит библиотеку AndroidX Backup Test (пока только первая альфа) для тестирования переноса аккаунта между девайсами, которое становится обязательным в Google Play

// Пример теста на JUnit 5
@ExtendWith(BackupRestoreExtension::class)
@BackupRestoreConfig(applicationId = "com.example.app")
class BackupRestoreTest {

@Test
fun prefsSurviveCloudRestore(
controller: BackupRestoreController,
@TempDir outputDir: Path,
) = runBlocking {
controller.runBackupRestoreFlow(
storage = StorageDomain.Preference("user_prefs"),
outputDir = outputDir,
mode = BackupTransportMode.CLOUD_ENCRYPTED,
)
}
}


#Android #AndroidDev #AndroidJetpack #Backup #Тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23
🚀 Вышел androidx.navigation3 1.2.0. И этот как раз допил того, что надо в реальных кейсах навигации.

Три вещи, ради которых имеет смысл обновиться:

👉 Передача результатов между экранами. Больше не надо городить SharedViewModel или колбэки через хост. Обмен происходит через шину ResultEventBus. Для сценариев «выбрал и вернулся» это как раз то, чего не хватало.

NavDisplay(
backStack = backStack,
onBack = { backStack.removeLastOrNull() },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberResultEventBusNavEntryDecorator(),
),
entryProvider = entryProvider {
entry<Home> {
val viewModel = viewModel<HomeViewModel>()

ResultEffect<Address> { address ->
viewModel.onAddressSelected(address)
}

HomeScreen(
address = viewModel.address,
onPickAddress = { backStack.add(AddressPicker) },
)
}

entry<AddressPicker> {
val resultBus = LocalResultEventBus.current
AddressPickerScreen(
onSelected = { address ->
resultBus.sendResult(address)
backStack.removeLastOrNull()
},
)
}
},
)


👉 Поддержка KMP Deep Link API в androidx.navigation3.runtime.deeplink

👉 Упростили работы с Predictive back gesture в Android. Теперь не придется высчитывать дельту самостоятельно

#Compose #JetpackCompose #Navigation3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥13❤4
🚀 Вышел WorkManager 2.12.0

👉 Новое экспериментальное Work Metrics API для изучения истории выполнения задач.

@OptIn(ExperimentalWorkMetricsApi::class)
suspend fun dumpSyncMetrics(repo: WorkMetricsInfoRepository) {
val query = WorkMetricsQuery.Builder()
.addWorkerClassNames(SyncWorker::class.java.name)
.addTags("sync")
.setBeginTimeMillis(...)
.build()

repo.getWorkMetricsInfos(query).forEach { info ->
Log.d(
"WM",
"${info.workerClassName} " +
"state=${info.state} " +
"attempts=${info.runAttemptCount} " +
"retries=${info.explicitRetryCount} " +
"worker=${info.workerDurationMillis}ms " +
"total=${info.totalRuntimeMillis}ms " +
"stops=${info.stopReasonCounts}"
)
}
}


👉 Новое экспериментальное API для слежения за событиями разных Work
// ExecutionEventListener — все 4 метода abstract
// cheduleEventListener — default, можно повесить только нужные.
@OptIn(ExperimentalEventsApi::class)
class WorkTelemetry : ExecutionEventListener, ScheduleEventListener {

override fun onStarted(workInfo: WorkInfo) {
Log.d("WM", "start ${workInfo.id} ${workInfo.workerClassName}")
}

override fun onFinished(result: ListenableWorker.Result, workInfo: WorkInfo) {
Log.d("WM", "finish ${workInfo.id} $result attempts=${workInfo.runAttemptCount}")
}

override fun onStopped(stopReason: Int, workInfo: WorkInfo) {
Log.d("WM", "stop ${workInfo.id} reason=$stopReason")
}

override fun onException(throwable: Throwable, workInfo: WorkInfo) {
Log.e("WM", "crash ${workInfo.id}", throwable)
}

override fun onEnqueued(workInfo: WorkInfo) { }

override fun onUnblocked(workInfo: WorkInfo) { }

override fun onUpdated(oldWorkInfo: WorkInfo, updatedWorkInfo: WorkInfo) { }

override fun onCancelled(workInfo: WorkInfo) { }

override fun onPrerequisiteFailed(workInfo: WorkInfo) { }
}


Что еще поменялось
👉 minSdk 23 -> 24 (Android 7.0 теперь минимум)
👉 дефолтный executor теперь Dispatchers.Default вместо собственного. Все также можно переопределить
🛠 Исправление багов и улучшение производительности

#Android #AndroidDev #WorkManager #AndroidJetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
🤖 Android Dev Summit возвращается! Конференция от Google про Android для разработчиков снова пройдет в конце октября 2026! Уже есть расписание

#Android #AndroidDev #AndroidDevSummit
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🤖 Google прокачала Wi-Fi дебаг в Android 17 и вот как

Google выкатил ADB Wi-Fi 2.0 в Android 17: новый mDNS-стек вместо Bonjour и старого mDNS, плюс adbd сам гасит wireless debugging на недоверенной сети и поднимает обратно, когда ты снова дома.

Что стало лучше (цифры от Google)
👉 скорость автоконнекта +32%
👉 скорость коннекта увеличилась на 66% на 90% сессий

На практике важнее другое. В Device Manager устройство появляется само, если на телефоне включён Wireless debugging. QR или код, без ручного IP.

Чтобы это работало надо использовать:
👉 Девайс на Android 17 или новее
👉 Android Platform-Tools 37.0.0 или новее
👉 Android Studio Quail 3 или новее

Я пользуюсь отладкой по беспроводу и это удобно, но ВАЖНО иметь хорошую точку доступа (точно 5 или 6 GHz) с высокой скоростью, иначе все ускорения коту под хвост.

🔗 Документация
📹 Доклад на Android Makers 2026

#Android #AndroidDev #Tooling #AndroidStudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥6❤2
🤖 Обновленный гайд по поиску лагов UI в Android

Показано как искать проблемы на версиях Android с 12 и выше, а также на Android 11, Android 10 и ниже. Разница вызвана тем, что внутри ОС защиты разные инструменты для анализа.

#Android #AndroidDev #Оптимизация #UI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13