База знаний android
1 subscriber
2.48K photos
284 videos
2 files
3.77K links
Download Telegram
Forwarded from Android Broadcast
😁 Android CLI получил stable 1.0, и его главная команда тянется обратно в Android Studio.

Android CLI это тонкая прослойка между ИИ-агентом и Android-тулчейном. Работает с любым агентом: Claude Code, Codex, Gemini, Antigravity. Обновляется командой android update.

Стоит понять, что CLI делает сам, а что нет. Сам он умеет то, чему не нужно понимание кода: создать проект, поставить зависимости, собрать, поднять эмулятор, задеплоить. Это обёртка над gradle, adb и SDK-тулзами, работает откуда угодно.

«Умные» операции CLI проксирует в запущенную Android Studio через новую команду android studio. Студия тут работает как бэкенд: analyze-file гоняет инспекции IDE, find-declaration и find-usages ищут символы через семантический индекс проекта, render-compose-preview отдаёт картинку Compose-превью из рендер-движка студии, version-lookup подтягивает актуальные версии зависимостей. Команда android studio check показывает pid живого процесса студии и статус проекта READY: CLI разговаривает с уже открытым инстансом по локальному каналу. Студия не запущена, у агента остаются только сборка и деплой, всё умное отваливается.

Ещё в релизе появились Journeys, сценарии на естественном языке для прогона по приложению, а библиотеку скиллов пополнили миграцией на CameraX, Perfetto SQL и Compose Style API.

Также появилась интеграция с Android разработкой в Antigravity на основе Android CLI

🤔 Меня в таких мостах к IDE смущает привязка к одной открытой папке проекта. MCP-сервер для Android Studio я по этой причине так и не стал использовать: работаю через git worktree, держу несколько папок-проектов одновременно, а мост видит только главную.

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

#Android #AndroidDev #AI #ИИ #AndroidStudio
Forwarded from Android Broadcast
🤖 ADB Wi-Fi 2.0

Беспроводной ADB наконец перестанет быть лотереей. С Platform Tools v37 и Android 17 устройство остаётся подключённым даже если сменить сеть или перезагрузить Mac. Просто продолжаешь работать.

Раньше при закрытии крышки ноутбука в устройство теряло соединение и подключайся снова. Теперь этот ритуал уходит. Устройства с включённым Wireless Debugging автоматически появляются в Device Manager Android Studio без каких-либо дополнительных действий.

Работает не только с телефонами, но и с часами, что актуально при разработке для Wear OS, где физическое подключение всегда было отдельной болью.

⚠️ Требования жёсткие: нужен Android 17 на устройстве и Android Platform Tools v37 или новее. Для большинства девайсов на руках это пока недоступно. Фича - задел на будущее.

#Android #AndroidDev #AndroidStudio
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Flutter 3.44

Команда Flutter представила версию 3.44, которая включает ряд значительных обновлений. Среди ключевых изменений — Hybrid Composition++ для Android, переход на Swift Package Manager в качестве стандартного менеджера пакетов для iOS/macOS и улучшенная поддержка Vulkan для Impeller.

Также представлена предварительная версия поддержки многооконного режима для настольных платформ. Canonical становится ведущим разработчиком проекта.

В рамках масштабной архитектурной эволюции Material и Cupertino отделяются от основного фреймворка. Внедряются новые подходы к UX для агентного взаимодействия с пользователями (GenUI) и инструменты для разработчиков: Agentic Hot Reload, Dart & Flutter Agent Skills.

Flutter 3.44 уже используется в мультимедийной системе Toyota RAV4 2026, а также готовится SDK для webOS от LG.

👉 Читать статью

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#свежак #Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Compose Multiplatform 1.11: iOS становится ближе к нативному ощущению

Кроссплатформенный UI часто ломается на мелочах: курсор в text field, selection handles, жесты, системное меню. В Compose Multiplatform 1.11 JetBrains как раз двигает эти детали на iOS, а не только добавляет ещё один общий API.

В релизе есть experimental native text input поверх UIView, concurrent rendering по умолчанию, обновлённые Compose UI test APIs v2 и переработанная обработка touch для web targets. Для мобильных команд это хороший набор сигналов: где shared UI уже зрелый, а где нужна проверка на устройстве.

Можно изучить релиз и выбрать, что тестировать в своём KMP-приложении. В деталях особенно полезны ограничения новых text input API и изменения в тестах.

@mobi_dev (теперь и в Max)
🤖 Google анонсировала ADK for Android 0.1.0 вместе с ADK for Kotlin

ADK (Agent Development Kit) - это open-source фреймворк для AI-агентов, и теперь у него есть Android-артефакт с поддержкой on-device моделей.

