Android разработка
4.88K subscribers
480 photos
27 videos
1 file
561 links
все о Android разработке

@itchannels_telegram - 🔥 лучшие it каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books
Download Telegram
🔥 JetBrains открыла исходники KotlinLLM - Kotlin-код, который дописывает себя во время выполнения

KotlinLLM - исследовательский плагин для IntelliJ IDEA, который позволяет делегировать часть логики приложения LLM прямо во время запуска.

Пример:


val apiUrl: String = asLlm(
"JetBrains/kotlin",
hint = "Верни URL для GitHub Issues API"
)

val service: GithubService = mockLlm()


Когда приложение сталкивается с новым сценарием, плагин:

1. получает runtime-значения и типы;
2. просит LLM сгенерировать обновление;
3. компилирует новый код;
4. горячо перезагружает класс;
5. повторно выполняет исходный вызов.

Главная идея - модель не вызывается постоянно. Успешное решение сохраняется как обычный Kotlin-файл, который можно проверить, изменить, закоммитить и запускать дальше уже без LLM.

Сейчас доступны два основных механизма:

- asLlm<F, T>() - преобразует значение одного типа в другой;
- mockLlm<T>() - генерирует реализацию интерфейса и развивает её по мере появления новых сценариев.

Пока это исследовательский прототип для Kotlin/JVM. Проект распространяется по лицензии Apache 2.0.

GitHub:
https://github.com/JetBrains-Research/kotlinllm-plugin
👍4❤3🔥2
💡 Android/Kotlin: не перезапускайте `Flow` после каждого поворота экрана

Частая ошибка в ViewModel:


val uiState = repository.observeData()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(),
initialValue = UiState.Loading
)


У WhileSubscribed() тайм-аут по умолчанию равен нулю. Когда Activity пересоздаётся при повороте экрана, подписчик исчезает, upstream-поток сразу останавливается, а затем запускается заново.

Это может повторно инициировать запросы, чтение базы или тяжёлые вычисления.

Добавьте небольшой период ожидания:


val uiState = repository.observeData()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
initialValue = UiState.Loading
)


Теперь поток продолжит работать ещё пять секунд после исчезновения последнего подписчика. Этого обычно достаточно, чтобы новая Activity успела подключиться после изменения конфигурации.

В Compose собирайте состояние с учётом жизненного цикла:


val uiState by viewModel.uiState.collectAsStateWithLifecycle()


Получается полезный баланс:

- поворот экрана не перезапускает весь pipeline;
- при реальном уходе со страницы поток остановится;
- ViewModel не тратит ресурсы без активного интерфейса.

5_000 - не магическое значение. Для дорогого подключения его можно увеличить, а для быстрого локального потока - уменьшить.

#Android #Kotlin #StateFlow #JetpackCompose
❤2👍2
Forwarded from Machinelearning
✔️ Апдейт ChatGPT: изолированный контекст в Projects, тесты для проверки знаний и правки для Android

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

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

Бесплатным и образовательным аккаунтам добавили генерацию тестов для самопроверки.

В приложении для Android починили сброс фокуса при подключении физической клавиатуры, а кнопка голосового ввода больше не пропадает после того, как прикрепишь файл.


@ai_machinelearning_big_data

#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку

Окружение решает больше, чем кажется.

Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.

AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: https://t.iss.one/+90Z5TAyfuNU5YmRi
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/javatg
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: t.iss.one/fizmat
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg

Собеседования и карьера:

DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview

Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy

Полезное сверху:

ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: https://t.iss.one/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy

Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg

Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
❤1👍1🔥1
✔️ Как работают SAM-conversions

Single Abstract Method (SAM) интерфейсы — это интерфейсы только с одним абстрактным методом (функциональные интерфейсы). Kotlin поддерживает соглашение SAM — автоматическую конвертацию функций и lambda между Kotlin и Java.

SAM-conversions позволяют использовать Java-интерфейсы с единственным абстрактным методом в Kotlin, как если бы это были функциональные типы. В Kotlin вы можете использовать такие интерфейсы для создания лямбда-выражений без явного определения функционального типа.

При использовании интерфейса с единственным абстрактным методом в качестве функционального интерфейса в Java, вы можете передавать его экземпляры вместо лямбда-выражений. Это тоже возможно в Kotlin, но на самом деле Kotlin предоставляет более простой синтаксис для этого.

Когда вам нужно использовать функциональный интерфейс в Kotlin, вы можете передать lambda-выражение, которое соответствует сигнатуре единственного метода интерфейса, вместо экземпляра интерфейса. Компилятор сам преобразует лямбда-выражение в экземпляр интерфейса, используя функцию-расширение метода invoke интерфейса.

Пример:


interface OnClickListener {
fun onClick(view: View)
}

class Button {
fun setOnClickListener(listener: OnClickListener) {
// ...
}
}

