🤯 Google Antigravity - новая agent-first IDE, которая изначально спроектирована не как редактор с подсказками кода, а как среда для работы нескольких ИИ-агентов поверх реального проекта. Сделана как форк VS Code, аналогично Cursor
По традиции анонса новых моделей от торговой компании, она превосходит всех конкурентов по тестам и прорыв. GPT 5.1 и Sonnet 4.5 отдыхают
#ai #ии #google #gemini
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍9❤2🤔2🤯1
Сразу после выхода нового поколения Gemini, модель стала доступна в самой свежей версии Android Studio Otter
#androidstudio #ai #gemini
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28❤4👍3🤔2
Google выпустила долгожданный стабильный релиз DataStore 1.2.0. Эта версия приносит несколько важных улучшений, которые делают библиотеку ещё более мощной и удобной, особенно для проектов, не полностью перешедших на Kotlin Coroutines.
Ключевые нововведения:
✅ Поддержка Guava
Появился новый модуль
datastore-guava, который предоставляет API на основе ListenableFuture для разработчиков, использующих Guava. Теперь подключать DataStore в проекты на Java стало намного проще (а нужно было???)// Пример использования GuavaDataStore
val guavaDataStore: DataStore<Preferences> = GuavaDataStore.from(
produceFile = { context.preferencesDataStoreFile("settings.pb") },
serializer = PreferencesSerializer,
executor = Dispatchers.IO.asExecutor() // Используем Executor
)
ListenableFuture<Preferences> future = guavaDataStore.getData();
✅ Мультипроцессность для GuavaDataStore
Функциональность многопроцессного доступа, ранее доступная для Kotlin-версии, теперь добавлена и в
GuavaDataStore.✅ Поддержка Android Direct Boot - работа приложений до разблокировки устройства
DataStore теперь можно безопасно использовать в режиме Direct Boot. Для этого данные нужно разместить в защищённом хранилище устройства (Device Protected Storage).
val directBootDataStore = DataStoreFactory.createInDeviceProtectedStorage(
serializer = PreferencesSerializer
) { context.preferencesDataStoreFile("direct_boot_settings.pb") }
✅ Исправления важных багов
👉 Устранен
UnsatisifedLinkError при использовании R8 без стандартного ProGuard-файла.👉 Исправлена проблема, из-за которой операции
GuavaDataStore могли запускаться на главном потоке вместо указанного IO-диспетчера.👉 Решена проблема с
FileNotFoundException в OkioStorage при одновременном обращении к файлу (добавлена вторая попытка чтения).Прочие улучшения
👉 Добавлен
PreferencesFileSerializer — готовый сериализатор для работы с FileStorage.#Android #Jetpack #DataStore #Kotlin #Java #Guava
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Google выпустила мажорное обновление библиотек Lifecycle. Этот релиз сфокусирован на улучшении интеграции с Compose.
rememberLifecycleOwner для ComposeНовый композабл позволяет создавать изолированные
LifecycleOwner внутри UI. Идеально для компонентов, которым нужно независимое управление состоянием — например, для HorizontalPager, где только активная страница должна быть в состоянии RESUMED.@Composable
fun MyComposable() {
val lifecycleOwner = rememberLifecycleOwner(
maxLifecycle = Lifecycle.State.RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
)
CompositionLocalProvider(
LocalLifecycleOwner provides lifecycleOwner
) {
// Дочерние композаблы теперь имеют собственный жизненный цикл
}
}
Новый артефакт
lifecycle-viewmodel-navigation3 предоставляет готовый декоратор для автоматической привязки ViewModel к отдельным экранам в Navigation 3.NavDisplay(
backStack = backStack,
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator(), // Добавляем эту строку
),
entryProvider = entryProvider { /* ... */ }
)
Удобства для разработчиков:
👉 Идиоматичный Kotlin API для создания кастомных
CreationExtras CreationExtras {
this[MY_CUSTOM_KEY] = "myValue"
}
👉 Метод
savedStateHandle.saved() теперь нативно поддерживает nullable типы👉 Конструкторы SavedStateHandle помечены как
@VisibleForTesting⚠️ Важное изменение
Повышение
minSdk с API 21 до API 23 — убедитесь, что ваше приложение соответствует новым требованиям.#Jetpack #Lifecycle #Compose #Navigation #ViewModel #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥10🤯3👍2🙏1
Что дает библиотека
👉 Единый кроссплатформенный API для замены разрозненных решений
👉 Централизованная система управления всей навигацией в приложении
👉 Базовый слой для будущих навигационных решений Android
Пример использования:
val myHandler = object : NavigationEventHandler<NavigationEventInfo>(
initialInfo = CurrentInfo,
isBackEnabled = true
) {
override fun onBackStarted(event: NavigationEvent) {
// Подготовка к навигации
}
override fun onBackProgressed(event: NavigationEvent) {
// Анимации на основе event.progress
}
override fun onBackCompleted() {
// Завершение навигации
}
}
👉 Готовая интеграция с Compose
val navEventState = rememberNavigationEventState(
currentInfo = CurrentInfo,
backInfo = PreviousInfo
)
NavigationBackHandler(
state = navEventState,
isBackEnabled = true,
onBackCompleted = { /* Действие при завершении */ }
)
👉 Диспетчеры могут образовывать родительско-дочерние цепочки:
// Compose
val childDispatcher = rememberNavigationEventDispatcher(
parent =
LocalNavigationEventDispatcherOwner
.current
.navigationEventDispatcher
)
👉 Нативная поддержка Predictive Back из Android
👉 Библиотека уже используется в Activity 1.12.0 как базовый слой
#Jetpack #Navigation #Compose #KMP #PredictiveBack #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
This media is not supported in your browser
VIEW IN TELEGRAM
🤯 Android QuickShare теперь может работать с Apple AirDrop
Google самостоятельно сделали работу с AirDrop на всю линейку Pixel 10. Ждем когда раскатят дальше, либо Apple выкатит обновление и закроет возможность 😂
#android #pixel
Google самостоятельно сделали работу с AirDrop на всю линейку Pixel 10. Ждем когда раскатят дальше, либо Apple выкатит обновление и закроет возможность 😂
#android #pixel
❤48🤯29👍10🔥4
🔥 Мечтаете стать востребованным Архитектором ПО?
Знакомьтесь: книга «Фундаментальный подход к программной архитектуре» от гуру Марка Ричардса и Нила Форда! 🚀
Для кого:
👉 Мобильные разработчики, мечтающие вырасти до архитектора.
👉 Начинающие архитекторы
👉 Профессионалы для систематизации знаний.
Внутри руководства вы найдете:
🧩 Архитектурные паттерны (применимо и к мобильным стекам!).
🧱 Четкие определения компонентов и их взаимодействий.
⚙️ Практические приемы построения эволюционных архитектур.
💡 Современный взгляд с учетом последних 10 лет инноваций.
✔️ Универсальные принципы, работающие на любых технологиях.
Архитектура — не фреймворки, а стратегия! Учитесь проектировать системы с масштабируемостью, отказоустойчивостью, эволюционностью — это ваша ценность.
➡️ Промокод на скидку 5% —
#реклама
Знакомьтесь: книга «Фундаментальный подход к программной архитектуре» от гуру Марка Ричардса и Нила Форда! 🚀
Для кого:
👉 Мобильные разработчики, мечтающие вырасти до архитектора.
👉 Начинающие архитекторы
👉 Профессионалы для систематизации знаний.
Внутри руководства вы найдете:
🧩 Архитектурные паттерны (применимо и к мобильным стекам!).
🧱 Четкие определения компонентов и их взаимодействий.
⚙️ Практические приемы построения эволюционных архитектур.
💡 Современный взгляд с учетом последних 10 лет инноваций.
Архитектура — не фреймворки, а стратегия! Учитесь проектировать системы с масштабируемостью, отказоустойчивостью, эволюционностью — это ваша ценность.
➡️ Промокод на скидку 5% —
broadcast на книги в издательстве Питер!#реклама
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7❤5👍4🤯1
Google выпустила первую стабильную версию Input MotionPrediction — библиотеку для уменьшения задержек при вводе за счет предсказания будущих MotionEvents.
Что это решает?
👉 Уменьшает perceived latency (воспринимаемую задержку) при взаимодействии с UI
👉 Предсказывает будущие координаты касания для более плавного отклика
👉 Особенно полезно для рисования, игр и жестовой навигации
// Создаем предсказатель
val predictor = MotionEventPredictor()
// Записываем полученные события
predictor.record(motionEvent)
// Получаем предсказанные события на N миллисекунд вперед
val predictedEvents = predictor.predict(milliseconds)
Ключевые особенности:
👉 Автоматически использует системные API предсказания если доступны
👉 Встроенный алгоритм предсказания
👉 Поддерживает ориентацию и наклон стилуса
👉 Оптимизирован по памяти и производительности
- Приложения для рисования и скетчей
- Игры с тач-управлением
- Сложные жестовые интерфейсы
- Любой UI, где важна мгновенная реакция на касания
#Jetpack #Android #UI #Производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍10🤯5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥35❤4
Вот бы классно чтобы все как Uber перешли на Credential Manager API и перенос аккаунтов стал проще для пользователей, а бизнесу дешевле
Подробности в статье от разработчика
#android
Подробности в статье от разработчика
#android
👍22❤2
🔥 Черная неделя в Ergostol стартовала!
С 24 по 30 ноября вас ждут скидки до -20% на столы, подстолья и аксессуары.
В акции участвуют популярные модели: Terra 2.0, One 2.0, Ultima, Terra R 2.0 и другие. Это отличная возможность приобрести их выгодно!
⏳ Время ограничено! Успейте выбрать свой идеальный стол до 30 ноября.
👉 Со всеми предложениями можно ознакомиться на сайте.
🎁 А с промокодом
Реклама. ООО «СОФТЭФФЕКТ». ИНН 7735575262
С 24 по 30 ноября вас ждут скидки до -20% на столы, подстолья и аксессуары.
В акции участвуют популярные модели: Terra 2.0, One 2.0, Ultima, Terra R 2.0 и другие. Это отличная возможность приобрести их выгодно!
⏳ Время ограничено! Успейте выбрать свой идеальный стол до 30 ноября.
👉 Со всеми предложениями можно ознакомиться на сайте.
ANDROID10 получите ещё –10% на все товары в корзине!Реклама. ООО «СОФТЭФФЕКТ». ИНН 7735575262
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Работаете с WorkManager? Тогда вам точно пригодится встроенный в Android Studio инструмент — Background Task Inspector. Это ваш главный помощник для визуального мониторинга и отладки фоновых задач.
Что вы видите в инспекторе:
- Все WorkManager задачи в одном месте
- Текущие статусы: Running, Enqueued, Failed, Succeeded
- Детальную информацию о каждом воркере
Особенно мощно инструмент работает с цепочками задач:
// Например, у вас есть такая цепочка:
val workA = OneTimeWorkRequestBuilder<CleanupWorker>().build()
val workB = OneTimeWorkRequestBuilder<WaterColorFilterWorker>().build()
val workC = OneTimeWorkRequestBuilder<BlurEffectFilterColor>().build()
workManager
.beginWith(workA)
.then(workB)
.then(workC)
.enqueue()
Визуализация графа выполнения покажет:
- Какая задача завершилась успешно (Succeeded)
- Какая упала (Failed) и почему
- Как это повлияло на последующие задачи
Типичный сценарий отладки:
Видите статус «Enqueued»? Значит задача в очереди, но не запускается. Возможные причины:
- Ограничения не выполняются (нет сети, не заряжается устройство)
- Предыдущая задача в цепочке не завершилась
- Достигнут лимит параллельных задач
Преимущества использования:
- Экономия времени на логирование и отладку
- Наглядное представление сложных цепочек задач
- Быстрая диагностика проблем с выполнением фоновых операций
Инструмент уже ждет вас в Android Studio → View → Tool Windows → App Inspection → Background Task Inspector.
#AndroidStudio #Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30👍8🤔1
Я давно ждал, когда в Android появится аналог крутых Live Activities из iOS. И когда Google наконец-то представил Live Updates в Android 16, сразу же ждал когда она появится в приложениях доставки/такси, используемыми мною. Неудивительно но ДоДо Пицца оперативно это сделали.
Оказалось, что за красивыми картинками из презентации скрывается целая история с ограничениями, которые не описаны в документации. Ребят из ДоДо прошли через боль дизайнеров, перерисовывавших макеты, и неожиданные сюрпризы от SDK и рассказывают про свой опыт.
🔑 Ключевые открытия и борьба с реальностью:
🤯 Макеты врут! Иконка (например, машинка) не может красиво «обрезать» сегмент прогресс-бара, как в дизайне. Она просто ложится сверху, и между ними всегда будет зазор.
✅ Что в итоге?
Несмотря на все ограничения, фича того стоит! Пользователи получают супер-наглядный и всегда видимый статус заказа, а мы — новый стандартизированный инструмент от Google.
А вы уже видели Live Updates в действии? Что думаете о таком подходе Google? 👇
#Android #Android16 #AlwaysOn
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥11❤4🤔3
🤯 ИИ не спасёт экономику — и не заменит всех людей
Нобелевский лауреат и «крёстный отец ИИ» Джеффри Хинтон заявил жёстко:
Но проблема в другом:
ИИ сегодня уже снижает производительность во многих компаниях, ошибается, требует постоянной перепроверки и не способен выполнять даже простые задачи стабильно.
Отчёты MIT и Carnegie Mellon показывают:
👉 до 95% ИИ-проектов не дают роста эффективности
👉 «агентный ИИ» проваливает задачи в 70% случаев
👉 сотрудники тратят больше времени на исправление ИИ, чем экономят
Ожидания руководства ≠ реальность специалистов.
✅ 96% топ-менеджеров верят в рост эффективности от ИИ.
❌ 77% обычных сотрудников говорят об обратном.
Вывод простой:
✨ ИИ — это инструмент, а не замена людям
💣 Текущий AI-бум — больше инвестиционный пузырь, чем технологический прорыв
🧠 А главный риск — не в моделях, а в слепой вере в «магическую автоматизацию»
Использовать ИИ нужно❗️ Но разумно. И под контролем человека.
#AI #ии #разработка
Нобелевский лауреат и «крёстный отец ИИ» Джеффри Хинтон заявил жёстко:
инвестиции в ИИ не окупятся без массовой замены людей.
Но проблема в другом:
ИИ сегодня уже снижает производительность во многих компаниях, ошибается, требует постоянной перепроверки и не способен выполнять даже простые задачи стабильно.
Отчёты MIT и Carnegie Mellon показывают:
👉 до 95% ИИ-проектов не дают роста эффективности
👉 «агентный ИИ» проваливает задачи в 70% случаев
👉 сотрудники тратят больше времени на исправление ИИ, чем экономят
Ожидания руководства ≠ реальность специалистов.
✅ 96% топ-менеджеров верят в рост эффективности от ИИ.
Вывод простой:
✨ ИИ — это инструмент, а не замена людям
💣 Текущий AI-бум — больше инвестиционный пузырь, чем технологический прорыв
🧠 А главный риск — не в моделях, а в слепой вере в «магическую автоматизацию»
Использовать ИИ нужно
#AI #ии #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍97🤝15🆒5🤯4🎉2
Не так давно разобрал как работает Swift для Android, но там совсем "на скорую руку" сделали интеграцию с Gradle билд системой.
Решил показать как будет сделать нормальный плагин по лучшим практикам Gradle. Демонстрация разработки в новом видео.
Если у вас есть проблемы с Boosty - пишите @ab_manager
#AndroidBroadcast #Gradle #Swift #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍13🔥9❤4🤯1
Если внимательно посмотреть на поведение людей в поисковых полях, становится понятно:
пальцы работают быстрее, чем приложение успевает реагировать.
Пользователь печатает «a», тут же «an», следом «and» — а приложение в панике пытается перестроить результаты после каждого шага. Поток начинает «стрелять» событиями, система перегружается, а интерфейс выглядит так, будто его кто-то перематывает на ускоренной перемотке.
Главная проблема здесь не скорость человека — а то, что приложение воспринимает каждую мелочь как повод что-то пересчитать.
Чтобы интерфейс работал предсказуемо, нужно научить поток реагировать не на каждое изменение, а на осмысленное завершение ввода.
⏳ Зачем нужен debounce()
Оператор debounce() работает как фильтр слишком быстрых изменений:
- быстрые изменения подряд — игнорируются
- устойчивое значение после паузы — двигаются по потоку дальше
Поток перестаёт реагировать на каждую букву и начинает слушать устойчивые состояния строки.
val results = queryFlow
.debounce(300) // значение задержки можно менять
.distinctUntilChanged()
.map { term -> searchData(term) }
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
------------
Помимо полезных символов, пользователь может случайно добавить пробел в конце или другой невидный символ. Фактически это тот же запрос — но без обработки поиск запустится повторно.
В таких случаях можно определиться как оператор distinctUntilChanged() будет сранивать значения:
queryFlow
.debounce(300)
.distinctUntilChanged { old, new ->
old.trim() == new.trim()
}
Теперь оба состояния считаются одинаковыми, и поиск не перезапускается зря.
#kotlin #coroutines #flow #android
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤80👍54🤔3
Media is too big
VIEW IN TELEGRAM
Ключевые возможности:
🔹 Нативный Terminal UI - Современный, отзывчивый и кастомизируемый интерфейс прямо в терминале — выглядит как полноценный редактор.
🔹 Поддержка LSP - Автоматически поднимает нужные LSP для контекста модели — агент лучше понимает проект и пишет более точный код.
🔹 Параллельные сессии. Можно запустить несколько агентов на одном репозитории — например, один для рефакторинга, другой для тестов.
🔹 Шаринг ссылок. Любую сессию можно поделиться ссылкой — удобно для ревью и отладки с коллегами.
🔹 Поддержка Claude Pro / Max. Вход через Anthropic, если у вас есть подписка — OpenCode использует её напрямую.
🔹 Любые модели. 75+ провайдеров через Models.dev, включая локальные LLM — можно выбрать от недорогих до крупных оффлайновых моделей.
🔹 Любой редактор. OpenCode не привязан к IDE — работает в терминале и отлично дополняет Android Studio / IntelliJ / VS Code.
Это один из самых быстроразвивающихся инструментов для работы с агентами локально. Подходит тем, кто активно пишет код, хочет меньше переключаться между окнами и предпочитает прозрачную архитектуру без вендор лока.
#ии #ai #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5❤1
Скачать сборку можно тут
#android #opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤24👍14🔥9🤔3