Ключевая архитектурная идея: облачный оркестратор ведёт диалог с пользователем и координирует работу. Когда нужно обработать приватные данные - документы, брони, личные файлы - он делегирует subagent'у, который работает на устройстве через ML Kit GenAI и AICore. Данные за пределы устройства не уходят.

В стек входят LLM-агенты, sequential agents, MCP tools, session state и long-term memory через Memory service, OpenTelemetry для наблюдаемости.

Можно использовать три варианта моделей:
👉 ML Kit GenAI для on-device Gemini Nano
👉 Firebase AI Logic для облачного Gemini
👉 Google GenAI для быстрого прототипирования.

‼️ ВАЖНО: версия 0.1.0, статус "В активной разработке". Это очень ранний экспериментальный релиз, не для продакшна.

Архитектурный паттерн с разделением на облачный оркестратор и on-device агент выглядит разумно - именно так я бы и хотел видеть подобный инструмент. Но внедрять в прод рано.

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

#Android #AI #Gemini
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from StartAndroid
What's new in Android development tools, Google I/O 2026

#googleio #android

https://www.youtube.com/watch?v=N4GgGBKnHe4
Forwarded from Android Broadcast
🤖 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
🏝 Вышел Kotlin 2.4.0 Stable

👉 Язык: стабильные контекстные параметры, явные backing-поля и несколько нововведений для use-site таргетов аннотаций.
👉 Стандартная библиотека: стабилизация UUID API
👉 Kotlin/JVM: поддержка Java 26 и аннотации в метаданных включены по умолчанию.
👉 Kotlin/Native: поддержка SPM как зависимостей, обновления Swift export и CMS GC включён по умолчанию.
👉 Kotlin/Wasm: инкрементальная компиляция включена по умолчанию и поддержка WebAssembly Component Model.
👉 Совместимость с Gradle 9.5.0.
👉 Компилятор Kotlin: более согласованное поведение inline-функций при компиляции в .klib.

🔗 Полный список изменений

#Kotlin #Kotlin240
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Вышла Gemma 4 12B и она запускается локально на 16GB RAM. Понимает текст, картинки и аудио в одной модели

До этого мультимодальные модели работали так: картинку сначала обрабатывает отдельный блок, аудио тоже через свой. Каждый такой блок ест память и добавляет задержку. Gemma 4 12B делает это без посредников. Картинка и звук идут прямо в модель. Один пайплайн для всего.

На практике это значит меньше памяти под инфраструктуру и выше скорость отклика. Модель запускается на железе с 16GB VRAM (не потребляет, а столько оперативки в компе надо) или unified memory, то есть MacBook Pro с M3 тянет без проблем. Apache 2.0, весы на Hugging Face и Kaggle, запуск через Ollama или LM Studio.

Задачи, которые это открывает:
👉 локальный агент с пониманием скриншотов и голоса
👉 анализ изображений без отправки данных в облако
👉 голосовой ввод прямо в агентный пайплайн.

Для тех, кто строит агентов с приватными данными или просто не хочет зависеть от API-ключей и облачных лимитов — это рабочий вариант.

Мне интересно попробовать именно в связке с локальным агентом: один инстанс, текст плюс скриншот плюс аудио, без облака. Посмотрим, насколько это работает на практике, а не только на бенчмарках.

🔗 Оф анонс

#AI #Gemma
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from StartAndroid
Автор предлагает разрабатывать ViewModel не для всего экрана, а по жизненному циклу и области ответственности. ViewModel может жить столько, сколько нужен конкретный UI-компонент.

#android #compose #viewmodel

https://proandroiddev.com/stop-building-god-viewmodels-with-one-screen-one-viewmodel-569fe4cb3784
Forwarded from Android Broadcast
🤯 Android 17 умеет убивать ваше приложение молча. Без стектрейса. Разбираемся. И ЭТО БЕЗ КЛИКБЕЙТА

Начиная с Android 17, появился системный MemoryLimiter — лимит памяти на процесс, привязанный к общему объёму RAM устройства. Превысил лимит — процесс убит. Без эксепшена, без стектрейса.

Как это выглядит:
👉 причина завершения в ApplicationExitInfo = REASON_OTHER
👉 в описании строка "MemoryLimiter:AnonSwap"
👉 в Crashlytics этого НЕ будет: это не краш, а системное убийство процесса

И сразу разрушим главное заблуждение: это НЕ про heap size.

getMemoryClass() и largeHeap ограничивают только Java-кучу — объекты под управлением ART. Превысил — получишь OutOfMemoryError со стектрейсом, который ловится. А новый MemoryLimiter считает другое — анонимную память ВСЕГО процесса:
👉 битмапы (с Android 8 их пиксели в нативной памяти, в Java-куче их нет)
👉 нативные библиотеки, медиакодеки, Skia
👉 веса on-device ML/LLM моделей (mmap/нативка)