val button = Button()
button.setOnClickListener { view ->
// обработка нажатия кнопки
}


В этом примере мы определяем интерфейс OnClickListener с единственным абстрактным методом onClick. Затем мы создаем класс Button, который может иметь слушатель, реализующий данный интерфейс. После этого мы создаем экземпляр Button и передаем лямбда-выражение с соответствующей сигнатурой в качестве слушателя. Компилятор автоматически преобразует это лямбда-выражение в экземпляр интерфейса OnClickListener, используя функцию-расширение invoke интерфейса.

#буст #JuniorKit #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🎉2❤1
🚀 JetBrains обновила roadmap Kotlin: главный фокус - Multiplatform, Wasm и удобство разработки

Что сейчас в приоритете:

- довести Kotlin/Wasm до Stable
- ускорить KAPT до уровня Java APT
- улучшить incremental compilation в K2
- сделать новый JVM reflection
- перевести wasm-wasi на WASI Preview 2 и добавить Component Model
- продвинуть Swift Export из Alpha в Beta
- улучшить Xcode integration и Kotlin/Native debugger
- добавить импорт Swift Package Manager пакетов
- развивать Kotlin LSP и поддержку VS Code
- выпустить единый Kotlin Toolchain
- добавить first-class поддержку JPA/Hibernate для Kotlin stdlib types
- стабилизировать kotlinx.serialization, kotlinx.collections.immutable и kotlinx-io
- выпустить Kotlin DataFrame 1.0
- добавить HTTP/3 и gRPC в Ktor

Из уже завершённого: Swift 6.3 support, multi-module compilation для Kotlin/Wasm, Navigation3 для Compose Multiplatform и 18-месячное окно security fixes для stdlib.

Главное направление видно очень чётко: Kotlin всё сильнее двигается в сторону полноценной кроссплатформенной экосистемы — JVM, iOS, WebAssembly и web.

Следующее обновление roadmap запланировано на февраль 2027.

https://kotlinlang.org/docs/roadmap.html
👍3🔥1
Forwarded from Machinelearning
📱 Qwen представила Qwen Intelligence - набор ИИ-агентов для смартфонов.

В основе три агента:

* Mobile Planner Agent - разбивает сложные задачи на шаги и координирует выполнение.
* Mobile-Use Agent - выполняет действия в приложениях через API, а при необходимости переключается на GUI. На MobileWorld — 82.1%, на MobileWorld-Real — 92.2%.
* Mobile Creative Agent — превращает короткий запрос в готовый визуальный контент; заявленная генерация изображения - около 3 секунд.

Qwen также открывает набор мобильных бенчмарков: MobilePA-Bench, MobileWorld, MobileWorld-Real и MobileWorld-Safety — для проверки планирования, работы между приложениями, реальных устройств и безопасности.

Один агент планирует, второй действует, третий создаёт контент - прямо на смартфоне.

🔗 Learn more about the agents:
- Qwen Intelligence official website: https://qwenintelligence.com
- Mobile Planner Agent: https://github.com/Tongyi-MAI/Qwen-Planner-Agent
- Mobile-Use Agent: https://tongyi-mai.github.io/Qwen-UI-Agent/
- Mobile Creative Agent: https://arxiv.org/abs/2608.16887

🔗 Explore our open benchmark suite:
- MobilePA-Bench: https://tongyi-mai.github.io/MobilePA-Bench/
- MobileWorld (GitHub): https://github.com/Tongyi-MAI/MobileWorld
- Leaderboard: https://tongyi-mai.github.io/MobileWorld/#leaderboard

@ai_machinelearning_big_data

#qwen #mobile
❤2
Kotlin 2.5.0-Beta1 вышел

JetBrains выпустила первую бета-версию Kotlin 2.5.0.

Главное:

- Language: стабильная name-based destructuring в only-syntax режиме, плюс экспериментальные companion extensions и blocks.
- Standard Library: новые экспериментальные функции для упрощения типичных конструкций с if.
- Kotlin/JS: добавлена поддержка target ES2020.
- Compiler: более предсказуемое поведение inline-функций при компиляции .klib.

Пока это Beta, но релиз уже показывает, в какую сторону движется Kotlin 2.5: меньше синтаксического шума, современнее JS-таргеты и более стабильное поведение компилятора.

https://kotl.in/2-5-0-beta1
❤3
Доступна Android-прошивка CalyxOS 8.0, не привязанная к сервисам Google

Опубликован выпуск CalyxOS 8.0, прошивки на основе платформы Android, избавленной от привязок к сервисам Google и предоставляющей дополнительные средства для обеспечения конфиденциальности и безопасности. Новый выпуск переведён на кодовую базу Android 17 и доступен в сборках для устройств Pixel 5-10, Fairphone 4-6, Motorola Moto G32-G84 и SHIFTphone 8.

