Как нарезать Android-монолит с помощью compile-time плагинов?
В этой статье вспомним наш опыт разбиения большого монолитного Android-приложения на мини-приложения. Занимались мы этим уже довольно давно, но тема всё равно актуальная.
Переход к таким мини-приложениям позволяет ускорить конфигурацию Gradle и уменьшить время компиляции проекта как локально, так и на CI. Думаю, это будет полезно тем, кто интересуется архитектурой android-приложений, KSP, Dagger, а также тем, у кого крупное многомодульное приложение и есть проблемы с производительностью работы Gradle в проекте.
Статья: https://habr.com/ru/companies/alfa/articles/1002998/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье вспомним наш опыт разбиения большого монолитного Android-приложения на мини-приложения. Занимались мы этим уже довольно давно, но тема всё равно актуальная.
Переход к таким мини-приложениям позволяет ускорить конфигурацию Gradle и уменьшить время компиляции проекта как локально, так и на CI. Думаю, это будет полезно тем, кто интересуется архитектурой android-приложений, KSP, Dagger, а также тем, у кого крупное многомодульное приложение и есть проблемы с производительностью работы Gradle в проекте.
Статья: https://habr.com/ru/companies/alfa/articles/1002998/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
LazyAdaptiveLayout - продвинутая сетка для Android Jetpack Compose
LazyAdaptiveLayout - высокопроизводительный, настраиваемый адаптивный grid-layout для Android Jetpack Compose с ленивой загрузкой и адаптивной оптимизацией прокрутки. Поддерживает несколько типов раскладок: staggered, uniform, full-width и пользовательские layout’ы со span-настройками, с интуитивным DSL-API.
Возможности
• Несколько типов макетов: поддержка Staggered, Uniform, Full Width и пользовательских раскладок со span-настройками
• DSL API: интуитивный DSL на основе scope, похожий на LazyColumn и LazyVerticalGrid
• Ленивая загрузка: эффективный рендеринг с подгрузкой элементов на основе области видимости
• Адаптивная оптимизация прокрутки: динамический размер буфера в зависимости от скорости скролла
• Гибкая конфигурация: настраиваемые spacing, padding и размеры элементов
• Типобезопасность: обобщённая (generic) реализация с поддержкой любых типов данных
• Оптимизация производительности: минимальные рекомпозиции и эффективное использование памяти
• Контроль высоты элементов: возможность задавать индивидуальную высоту для каждого элемента внутри групп
LazyAdaptiveLayout на GitHub: https://github.com/wayfair-incubator/compose-lazy-adaptive-layout
Платформа: Android
⭐️: 30
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
LazyAdaptiveLayout - высокопроизводительный, настраиваемый адаптивный grid-layout для Android Jetpack Compose с ленивой загрузкой и адаптивной оптимизацией прокрутки. Поддерживает несколько типов раскладок: staggered, uniform, full-width и пользовательские layout’ы со span-настройками, с интуитивным DSL-API.
Возможности
• Несколько типов макетов: поддержка Staggered, Uniform, Full Width и пользовательских раскладок со span-настройками
• DSL API: интуитивный DSL на основе scope, похожий на LazyColumn и LazyVerticalGrid
• Ленивая загрузка: эффективный рендеринг с подгрузкой элементов на основе области видимости
• Адаптивная оптимизация прокрутки: динамический размер буфера в зависимости от скорости скролла
• Гибкая конфигурация: настраиваемые spacing, padding и размеры элементов
• Типобезопасность: обобщённая (generic) реализация с поддержкой любых типов данных
• Оптимизация производительности: минимальные рекомпозиции и эффективное использование памяти
• Контроль высоты элементов: возможность задавать индивидуальную высоту для каждого элемента внутри групп
LazyAdaptiveLayout на GitHub: https://github.com/wayfair-incubator/compose-lazy-adaptive-layout
Платформа: Android
⭐️: 30
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Как реализовать WebSocket на Android и не сойти с ума
Как часто вы слышите что-то о протоколе WebSocket? А как часто видели его в проектах? Продакшн? Андроид? Что? Его кто-то использует?
А теперь представьте: перед вами стоит задача внедрить WS в крупный продакшн проект с нуля. С чего начать? Как подступиться?
Статья: https://habr.com/ru/companies/betboom/articles/1007816/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как часто вы слышите что-то о протоколе WebSocket? А как часто видели его в проектах? Продакшн? Андроид? Что? Его кто-то использует?
А теперь представьте: перед вами стоит задача внедрить WS в крупный продакшн проект с нуля. С чего начать? Как подступиться?
Статья: https://habr.com/ru/companies/betboom/articles/1007816/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Начинаем работу с мониторингом (Observability) iOS-приложений
Исправить сбой, используя логи ошибок, может быть легко. Но что, если функция не работает, и у вас закончились идеи о том, что может происходить, и единственное, что приходит в голову, это: «Как бы мне хотелось отладить приложение на телефоне этого пользователя», что, конечно, редко достижимо?
В этом руководстве вы изучите основы мониторинга приложений (observability) и поймете, как ваше приложение ведет себя в руках ваших клиентов.
Статья: https://apptractor.ru/info/articles/observability-ios.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Исправить сбой, используя логи ошибок, может быть легко. Но что, если функция не работает, и у вас закончились идеи о том, что может происходить, и единственное, что приходит в голову, это: «Как бы мне хотелось отладить приложение на телефоне этого пользователя», что, конечно, редко достижимо?
В этом руководстве вы изучите основы мониторинга приложений (observability) и поймете, как ваше приложение ведет себя в руках ваших клиентов.
Статья: https://apptractor.ru/info/articles/observability-ios.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI Pro - помощник по SwiftUI для ИИ
SwiftUI Pro - агентский навык, помогающий ИИ-помощникам писать более умный, простой и современный SwiftUI, с рекомендациями по использованию API, дизайну, производительности и доступности. Охватывает навигацию, компоновку, анимацию, управление состоянием, VoiceOver, устаревшие API и многое другое, ориентируясь на ошибки, которые действительно допускают программисты с большим опытом.
Навык основан на рабочем файле AGENTS.md, а это значит, что вы можете привнести многолетний опыт и знания в выбранного вами агента всего за несколько минут. Он использует формат Agent Skills, поэтому бесперебойно работает с Claude Code, Codex, Gemini, Cursor и другими.
SwiftUI Pro на GitHub: https://github.com/twostraws/SwiftUI-Agent-Skill
Платформа: iOS
⭐️: 2K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
SwiftUI Pro - агентский навык, помогающий ИИ-помощникам писать более умный, простой и современный SwiftUI, с рекомендациями по использованию API, дизайну, производительности и доступности. Охватывает навигацию, компоновку, анимацию, управление состоянием, VoiceOver, устаревшие API и многое другое, ориентируясь на ошибки, которые действительно допускают программисты с большим опытом.
Навык основан на рабочем файле AGENTS.md, а это значит, что вы можете привнести многолетний опыт и знания в выбранного вами агента всего за несколько минут. Он использует формат Agent Skills, поэтому бесперебойно работает с Claude Code, Codex, Gemini, Cursor и другими.
SwiftUI Pro на GitHub: https://github.com/twostraws/SwiftUI-Agent-Skill
Платформа: iOS
⭐️: 2K
Please open Telegram to view this post
VIEW IN TELEGRAM
20 приложений за 20 дней с Flutter и Antigravity
Недавно я присоединился к командам Dart и Flutter, и в январе этого года я поставил перед собой цель: создать 20 приложений за 20 дней, используя Flutter и Antigravity. Но зачем? Во-первых, цена любопытства официально достигла нуля. От идеи до приложения можно пройти 10 минут. Во-вторых, как новый член команды, я хотел изучить фреймворк, что-то создавая. И наконец, что наиболее важно, я хотел проверить теорию о том, что в 2026 году мы все можем быть создателями.
Я здесь, чтобы поделиться тем, чему научился на практике. Если вы вынесете из этого поста только одну вещь, пусть это будет следующее: перестаньте читать и идите что-нибудь создавать.
Статья: https://apptractor.ru/info/articles/20-prilozheniy-za-20-dney-s-flutter-i-antigravity.html
Платформа: разработка/ИИ
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Недавно я присоединился к командам Dart и Flutter, и в январе этого года я поставил перед собой цель: создать 20 приложений за 20 дней, используя Flutter и Antigravity. Но зачем? Во-первых, цена любопытства официально достигла нуля. От идеи до приложения можно пройти 10 минут. Во-вторых, как новый член команды, я хотел изучить фреймворк, что-то создавая. И наконец, что наиболее важно, я хотел проверить теорию о том, что в 2026 году мы все можем быть создателями.
Я здесь, чтобы поделиться тем, чему научился на практике. Если вы вынесете из этого поста только одну вещь, пусть это будет следующее: перестаньте читать и идите что-нибудь создавать.
Статья: https://apptractor.ru/info/articles/20-prilozheniy-za-20-dney-s-flutter-i-antigravity.html
Платформа: разработка/ИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1🔥1
Повторный вход в акторы в Swift
Акторы в Swift решают проблему гонок данных. Cам по себе актор гарантирует, что к его состоянию обращается только одна задача одновременно. Никаких мьютексов, семафоров, очередей — компилятор сам следит.
Звучит неплохо. Но есть подвох, и он называется повторный вход (reentrancy). Актор защищает от одновременного доступа, но не защищает от того, что состояние изменится между двумя вашими обращениями к нему.
Статья: https://habr.com/ru/companies/otus/articles/1005782/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Акторы в Swift решают проблему гонок данных. Cам по себе актор гарантирует, что к его состоянию обращается только одна задача одновременно. Никаких мьютексов, семафоров, очередей — компилятор сам следит.
Звучит неплохо. Но есть подвох, и он называется повторный вход (reentrancy). Актор защищает от одновременного доступа, но не защищает от того, что состояние изменится между двумя вашими обращениями к нему.
Статья: https://habr.com/ru/companies/otus/articles/1005782/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Повторный вход в акторы в Swift
Акторы в Swift решают проблему гонок данных. Cам по себе актор гарантирует, что к его состоянию обращается только одна задача одновременно. Никаких мьютексов, семафоров, очередей — компилятор сам...
❤1
Как я пытался чинить анимацию в Jetpack Compose LazyColumn
Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами.
Все шло гладко, пока не пришлось добавить айтем, который должен был увеличиваться по высоте. Мы заметили, что нижние карточки смещались не в такт. Небольшой, но заметный рассинхрон, который сразу бросается в глаза.
Решение казалось очевидным: настроить
В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный
Статья: https://habr.com/ru/companies/tbank/articles/1009014/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами.
Все шло гладко, пока не пришлось добавить айтем, который должен был увеличиваться по высоте. Мы заметили, что нижние карточки смещались не в такт. Небольшой, но заметный рассинхрон, который сразу бросается в глаза.
Решение казалось очевидным: настроить
animateItem или написать свою реализацию. Мы перепробовали несколько вариантов через стандартный API, проваливались в исходники compose.foundation, писали кастомный модификатор. На каждом шаге казалось, что решение рядом, но каждый раз упирались в новый тупик.В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный
animateItem обречен с самого начала и к какому решению мы пришли в итоге.Статья: https://habr.com/ru/companies/tbank/articles/1009014/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Приложение без MVC или MVVM — опыт разработки
Обычно, когда я начинаю iOS-проект, архитектура естественным образом становится частью процесса. Я создаю отдельные слои для сети, моделей данных, бизнес-логики и пользовательского интерфейса. После нескольких лет разработки это делается автоматически.
Но на этот раз я решил попробовать именно то, что предложил клиент.
Никакой архитектуры.
Никакого MVC.
Никакого MVVM.
Никакой чистой архитектуры.
Просто создаем приложение и заставляем его работать.
Поначалу это оказалось на удивление эффективным.
Статья: https://apptractor.ru/info/articles/prilozhenie-bez-mvc-ili-mvvm-opyt-razrabotki.html
Платформа: iOS/архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Обычно, когда я начинаю iOS-проект, архитектура естественным образом становится частью процесса. Я создаю отдельные слои для сети, моделей данных, бизнес-логики и пользовательского интерфейса. После нескольких лет разработки это делается автоматически.
Но на этот раз я решил попробовать именно то, что предложил клиент.
Никакой архитектуры.
Никакого MVC.
Никакого MVVM.
Никакой чистой архитектуры.
Просто создаем приложение и заставляем его работать.
Поначалу это оказалось на удивление эффективным.
Статья: https://apptractor.ru/info/articles/prilozhenie-bez-mvc-ili-mvvm-opyt-razrabotki.html
Платформа: iOS/архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Pillarbox - универсальная экосистема воспроизведения мультимедиа
Pillarbox — это современная экосистема мультимедийных плееров, построенная на основе AndroidX Media3. Pillarbox разработан с учетом надежности, гибкости и эффективности, с полной возможностью настройки, с учетом адаптивности и универсальности, что гарантирует его развертывание в различных медиаприложениях. Ключевой принцип Pillarbox заключается в отсутствии ограничений пользовательского интерфейса, что позволяет каждой команде разработчиков создавать свой собственный уникальный опыт воспроизведения.
Он легко интегрируется с функциями платформы и предлагает широкие возможности настройки обработки метаданных, управления активами и аналитики.
Pillarbox на GitHub: https://github.com/SRGSSR/pillarbox-android
Платформа: Android
⭐️: 23
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Pillarbox — это современная экосистема мультимедийных плееров, построенная на основе AndroidX Media3. Pillarbox разработан с учетом надежности, гибкости и эффективности, с полной возможностью настройки, с учетом адаптивности и универсальности, что гарантирует его развертывание в различных медиаприложениях. Ключевой принцип Pillarbox заключается в отсутствии ограничений пользовательского интерфейса, что позволяет каждой команде разработчиков создавать свой собственный уникальный опыт воспроизведения.
Он легко интегрируется с функциями платформы и предлагает широкие возможности настройки обработки метаданных, управления активами и аналитики.
Pillarbox на GitHub: https://github.com/SRGSSR/pillarbox-android
Платформа: Android
⭐️: 23
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) SwiftUI Under The Hood: What's Really Happening When You iOS Updates•
(iOS En) Agent Skills in Xcode - Build better SwiftUI apps with AI agents•
(iOS En) SwiftUI: Collapsible View with Interactive Bottom Sheet•
(And Ru) Неочевидное решение очевидной проблемы: грузим файлы•
(And Ru) Конец Android: план Google на 2026 год•
(And En) My #1 Tip When ViewModels Grow Too Big•
(And En) Is THIS the Future of Jetpack Compose UI?•
(And En) Kotlin Flow Operators: You Can't Do THAT with Collections...•
(Dev Ru) Гайд по релокации в любую страну — релокация, эмиграция•
(Dev En) CI/CD in Production with Jenkins – Complete DevOps CourseПрошлогодние видео:
•
(iOS Ru) Жизнь iOS разработчика в условиях санкций•
(iOS Ru) Моменты неотзывчивости iOS-приложений: как найти и исправить•
(And Ru) Ultron — фреймворк для тестирования Android UI и Compose•
(And Ru) Собираем грабли при профилировании Android-приложений•
(Crs Ru) Полный разбор Kotlin Inject — Dagger для Kotlin Multiplatform•
(Dev Ru) Зачем программисту знать лямбда исчисление•
(Dev Ru) Мок интервью на позицию СТО•
(Dev Ru) Публичное собеседование по System Design•
(Dev Ru) Мобильная инфраструктура. Взгляд изнутри•
(Dev Ru) BDUI – удовольствие или боль?•
(Dev Ru) BDUI на 100%: управляем шиммерами с бэкендаPlease open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SwiftUI Under The Hood: What's Really Happening When You iOS Updates
Most SwiftUI developers have no idea what actually happens after they write @State. SwiftUI feels like magic — change a variable, the UI updates. But how? What's actually running under the hood? And more importantly, what hidden mistakes are silently killing…
51 правил Detekt для Koin: выявляйте антипаттерны, которые пропускает ваш компилятор
Если вы используете Koin в своих Kotlin-проектах, то знаете, как легко пропустить ошибку в описании модулей, которая «выстрелит» только в рантайме. Новая библиотека detekt-rules-koin переносит проверку архитектуры на этап статического анализа. Теперь вместо того, чтобы вручную выискивать циклические зависимости или неправильно объявленные параметры, вы можете делегировать это detekt. Правила помогают автоматически находить потенциальные утечки памяти и следить за тем, чтобы ваши модули оставались лаконичными и предсказуемыми.
Переход на автоматизированный контроль — это не просто вопрос «красивого кода», а реальный способ сократить время на отладку. В статье подробно разбирается, как подключить кастомные правила, какие именно проверки уже доступны «из коробки» и как интегрировать их в ваш CI/CD пайплайн. Если вы хотите, чтобы ваш Dependency Injection был под надежным присмотром линтера, а код-ревью проходили быстрее, этот инструмент определенно стоит вашего внимания.
Статья: https://blog.insert-koin.io/detekt-rules-koin-c0b6330fc37b🇬🇧
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Если вы используете Koin в своих Kotlin-проектах, то знаете, как легко пропустить ошибку в описании модулей, которая «выстрелит» только в рантайме. Новая библиотека detekt-rules-koin переносит проверку архитектуры на этап статического анализа. Теперь вместо того, чтобы вручную выискивать циклические зависимости или неправильно объявленные параметры, вы можете делегировать это detekt. Правила помогают автоматически находить потенциальные утечки памяти и следить за тем, чтобы ваши модули оставались лаконичными и предсказуемыми.
Переход на автоматизированный контроль — это не просто вопрос «красивого кода», а реальный способ сократить время на отладку. В статье подробно разбирается, как подключить кастомные правила, какие именно проверки уже доступны «из коробки» и как интегрировать их в ваш CI/CD пайплайн. Если вы хотите, чтобы ваш Dependency Injection был под надежным присмотром линтера, а код-ревью проходили быстрее, этот инструмент определенно стоит вашего внимания.
Статья: https://blog.insert-koin.io/detekt-rules-koin-c0b6330fc37b
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
51 Detekt Rules for Koin: Catch Anti-Patterns Your Compiler Misses
Your Koin module compiles. Unit tests pass. CI is green. Then production crashes with NoBeanDefFoundException on first launch — and the…
FuzzyMatch - нечеткое сопоставление строк в Swif
FuzzyMatch - высокопроизводительная библиотека для нечеткого сопоставления строк в Swift.
FuzzyMatch был разработан для поиска в базах данных финансовых инструментов — тикерах акций, названиях фондов, ISIN — где важны допустимые опечатки, ранжирование с учетом префиксов и задержка менее миллисекунды. Эти же качества делают его хорошо подходящим для любой области с большим, разнородным набором данных: идентификаторы кодов, имена файлов, каталоги продукции, списки контактов или что-либо еще, что пользователь может искать с неточным вводом.
FuzzyMatch на GitHub: https://github.com/ordo-one/FuzzyMatch
Платформа: iOS
⭐️: 113
Вот еще одна библиотека для нечеткого поиска на Swift.
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
FuzzyMatch - высокопроизводительная библиотека для нечеткого сопоставления строк в Swift.
FuzzyMatch был разработан для поиска в базах данных финансовых инструментов — тикерах акций, названиях фондов, ISIN — где важны допустимые опечатки, ранжирование с учетом префиксов и задержка менее миллисекунды. Эти же качества делают его хорошо подходящим для любой области с большим, разнородным набором данных: идентификаторы кодов, имена файлов, каталоги продукции, списки контактов или что-либо еще, что пользователь может искать с неточным вводом.
FuzzyMatch на GitHub: https://github.com/ordo-one/FuzzyMatch
Платформа: iOS
⭐️: 113
Вот еще одна библиотека для нечеткого поиска на Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
Dejavu: тестирование рекомпозиций для Jetpack Compose
Dejavu преобразует поведение рекомпозиции в тестовые утверждения. Никаких изменений в производственном коде, кроме
Статья: https://apptractor.ru/info/articles/dejavu-testirovanie-rekompozitsiy-dlya-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Dejavu преобразует поведение рекомпозиции в тестовые утверждения. Никаких изменений в производственном коде, кроме
Modifier.testTag() (который вы, вероятно, уже используете).Статья: https://apptractor.ru/info/articles/dejavu-testirovanie-rekompozitsiy-dlya-jetpack-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Snappy Swipe - упругий swipe to delete
Snappy Swipe - "упругий" способ удаления компонента из списка с помощью свайпа, вдохновленный выразительными уведомлениями Material 3.
Snappy Swipe на GitHub: https://github.com/KlassenKonstantin/SnappySwipe
Платформа: Android
⭐️: 31
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Snappy Swipe - "упругий" способ удаления компонента из списка с помощью свайпа, вдохновленный выразительными уведомлениями Material 3.
Snappy Swipe на GitHub: https://github.com/KlassenKonstantin/SnappySwipe
Платформа: Android
⭐️: 31
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта
В этой статье вместо того чтобы рассматривать Package.swift как простой конфигурационный файл, превратим его в типобезопасный DSL для модульной архитектуры.
Статья: https://habr.com/ru/articles/1010564/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье вместо того чтобы рассматривать Package.swift как простой конфигурационный файл, превратим его в типобезопасный DSL для модульной архитектуры.
Статья: https://habr.com/ru/articles/1010564/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Несколько мобильных приложений в одном Appium‑проекте: как это можно организовать
В статье покажу:
• как запускать тесты для нескольких мобильных приложений в одном Appium-проекте
• как выбирать приложение через аннотацию
• как сделать потокобезопасный фреймворк
• как избежать дублирования кода
Статья: https://habr.com/ru/articles/1010216/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В статье покажу:
• как запускать тесты для нескольких мобильных приложений в одном Appium-проекте
• как выбирать приложение через аннотацию
• как сделать потокобезопасный фреймворк
• как избежать дублирования кода
Статья: https://habr.com/ru/articles/1010216/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Встроенный фото-пикер в Jetpack Compose
Встроенный фото-пикер — это не «кастомный интерфейс галереи». Это системный инструмент выбора фотографий, отображаемый внутри вашей иерархии UI, обладающий теми же свойствами безопасности и конфиденциальности, что и классический инструмент выбора, поскольку система отрисовывает его в выделенном SurfaceView (внутренне подключаемом через
Статья: https://apptractor.ru/info/articles/vstroennyy-foto-piker.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Встроенный фото-пикер — это не «кастомный интерфейс галереи». Это системный инструмент выбора фотографий, отображаемый внутри вашей иерархии UI, обладающий теми же свойствами безопасности и конфиденциальности, что и классический инструмент выбора, поскольку система отрисовывает его в выделенном SurfaceView (внутренне подключаемом через
SurfaceView.setChildSurfacePackage). Именно это архитектурное решение открывает ключевой сдвиг в продукте: пользователь остается на вашем экране во время просмотра и выбора, а ваше приложение может реагировать на обновления выбора в реальном времени, поскольку ваша активити остается рабочей.Статья: https://apptractor.ru/info/articles/vstroennyy-foto-piker.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедряем Yandex MapKit SDK в SwiftUI приложение. Пишем Demo проект
Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK.
Статья: https://habr.com/ru/articles/1010642/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK.
Статья: https://habr.com/ru/articles/1010642/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Copy-On-Write в Swift: семантика, заблуждения и кастомная реализация
Понимание того, как работает этот механизм, дает практические преимущества. Оно проясняет, как коллекции Swift достигают своих характеристик производительности, улучшает понимание поведения памяти и позволяет проектировать пользовательские структуры данных, которые сочетают семантику значений с эффективным управлением памятью.
В этой статье рассматривается проектирование хранилища с механизмом копирования при записи в Swift, модели мышления, которые разработчики часто используют при рассуждениях об этом, и практическая реализация пользовательского контейнера COW.
Статья: https://apptractor.ru/info/articles/copy-on-write-v-swift-semantika-zabluzhdeniya-i-kastomnaya-realizatsiya.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Понимание того, как работает этот механизм, дает практические преимущества. Оно проясняет, как коллекции Swift достигают своих характеристик производительности, улучшает понимание поведения памяти и позволяет проектировать пользовательские структуры данных, которые сочетают семантику значений с эффективным управлением памятью.
В этой статье рассматривается проектирование хранилища с механизмом копирования при записи в Swift, модели мышления, которые разработчики часто используют при рассуждениях об этом, и практическая реализация пользовательского контейнера COW.
Статья: https://apptractor.ru/info/articles/copy-on-write-v-swift-semantika-zabluzhdeniya-i-kastomnaya-realizatsiya.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
NVActivityIndicatorView - индиакторы загрузки
NVActivityIndicatorView - коллекция потрясающих анимаций загрузки. Больше 30 вариантов показать, что ваш контент загружается.
NVActivityIndicatorView на GitHub: https://github.com/ninjaprox/NVActivityIndicatorView
Платформа: iOS
⭐️: 10.7K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
NVActivityIndicatorView - коллекция потрясающих анимаций загрузки. Больше 30 вариантов показать, что ваш контент загружается.
NVActivityIndicatorView на GitHub: https://github.com/ninjaprox/NVActivityIndicatorView
Платформа: iOS
⭐️: 10.7K
Please open Telegram to view this post
VIEW IN TELEGRAM