Всё это в getMemoryClass() не видно. Можно сидеть втрое ниже heap-лимита, никогда не словить OOM — и всё равно быть убитым, потому что суммарная нативная память процесса вылезла за порог. getMemoryClass и OOM — про Java-кучу. MemoryLimiter — про весь процесс. Это два разных предохранителя, и старый про новый вам ничего не скажет.

Важные оговорки, чтобы не было паники на пустом месте:
👉 в Android 17 лимиты заданы консервативно: цель — экстремальные утечки и выбросы, а не нормальные приложения
👉 включены только на части устройств
👉 конкретных чисел Google не публиковал. Реальный лимит своего девайса можно снять командой: adb shell am memory-limiter status

В зоне риска тяжёлые сценарии на устройствах среднего и бюджетного сегмента.
Уже есть задокументированный случай на бете — крупная on-device модель Gemma падала на Pixel 6a с 6 ГБ RAM именно из-за MemoryLimiter. 6 ГБ — это уже не бюджетник. Java-куча там небольшая, а нативка с весами модели — гигабайты в RAM.

Два мифа, которые гуляют по сети и которые повторять не надо:
👉 НЕТ подтверждения, что система шлёт «вежливое предупреждение» перед убийством
👉 НЕТ официального «дедлайна для разработчиков 30 июня». Google его не объявлял

Это первый раз, когда дисциплина по памяти не совет, а правило от ОС. Сейчас лимиты мягкие, но направление одностороннее — закручивать будут, а не отпускать. И самое неприятное тут не сам лимит, а его невидимость: пользователи будут терять сессии, а вы не узнаете, пока специально не начнёте смотреть.

💬 Как вы думаете, связаны ли меры с тем, что оперативка стала дорожать и вставить по 12–16 ГБ стало дорого?

#Android #Android17 #Производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Compose Broadcast
⚙️ JetBrains выкатили статью в документации как использовать Liquid Glass эффект из iOS 26 и Compose на iOS.

Всё сводится к более точечному встраиванию Compose экранов в iOS Controller и перекладывание навигации на нативные элементы.

#Compose #iOS #iOS26 #LiquidGlass
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Android Broadcast
🤖 Google как раз выкатила напоминание как оптимизировать расход памяти в Android приложениях. По сути ничего нового для тех кто уже занимался подобным, а остальным на заметку

#Android #AndroidDev #Производительность #Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
AdaEngine – новый игровой движок на Swift

AdaEngine – 2D игровой движок, построенный вокруг паттерна Entity Component System. Есть поддержка физики, кастомных шейдеров и описания интерфейса на SwiftUI.

Только-только вышел первый публичный релиз, если есть вопросы, пишите автору – @SpectralDragon.
Forwarded from Mobile Developer
🔧 Краши SavedStateHandle в Navigation 3 и как их лечит Hilt Assisted Injection
https://proandroiddev.com/resolving-savedstatehandle-crashes-with-hilt-assisted-injection-in-jetpack-navigation-3-63ebd50b88af

Боль при миграции на Nav3: код из Nav2, где ViewModel читал аргументы маршрута из SavedStateHandle через toRoute(), внезапно крашится. Причина - Nav3 больше не пропихивает Route в SavedStateHandle автоматически.

Решение в статье - Hilt Assisted Injection: аргументы получает не SavedStateHandle, а сам конструктор ViewModel через Assisted. ViewModel становится независимым от навигации, его можно конструировать прямо в тестах с конкретными значениями.

Внутри - полный пример с Serializable Route'ами, фабрикой, регистрацией в entryProvider DSL и тестовым кейсом.

——————
💭 Переезжаешь на Nav3 и ловишь null в SavedStateHandle - как вариант к решению.

Telegram | Селеба | Max | YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from StartAndroid
Вышел Kotlin 2.4.0 

Что нового:
- Language: Stable context parameters, explicit backing fields, and multiple features for annotation use-site targets.
- Standard library: Stabilized support for the UUID API and support for checking sorted order.
- Kotlin/JVM: Support for Java 26 and annotations in metadata enabled by default.
- Kotlin/Native: Support for Swift packages as dependencies, updates on Swift export, and the CMS GC enabled by default.
- Kotlin/Wasm: Incremental compilation enabled by default and support for WebAssembly Component Model.
- Kotlin/JS: Support for value class export and ES2015 features in JS code inlining.
- Gradle: Compatibility with Gradle 9.5.0.
- Maven: Automatic alignment between Java and JVM target versions.
- Kotlin compiler: More consistent inline function behavior during .klib compilation.

#kotlin

https://blog.jetbrains.com/kotlin/2026/06/kotlin-2-4-0-released/
Уже попробовали новый синтаксис создания коллекций?
Final Results
4%
Да
52%
Нет
34%
Нафиг нужно
10%
Не участвую