Подробнее:
https://opennet.ru/66382/
https://opennet.iss.one/66382/
❤1👍1🥴1
🧠 Spring AI показал, как сделать RAG заметно умнее обычного vector search.

Проблема классического RAG: похожий документ ещё не значит полезный.

Новый пайплайн делает так:

Question → Rewrite → MultiQuery → Vector Search → Jev Filter → Rerank → LLM

Jev проверяет каждый найденный chunk: есть ли там реальный ответ, противоречие или prompt injection.

В демо vector search нашёл 6 фрагментов, но до модели дошли только 2 действительно полезных.

Меньше мусора в контексте → точнее ответы и меньше шансов на prompt injection.

Код и разбор:
https://spring.io/blog/2026/10/02/spring-ai-modular-rag-typesafe-jev/
👍1
💥 `supervisorScope` не спасает Android-приложение от краша


supervisorScope {
launch { process1() }
launch { error("Boom!") }
}


Ошибка во второй корутине не отменит первую. Но исключение всё равно нужно обработать: без подходящего обработчика оно может завершить Android-приложение.

Для необработанных ошибок дочернего launch можно добавить:


val handler = CoroutineExceptionHandler { _, e ->
Log.e("Coroutine", "Task failed", e)
}

supervisorScope {
launch { process1() }
launch(handler) { process2() }
}


Ожидаемые ошибки обрабатывайте через `try/catch` внутри задачи. CoroutineExceptionHandler получает уже завершившуюся с ошибкой корутину и не может продолжить её выполнение.

Супервизия изолирует сбои задач. Обработка исключений определяет, что делать с самим сбоем.
❤3👍1🔥1
Опубликована мобильная платформа LineageOS 24, основанная на Android 17

Представлен выпуск мобильной платформы LineageOS 24, основанный на кодовой базе Android 17 и выпущенный в канун десятилетия проекта, которое состоится 24 декабря 2026 года. Ветка LineageOS 24 достигла паритета по функциональности и стабильности c веткой 23.2, и признана готовой для формирования первого релиза. Сборки подготовлены для 175 устройств, 24 из которых ранее не были в списке поддерживаемых.

Полный текст:
https://opennet.ru/66445/
https://opennet.iss.one/66445/
❤2
📞 Входящий звонок: VK JT Mobile Meetup

31 октября в Москве и 14 ноября в Санкт-Петербурге VK собирает опытных iOS- и Android-разработчиков.

В Москве пройдут два параллельных трека — по iOS и Android. В Петербурге — общий трек для обеих платформ.

Спикеры из ВКонтакте, Дзена, MAX, VK Tech и других команд VK разберут инженерные кейсы: расскажут о производительности, тестировании, архитектуре, импакт-анализе, ИИ и других задачах мобильной разработки.

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

Только офлайн. Количество мест ограничено.

👉 Регистрация
🍃 Не раскладывайте весь Spring-проект по папкам controller, service и repository.

В новом This Week in Spring Джош Лонг советует группировать код по функциональности, используя подход Spring Modulith. Например, orders, payments, users, внутри которых находятся относящиеся к ним слои.

Ещё в подборке:

• JobRunr 9: поиск упавшего шага и задач, вызывающих замедление, остановка выполнения без потери работы.
• Spring AI: разбор агентных паттернов и вызова инструментов от руководителя проекта Кристиана Цолова.
• Progen CLI: видео о генерации каркаса приложения.
• IntelliJ IDEA: обзор новых возможностей.
• A Bootiful Podcast: разговор с создателем Jenkins Косуке Кавагути.

https://spring.io/blog/2026/10/13/this-week-in-spring-october-13th-2026

#Java #SpringBoot
👍2❤1😁1
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку

Окружение решает больше, чем кажется.

Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.

AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: https://t.iss.one/+90Z5TAyfuNU5YmRi
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_ci
Java: t.iss.one/javatg
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: t.iss.one/fizmat
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg

Собеседования и карьера:

DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview

Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy

Полезное сверху:

ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: https://t.iss.one/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy

Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg

Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
❤1👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Sonner

Это компонент toast-уведомлений для Compose Multiplatform, основанный на Sonner! Он поддерживает различные типы уведомлений, анимации, кастомизацию и не зависит от Material Design.


Особенности:
Практически такое же, как реализация emilkowalski на React: интерфейс, анимации и даже API. К ним относятся:

* Сложенные тосты и расширяемые тосты
* Различные типы и насыщенные цвета
* Переходы (анимации)
* Позиции (выравнивание)
* Смахивание вниз для закрытия
* Кнопка закрытия и кнопка действия
* Пользовательские иконки
* Длительность отображения
* Ленивая загрузка и высокая производительность: вы можете отображать множество тостов одновременно
* Полная настраиваемость: вы можете отображать собственный Composable
* Поддержка как Material 2, так и Material 3 за счет отсутствия зависимости от них

https://github.com/dokar3/compose-sonner

#Android
🔥1