Автозаполнение в Compose 1.8.0
Новые API автозаполнения Compose 1.8.0 — это большое улучшение для разработчиков. Теперь для автозаполнения полей требуется значительно меньше кода и предлагается больше функций. Compose близок к тому, чтобы иметь паритет функций с View-фреймворком!
Статья: https://apptractor.ru/info/articles/avtozapolnenie-v-compose.html
Платформа: Android
Новые API автозаполнения Compose 1.8.0 — это большое улучшение для разработчиков. Теперь для автозаполнения полей требуется значительно меньше кода и предлагается больше функций. Compose близок к тому, чтобы иметь паритет функций с View-фреймворком!
Статья: https://apptractor.ru/info/articles/avtozapolnenie-v-compose.html
Платформа: Android
Клон Uber на React Native
Это полнофункциональный клон Uber, созданный с помощью React Native. Он включает в себя такие важные функции, как интеграция с live картой, маршрутизация в реальном времени, поиск местоположения и близлежащих мест с использованием реальных данных через REST API. Он также поддерживает темный режим, макеты RTL и несколько языков.
Проект поставляется с бэкендом и документацией Swagger API для простого тестирования.
Сейчас проект можно скачать бесплатно.
Uber Clone with React Native: https://www.devsolve.club/toolbox/uber-clone-app-react-native-with-dark-mode-rtl-and-localization/
Платформа: кроссплатформа
Это полнофункциональный клон Uber, созданный с помощью React Native. Он включает в себя такие важные функции, как интеграция с live картой, маршрутизация в реальном времени, поиск местоположения и близлежащих мест с использованием реальных данных через REST API. Он также поддерживает темный режим, макеты RTL и несколько языков.
Проект поставляется с бэкендом и документацией Swagger API для простого тестирования.
Сейчас проект можно скачать бесплатно.
Uber Clone with React Native: https://www.devsolve.club/toolbox/uber-clone-app-react-native-with-dark-mode-rtl-and-localization/
Платформа: кроссплатформа
🤣3
Изучаем панели вкладок в iOS 26 с Liquid Glass
Если у вашего приложения есть панель вкладок (Tab Bar), и вы перекомпилируете его с помощью Xcode 26, вы автоматически увидите, что ваша панель вкладок имеет новый вид и ощущение на основе Liquid Glass. В этой статье мы рассмотрим новую панель вкладок и какие новые возможности мы получили с редизайном Liquid Glass. Я также потрачу немного времени на предоставление некоторых советов о том, как вы можете применить модификаторы iOS 26 к вашей панели вкладок, используя «Backport» подход Дэйва ДеЛонга.
К концу этой статьи вы будете гораздо лучше понимать, как Liquid Glass изменяет панель вкладок вашего приложения и как можно настроить ее, чтобы она действительно соответствовала философии дизайна Liquid Glass в iOS 26.
Статья: https://apptractor.ru/info/articles/izuchaem-paneli-vkladok-v-ios-26-s-liquid-glass.html
Платформа: iOS
Если у вашего приложения есть панель вкладок (Tab Bar), и вы перекомпилируете его с помощью Xcode 26, вы автоматически увидите, что ваша панель вкладок имеет новый вид и ощущение на основе Liquid Glass. В этой статье мы рассмотрим новую панель вкладок и какие новые возможности мы получили с редизайном Liquid Glass. Я также потрачу немного времени на предоставление некоторых советов о том, как вы можете применить модификаторы iOS 26 к вашей панели вкладок, используя «Backport» подход Дэйва ДеЛонга.
К концу этой статьи вы будете гораздо лучше понимать, как Liquid Glass изменяет панель вкладок вашего приложения и как можно настроить ее, чтобы она действительно соответствовала философии дизайна Liquid Glass в iOS 26.
Статья: https://apptractor.ru/info/articles/izuchaem-paneli-vkladok-v-ios-26-s-liquid-glass.html
Платформа: iOS
👍3
Что такое @concurrent в Swift 6.2
В Swift 6.2 введено два связанных нововведения:
Контекст: nonisolated(nonsending)
• Раньше
• Это приводило к путанице и необходимости маркировать типы как
• В Swift 6.2 теперь есть
• Это снижает уровень конкуренции и делает код проще в понимании
Можно активировать поведение по умолчанию через feature‑флаг
@concurrent: явная распаковка
• Чтобы всё же запустить функцию вне актора (то есть на глобальном пуле), используется аннотация
Пример:
•
• Можно использовать на методах внутри
Важно: нельзя сочетать
Когда применять @concurrent
• Оператор служит явным индикатором: этот фрагмент должен работать параллельно, независимо от контекста вызывающего.
• Но это добавляет сложности — требуется
• Не стоит использовать
Пример из статьи
Был такой код:
Декодирование могло тормозить интерфейс. Решением стало:
Итого
•
•
Используйте
Яркий пример того, как Swift 6.2 делает управление конкуренцией более понятным и предсказуемым. Думаю, такие улучшения пойдут на пользу разработчикам.
Статья: https://www.donnywals.com/what-is-concurrent-in-swift-6-2/
Платформа: iOS
В Swift 6.2 введено два связанных нововведения:
nonisolated(nonsending) и @concurrent.Контекст: nonisolated(nonsending)
• Раньше
nonisolated async функции запускались в глобальном исполнителе (обычно в фоне), а nonisolated синхронные — на вызвавшем акторе • Это приводило к путанице и необходимости маркировать типы как
Sendable• В Swift 6.2 теперь есть
nonisolated(nonsending) и async, и синхронные функции запускаются на акторе вызывающего, если он есть, без автоматической распаковки в глобальный пул • Это снижает уровень конкуренции и делает код проще в понимании
Можно активировать поведение по умолчанию через feature‑флаг
NonIsolatedNonSendingByDefault.@concurrent: явная распаковка
• Чтобы всё же запустить функцию вне актора (то есть на глобальном пуле), используется аннотация
@concurrent Пример:
@concurrent
func decode<T: Decodable>(_ data: Data) async throws -> T {
// код выполняется в глобальном исполнителе
}
•
@concurrent автоматически делает функцию nonisolated, чтобы не нужно было писать это вручную • Можно использовать на методах внутри
@MainActor классов или акторов, при условии что функция не имеет явной изоляцииВажно: нельзя сочетать
@concurrent с явной изоляцией (@MainActor, nonisolated(nonsending)).Когда применять @concurrent
• Оператор служит явным индикатором: этот фрагмент должен работать параллельно, независимо от контекста вызывающего.
• Но это добавляет сложности — требуется
Sendable для передаваемых данных • Не стоит использовать
@concurrent без причины: например, для сетевых запросов с await — там и так работает асинхронность в фоне. Лучше применять @concurrent только для CPU‑интенсивных задач, например, тяжёлой декодировки.Пример из статьи
Был такой код:
func decode<T: Decodable>(_ data: Data) async throws -> T {
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: data)
}Декодирование могло тормозить интерфейс. Решением стало:
@concurrent
func decode<T: Decodable>(_ data: Data) async throws -> T { ... }
Итого
•
nonisolated(nonsending) — по умолчанию в Swift 6.2: выполняет код на акторе вызывающего•
@concurrent — позволяет явно выполнить функцию вне актора, в global executorИспользуйте
@concurrent осознанно, когда необходимо распараллеливание тяжёлых операций.Яркий пример того, как Swift 6.2 делает управление конкуренцией более понятным и предсказуемым. Думаю, такие улучшения пойдут на пользу разработчикам.
Статья: https://www.donnywals.com/what-is-concurrent-in-swift-6-2/
Платформа: iOS
Donny Wals
What is @concurrent in Swift 6.2? – Donny Wals
Swift 6.2 makes significant changes to concurrency, and because of that we have to understand a brand new mechanism to offload work to a background thread in Swift 6.2. Learn everything you need to…
👍4
Тестирование LottieAnimation в Compose
Команда Just Eat рассказала, как они подошли к тестированию Lottie-анимаций в приложении на Jetpack Compose. Проблема в том, что
Цель — убедиться, что нужная Lottie-анимация действительно отображается на экране в нужный момент (например, при загрузке контента).
Решение — создание обёртки над
• принимает
• предоставляет
• отделяет визуальную часть от состояния анимации
Вот как это выглядит в коде:
Важно проектировать UI-компоненты так, чтобы их было удобно тестировать. Даже если сам компонент “неподконтрольный” (как
Статья: https://medium.com/justeattakeaway-tech/testing-a-lottieanimation-in-compose-2f94329a3079
Платформа: Android
Команда Just Eat рассказала, как они подошли к тестированию Lottie-анимаций в приложении на Jetpack Compose. Проблема в том, что
LottieAnimation не предоставляет ID элемента или простой способ проверить текущий статус анимации через тесты. А значит — привычные подходы UI-тестирования здесь не работают.Цель — убедиться, что нужная Lottie-анимация действительно отображается на экране в нужный момент (например, при загрузке контента).
Решение — создание обёртки над
LottieAnimation, которая:• принимает
modifier.testTag(...) для тестирования• предоставляет
composition и progress как параметры• отделяет визуальную часть от состояния анимации
Вот как это выглядит в коде:
@Composable
fun TestableLottieAnimation(
@RawRes animationRes: Int,
progress: LottieProgress = { it },
modifier: Modifier = Modifier,
) {
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(animationRes))
LottieAnimation(
composition = composition,
progress = progress,
modifier = modifier.testTag("lottie_animation")
)
}
Важно проектировать UI-компоненты так, чтобы их было удобно тестировать. Даже если сам компонент “неподконтрольный” (как
LottieAnimation), вы всегда можете обернуть его в свой Composable и получить точку доступа для тестов.Статья: https://medium.com/justeattakeaway-tech/testing-a-lottieanimation-in-compose-2f94329a3079
Платформа: Android
👍1🤯1🤡1
AvatarAiPayWall - это пейвол на основе SwiftUI, разработанный для улучшения пользовательского опыта с помощью визуально привлекательных элементов. Этот проект служит практическим упражнением по разработке пейволов в iOS-приложениях с использованием SwiftUI. Пейвол включает анимированные компоненты, градиентные фоны и карусель изображений для привлечения пользователей и поощрения подписок.
AvatarAiPayWall на GitHub: https://github.com/ayush1714/AvatarAiPayWall
Платформа: iOS
⭐️: 5
AvatarAiPayWall на GitHub: https://github.com/ayush1714/AvatarAiPayWall
Платформа: iOS
⭐️: 5
👍2🤮1
Пошаговое руководство по написанию эксплойта ядра iOS
Эксплойты ядра iOS всегда вызывали у меня огромный интерес. За последние годы эксплуатация ядра стала значительно сложнее, и традиционные уязвимости (например, связанные с повреждением виртуальной памяти) стали встречаться реже.
Тем не менее, летом 2023 года felix-pb выпустил три эксплойта под названием kfd. Это были первые опубликованные эксплойты ядра, работавшие на iOS 15.6 и выше.
Разрабатывая джейлбрейк для iOS 14 (Apex), я реализовал собственный эксплойт для уязвимости Physpuppet. В этой статье объясню, как эксплуатировать уязвимость типа physical use-after-free на современных версиях iOS.
Статья: https://habr.com/ru/companies/bastion/articles/920922/
Платформа: iOS
Эксплойты ядра iOS всегда вызывали у меня огромный интерес. За последние годы эксплуатация ядра стала значительно сложнее, и традиционные уязвимости (например, связанные с повреждением виртуальной памяти) стали встречаться реже.
Тем не менее, летом 2023 года felix-pb выпустил три эксплойта под названием kfd. Это были первые опубликованные эксплойты ядра, работавшие на iOS 15.6 и выше.
Разрабатывая джейлбрейк для iOS 14 (Apex), я реализовал собственный эксплойт для уязвимости Physpuppet. В этой статье объясню, как эксплуатировать уязвимость типа physical use-after-free на современных версиях iOS.
Статья: https://habr.com/ru/companies/bastion/articles/920922/
Платформа: iOS
👍3
ИИ против реверс-инжиниринга: сделает ли ИИ обфускацию Android R8 устаревшей?
Эксперимент показывает: обфускация с помощью R8 уже не препятствие для GPT‑4o + JADX. ИИ распознаёт Compose‑UI, ViewModel и бизнес‑логику — достаточно правильно подготовленного запроса.
🚨 Итог – разработчиков ждёт новая реальность:
• R8 по‑прежнему нужен для оптимизации, но его недостаточно для защиты;
• Требуется усиление: многослойная защита, CI/CD‑настройка, ограничение доступа AI к артефактам;
• Безопасность теперь включает не только код, но и управление ИИ и контекстом.
Мы вступаем в эру, где ИИ и безопасность становятся двумя сторонами одной медали. Необходимо реагировать уже сейчас.
Статья: https://proandroiddev.com/ai-vs-reverse-engineering-will-ai-make-android-r8-obfuscation-obsolete-f0ba7cd39ef7
Платформа: Android
Эксперимент показывает: обфускация с помощью R8 уже не препятствие для GPT‑4o + JADX. ИИ распознаёт Compose‑UI, ViewModel и бизнес‑логику — достаточно правильно подготовленного запроса.
🚨 Итог – разработчиков ждёт новая реальность:
• R8 по‑прежнему нужен для оптимизации, но его недостаточно для защиты;
• Требуется усиление: многослойная защита, CI/CD‑настройка, ограничение доступа AI к артефактам;
• Безопасность теперь включает не только код, но и управление ИИ и контекстом.
Мы вступаем в эру, где ИИ и безопасность становятся двумя сторонами одной медали. Необходимо реагировать уже сейчас.
Статья: https://proandroiddev.com/ai-vs-reverse-engineering-will-ai-make-android-r8-obfuscation-obsolete-f0ba7cd39ef7
Платформа: Android
👍3🔥1
Klyx - это легкий, высокопроизводительный редактор кода, созданный для Android. Фичи: быстрое и отзывчивое редактирование кода, оптимизирован для Android-устройств, чистый и интуитивно понятный пользовательский интерфейс, локальное управление файлами, поддержка темных/светлых тем, подсветка синтаксиса для нескольких языков, расширяемая система тем с поддержкой пользовательских настроек, система плагинов для расширения функциональности.
Klyx на GitHub: https://github.com/klyx-dev/klyx
Платформа: Android
⭐️: 7
Klyx на GitHub: https://github.com/klyx-dev/klyx
Платформа: Android
⭐️: 7
Функциональное программирование в Android. Cтруктуры данных и State Machine
В первой части статьи я рассказал о своём знакомстве с функциональным программированием и о сути этой парадигмы. Сегодня вы узнаете о функциональных типах данных и их структурах. Мы:
• узнаем подробнее о принципе неизменности данных;
• исследуем понятие State Machine и способы его применения в программировании;
• покопаемся в функциональной библиотеке Kotlin Arrow;
• обсудим поддержку Null, поток данных и функциональную обработку ошибок;
• проектировать Data и Domain слои демонстрационного приложения.
Статья: https://habr.com/ru/companies/dododev/articles/917960/
Платформа: Android
В первой части статьи я рассказал о своём знакомстве с функциональным программированием и о сути этой парадигмы. Сегодня вы узнаете о функциональных типах данных и их структурах. Мы:
• узнаем подробнее о принципе неизменности данных;
• исследуем понятие State Machine и способы его применения в программировании;
• покопаемся в функциональной библиотеке Kotlin Arrow;
• обсудим поддержку Null, поток данных и функциональную обработку ошибок;
• проектировать Data и Domain слои демонстрационного приложения.
Статья: https://habr.com/ru/companies/dododev/articles/917960/
Платформа: Android
Команда Swift объявила о создании рабочей группы Android
Основная цель рабочей группы — сделать Android официально поддерживаемой платформой для Swift и поддерживать разработку для нее.
Группа будет:
• Улучшать и поддерживать работу с Android для официального дистрибутива Swift
• Рекомендовать улучшения для основных пакетов Swift, таких как Foundation и Dispatch, для лучшей работы с идиомами Android
• Работать с группой управления платформой для официального определения уровней поддержки платформы в целом, а затем работать над достижением официальной поддержки определенного уровня для Android
• Определять диапазон поддерживаемых уровней API Android и архитектур для интеграции Swift
• Разрабатывать непрерывную интеграцию для проекта Swift, которая включает тестирование Android в проверках pull request
• Определять и рекомендовать лучшие практики для бриджа между Swift и Android Java SDK и упаковки библиотек Swift с приложениями Android
• Разрабатывать отладку приложений Swift на Android
• Консультировать и помогать с добавлением поддержки Android в различные пакеты Swift сообщества
Новость: https://apptractor.ru/info/news/komanda-swift-obyavila-o-sozdanii-rabochey-gruppy-android.html
Платформа: iOS/кроссплатформа
Основная цель рабочей группы — сделать Android официально поддерживаемой платформой для Swift и поддерживать разработку для нее.
Группа будет:
• Улучшать и поддерживать работу с Android для официального дистрибутива Swift
• Рекомендовать улучшения для основных пакетов Swift, таких как Foundation и Dispatch, для лучшей работы с идиомами Android
• Работать с группой управления платформой для официального определения уровней поддержки платформы в целом, а затем работать над достижением официальной поддержки определенного уровня для Android
• Определять диапазон поддерживаемых уровней API Android и архитектур для интеграции Swift
• Разрабатывать непрерывную интеграцию для проекта Swift, которая включает тестирование Android в проверках pull request
• Определять и рекомендовать лучшие практики для бриджа между Swift и Android Java SDK и упаковки библиотек Swift с приложениями Android
• Разрабатывать отладку приложений Swift на Android
• Консультировать и помогать с добавлением поддержки Android в различные пакеты Swift сообщества
Новость: https://apptractor.ru/info/news/komanda-swift-obyavila-o-sozdanii-rabochey-gruppy-android.html
Платформа: iOS/кроссплатформа
Руководство по миграции на Swift 6
Swift 6 появился на WWDC 2024, и все мы, конечно, поспешили перенести на него все наши приложения. Ну, не совсем все и не поспешили… На WWDC 2021 мы уже получили блестящий новый структурированный фреймворк параллелизма Swift 5.5, который помог нам писать безопасный код быстрее с async/await и акторами. Swift 6, казалось, сломал все, и было бы неплохо немного подождать. Год спустя путь миграции выглядит намного более гладким, с большим количеством ориентиров. В этом руководстве от Kodeco разбираются все аспекты скорого переезда на шестую версию.
Туториал: https://www.kodeco.com/48297451-migrating-to-swift-6-tutorial
Платформа: iOS
Swift 6 появился на WWDC 2024, и все мы, конечно, поспешили перенести на него все наши приложения. Ну, не совсем все и не поспешили… На WWDC 2021 мы уже получили блестящий новый структурированный фреймворк параллелизма Swift 5.5, который помог нам писать безопасный код быстрее с async/await и акторами. Swift 6, казалось, сломал все, и было бы неплохо немного подождать. Год спустя путь миграции выглядит намного более гладким, с большим количеством ориентиров. В этом руководстве от Kodeco разбираются все аспекты скорого переезда на шестую версию.
Туториал: https://www.kodeco.com/48297451-migrating-to-swift-6-tutorial
Платформа: iOS
👍2
FoundationChat: создание ИИ-чата с использованием Foundation Models в iOS 26
Продолжаем исследовать Foundation Models. Разработчик демонстрирует, как с помощью нового фреймворка можно создать полноценный чат‑бот, работающий полностью на устройстве без обмена данными с облаком. Представленный проект – это приложение на SwiftUI с поддержкой iOS 26 и Apple Intelligence, использующее приватную on‑device модель (~3 млрд параметров). В интерфейсе реализованы многопоточность, хранение диалогов через SwiftData, потоковая генерация ответов, автосуммирование переписки и извлечение метаданных из веб‑страниц. Ключевая особенность проекта – использование
Статья: https://dimillian.medium.com/foundationchat-building-an-ai-chat-app-with-ios-26s-on-device-models-a3230df8d989 (©)
Код: https://github.com/roy3210/FoundationChat
Платформа: iOS
Продолжаем исследовать Foundation Models. Разработчик демонстрирует, как с помощью нового фреймворка можно создать полноценный чат‑бот, работающий полностью на устройстве без обмена данными с облаком. Представленный проект – это приложение на SwiftUI с поддержкой iOS 26 и Apple Intelligence, использующее приватную on‑device модель (~3 млрд параметров). В интерфейсе реализованы многопоточность, хранение диалогов через SwiftData, потоковая генерация ответов, автосуммирование переписки и извлечение метаданных из веб‑страниц. Ключевая особенность проекта – использование
@Generable макроса, позволяющего описывать структуру сообщений как Swift‑структуры, что делает вывод модели строго типобезопасным и упрощает обработку ответов. Кроме того показано, как с помощью Tool API встроить анализ веб‑страниц, извлекая заголовки, превью и описания прямо в чат. Это превращает FoundationChat в движок для гибких AI‑фич, работающих офлайн и сохраняющих приватность.Статья: https://dimillian.medium.com/foundationchat-building-an-ai-chat-app-with-ios-26s-on-device-models-a3230df8d989 (©)
Код: https://github.com/roy3210/FoundationChat
Платформа: iOS
🔥3🤔1
SwiftCrossUI - кроссплатформенный декларативный UI-фреймворк, вдохновленный SwiftUI. SwiftCrossUI позволяет вам использовать базовые концепции SwiftUI для создания кроссплатформенных (macOS, Linux, Windows, iOS и tvOS) десктопных приложений. SwiftCrossUI предоставляет вашим пользователям нативный опыт на каждой платформе с помощью набора бэкэндов, созданных поверх различных фреймворков пользовательского интерфейса.
SwiftCrossUI на GitHub: https://github.com/stackotter/swift-cross-ui
Платформа: iOS/кроссплатформа
⭐️: 5
SwiftCrossUI на GitHub: https://github.com/stackotter/swift-cross-ui
Платформа: iOS/кроссплатформа
⭐️: 5
•
(iOS Ru) Молот и наковальня iOS-разработчика•
(iOS En) iOS 26 Apple Maps Bottom Sheet Interaction Using SwiftUI•
(iOS En) Build a SwiftUI Voice Agent in Minutes•
(iOS En) Family App's Morphing Menu Interaction Using SwiftUI•
(iOS En) Discover 5 new AI features of Xcode 26•
(iOS En) iOS 26 Apple Find My App's Custom Tab Bar•
(iOS En) Create a Swift Package from Your SwiftUI Project (SF Symbol Picker)•
(iOS En) Apple Music Bottom Bar for iOS 26 & iOS 18 Using SwiftUI•
(And Ru) Эти фичи Kotlin меняют правила игры•
(And Ru) Что не так с Android разработкой?•
(And En) The Full Android 16 Migration Checklist - Your Todos For API Level 36•
(And En) The Full Jetpack Compose Responsive UI Crash Course•
(And En) Reaching billions: Multiplatform strategies and performance tools for Android•
(And En) Rich Errors in Kotlin•
(And En) All about Androidify•
(And En) Migrate Gradle Builds to Kotlin DSL•
(Crs Ru) Кроссплатформа, умный склад и DnD: кодим, автоматизируем, побеждаем•
(Crs En) Compose Multiplatform for iOS: Ready for Production UseПрошлогодние видео:
•
(iOS Ru) А так ли нужны акторы в Swift Concurrency?•
(iOS Ru) Swift 5.9: разбираем интероп и «женим» с С++•
(iOS Ru) Реактивный Swift Concurrency•
(And Ru) Как запускать задачи в фоне на Android. РАЗБОР•
(And Ru) Эволюция Android тестов с Marathon Test Runner•
(Dev Ru) Все софт скиллы — про преодоление страха и силу волиPlease open Telegram to view this post
VIEW IN TELEGRAM
Расширяем возможности VK DeviceHub: как мы добавляли поддержку iOS для собственной фермы мобильных устройств
Изначально DeviceHub мог работать только с Android-устройствами. Но теперь, после обновления, инструмент поддерживает и iOS-устройства. Расскажу в статье, для чего нам понадобилась поддержка iOS и с чем мы столкнулись при внедрении новых возможностей.
Статья: https://habr.com/ru/companies/vk/articles/921058/
Платформа: iOS
Изначально DeviceHub мог работать только с Android-устройствами. Но теперь, после обновления, инструмент поддерживает и iOS-устройства. Расскажу в статье, для чего нам понадобилась поддержка iOS и с чем мы столкнулись при внедрении новых возможностей.
Статья: https://habr.com/ru/companies/vk/articles/921058/
Платформа: iOS
Незаметное ограничение Android 15
О чем речь: если приложение в фоне, то теперь не получится сделать сетевой запрос вне WorkManager или Foreground Service, иначе запрос упадет с UnknownHostException. Я проверил на своем устройстве с недавно прилетевшим Android 15 и выставленным targetSdk = 35 и это действительно так.
Статья: https://habr.com/ru/articles/922100/
Платформа: Android
О чем речь: если приложение в фоне, то теперь не получится сделать сетевой запрос вне WorkManager или Foreground Service, иначе запрос упадет с UnknownHostException. Я проверил на своем устройстве с недавно прилетевшим Android 15 и выставленным targetSdk = 35 и это действительно так.
Статья: https://habr.com/ru/articles/922100/
Платформа: Android
👍1
Store - решение для работы с данными в Kotlin. Независимо от того, разрабатываете ли вы в одиночку или с командой из тысяч человек, Store может вам помочь. Библиотека предназначена для упрощения управления данными в современных приложениях. Она предоставляет архитектуру для обработки потока данных между сетью, кэшем в памяти и локальным хранилищем, обеспечивая согласованность, эффективность и масштабируемость. Store выступает в качестве единого источника достоверных данных для вашего приложения, оптимизируя процесс извлечения, кэширования и обновления данных на разных уровнях.
Store на GitHub: https://github.com/MobileNativeFoundation/Store
Платформа: Android/кроссплатформа
⭐️: 3.3K
Store на GitHub: https://github.com/MobileNativeFoundation/Store
Платформа: Android/кроссплатформа
⭐️: 3.3K
❤1
Ныряем в холодные потоки Kotlin Flow
Лето — лучшее время для сплава. Поэтому, если вы пока не в отпуске, давайте устроим короткий сплав по асинхронным потокам данных.
Статья: https://habr.com/ru/articles/922962/
Платформа: Android
Лето — лучшее время для сплава. Поэтому, если вы пока не в отпуске, давайте устроим короткий сплав по асинхронным потокам данных.
Статья: https://habr.com/ru/articles/922962/
Платформа: Android
👍2❤1🤮1
Как Blinkit решил загадку производительности Android-приложения с помощью Droid Dex
Представьте себе: ваше приложение работает плавно на Pixel 7 Pro, но выдает ошибки ANR на Redmi Note 4. А пользователям Fold 6 приходится сталкиваться с теми же некрасивыми переходами, что и на устройстве за 6000 рублей. Звучит знакомо?
Добро пожаловать в разработку Android в 2025 году, где фрагментация устройств является одной из самых больших проблем.
Это история о том, как Blinkit решил самую печально известную проблему Android - умную адаптацию производительности в реальном времени.
Статья: https://apptractor.ru/info/articles/droid-dex.html
Платформа: Android
Представьте себе: ваше приложение работает плавно на Pixel 7 Pro, но выдает ошибки ANR на Redmi Note 4. А пользователям Fold 6 приходится сталкиваться с теми же некрасивыми переходами, что и на устройстве за 6000 рублей. Звучит знакомо?
Добро пожаловать в разработку Android в 2025 году, где фрагментация устройств является одной из самых больших проблем.
Это история о том, как Blinkit решил самую печально известную проблему Android - умную адаптацию производительности в реальном времени.
Статья: https://apptractor.ru/info/articles/droid-dex.html
Платформа: Android
👍1
SwiftUI + AlarmKit: клонируем стандартное приложение «Будильник» от Apple
AlarmKit был представлен на WWDC 2025. Насколько прост будет переход от идеи к рабочему приложению с AlarmKit?
Что уже умеет фреймворк:
• Хранит запланированные, активные, повторяющиеся и одноразовые будильники через единый daemon-store.
• Предоставляет готовый UI для Live Activities (отображение на Lock Screen и в Dynamic Island).
• Работает на основе WidgetKit, ActivityKit и AppIntents — всё уже сделано за нас, но надо разобраться
Что автор называет проблемным:
• Нет «истории» сработавших будильников — нужно хранить самому.
• Alarm‑объект содержит только id, расписание и длительность — ни названий, ни метаданных, ни времени срабатывания .
• Синхронизацию UI на главном экране приходится делать вручную — например, с помощью кастомных объектов и dynamicMemberLookup
AlarmKit — мощный и перспективный фреймворк, но требует своих костылей для полноценного приложения-замены. Автор справляется с ним смело: дизайн не идеальный, поэтому туториал — must-read для всех, кто хочет попробовать новые механизмы в iOS 26.
Статья: https://levelup.gitconnected.com/swiftui-alarm-app-copycat-with-alarmkit-wwdc-2025-part-1-27fad3186791
Платформа: iOS
AlarmKit был представлен на WWDC 2025. Насколько прост будет переход от идеи к рабочему приложению с AlarmKit?
Что уже умеет фреймворк:
• Хранит запланированные, активные, повторяющиеся и одноразовые будильники через единый daemon-store.
• Предоставляет готовый UI для Live Activities (отображение на Lock Screen и в Dynamic Island).
• Работает на основе WidgetKit, ActivityKit и AppIntents — всё уже сделано за нас, но надо разобраться
Что автор называет проблемным:
• Нет «истории» сработавших будильников — нужно хранить самому.
• Alarm‑объект содержит только id, расписание и длительность — ни названий, ни метаданных, ни времени срабатывания .
• Синхронизацию UI на главном экране приходится делать вручную — например, с помощью кастомных объектов и dynamicMemberLookup
AlarmKit — мощный и перспективный фреймворк, но требует своих костылей для полноценного приложения-замены. Автор справляется с ним смело: дизайн не идеальный, поэтому туториал — must-read для всех, кто хочет попробовать новые механизмы в iOS 26.
Статья: https://levelup.gitconnected.com/swiftui-alarm-app-copycat-with-alarmkit-wwdc-2025-part-1-27fad3186791
Платформа: iOS
👍1