Мы научили агента писать тесты так, как их пишет наша команда
Каждому iOS-разработчику знакома ситуация: задача уже готова, кажется, что самое сложное уже позади. Но затем наступает этап написания unit-тестов. Мы пробовали поручить это ChatLLM, но модель генерировала код, который не компилировался: придумывала несуществующие Mock-объекты, игнорировала архитектурные соглашения проекта и использовала не те тестовые утилиты.
Проблема оказалась не в модели, а в отсутствии контекста. Вместо очередного набора промптов мы создали систему правил на базе AGENTS.md и SKILL.md. Это превратило генерацию тестов из разового запроса в воспроизводимый инженерный процесс.
В статье расскажу, как мы организовали работу AI-агента, какие проблемы встретили и почему хорошие правила сегодня важнее выбора «самой умной» модели.
Статья: https://habr.com/ru/companies/tbank/articles/1091898/
Платформа: тестирование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Каждому iOS-разработчику знакома ситуация: задача уже готова, кажется, что самое сложное уже позади. Но затем наступает этап написания unit-тестов. Мы пробовали поручить это ChatLLM, но модель генерировала код, который не компилировался: придумывала несуществующие Mock-объекты, игнорировала архитектурные соглашения проекта и использовала не те тестовые утилиты.
Проблема оказалась не в модели, а в отсутствии контекста. Вместо очередного набора промптов мы создали систему правил на базе AGENTS.md и SKILL.md. Это превратило генерацию тестов из разового запроса в воспроизводимый инженерный процесс.
В статье расскажу, как мы организовали работу AI-агента, какие проблемы встретили и почему хорошие правила сегодня важнее выбора «самой умной» модели.
Статья: https://habr.com/ru/companies/tbank/articles/1091898/
Платформа: тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
Куда делись все вакансии для Android-разработчиков?
Я всё думаю о том, насколько иначе рынок ощущался несколько лет назад. Создание мобильного приложения было приоритетом почти для любого бизнеса. Стартапы запускали продукты, компании расширяли инженерные команды, а мобильная разработка выглядела как надёжный карьерный путь.
Сегодня разработчики задают уже совсем другой вопрос: если мобильные приложения всё ещё нужны всем, почему работы для тех, кто их создаёт, не становится больше?
Статья: https://apptractor.ru/info/articles/kuda-delis-vse-vakansii-dlya-android-razrabotchikov.html
Платформа: работа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я всё думаю о том, насколько иначе рынок ощущался несколько лет назад. Создание мобильного приложения было приоритетом почти для любого бизнеса. Стартапы запускали продукты, компании расширяли инженерные команды, а мобильная разработка выглядела как надёжный карьерный путь.
Сегодня разработчики задают уже совсем другой вопрос: если мобильные приложения всё ещё нужны всем, почему работы для тех, кто их создаёт, не становится больше?
Статья: https://apptractor.ru/info/articles/kuda-delis-vse-vakansii-dlya-android-razrabotchikov.html
Платформа: работа
Please open Telegram to view this post
VIEW IN TELEGRAM
CodexKit - SDK для создания агентов
CodexKit — это SDK на Swift для встраивания агентов в стиле Codex в приложения для iOS 17+ и macOS 14+. Он предоставляет вход через ChatGPT, сохраняемые диалоги, потоковую генерацию ответов, инструменты, определяемые самим приложением, и опциональную локальную память.
Возможности:
• Текстовый и графический ввод, потоковые ответы и типизированный вывод по ходам с предварительными событиями и финальным подтверждённым результатом.
• Возобновляемые треды с сохранением в SQLite или Realm и сжатием контекста.
• Инструменты, определяемые приложением, с этапами подтверждения, ограничениями политик для навыков и ограниченным опциональным параллельным выполнением.
• Персоны, навыки и локальная память для поведения, специфичного для конкретного приложения.
• Идентификаторы GPT-6.1 Sol, GPT-6 Sol/Luna/Astra, обнаружение доступных моделей аккаунта и отображение лимитов использования.
• Прогресс провайдера, фазы сообщений, добавление ввода в активные ходы и прерывание выполнения.
• OAuth через браузер, вход по device code и доступ только для чтения к локальным сессиям Codex на macOS.
CodexKit на GitHub: https://github.com/timazed/CodexKit
Платформа: iOS
⭐️: 32
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
CodexKit — это SDK на Swift для встраивания агентов в стиле Codex в приложения для iOS 17+ и macOS 14+. Он предоставляет вход через ChatGPT, сохраняемые диалоги, потоковую генерацию ответов, инструменты, определяемые самим приложением, и опциональную локальную память.
Возможности:
• Текстовый и графический ввод, потоковые ответы и типизированный вывод по ходам с предварительными событиями и финальным подтверждённым результатом.
• Возобновляемые треды с сохранением в SQLite или Realm и сжатием контекста.
• Инструменты, определяемые приложением, с этапами подтверждения, ограничениями политик для навыков и ограниченным опциональным параллельным выполнением.
• Персоны, навыки и локальная память для поведения, специфичного для конкретного приложения.
• Идентификаторы GPT-6.1 Sol, GPT-6 Sol/Luna/Astra, обнаружение доступных моделей аккаунта и отображение лимитов использования.
• Прогресс провайдера, фазы сообщений, добавление ввода в активные ходы и прерывание выполнения.
• OAuth через браузер, вход по device code и доступ только для чтения к локальным сессиям Codex на macOS.
CodexKit на GitHub: https://github.com/timazed/CodexKit
Платформа: iOS
⭐️: 32
Please open Telegram to view this post
VIEW IN TELEGRAM
Как эффективно отлаживать код, когда вы перестали его понимать
С развитием AI-кодинга возникает новая проблема: нейросети способны писать тысячи строк кода за день, но кто будет разбираться во всём этом, когда что-то сломается? Инженер Синди Шридхаран поделилась опытом отладки сложных систем с помощью Claude Code. В основе статьи — три реальные проблемы: рост задержек, утечка памяти и зависание сервиса.
Главная мысль: для эффективной отладки больше не обязательно понимать каждую строку кода. Важнее уметь проверять гипотезы ИИ.
Автор предлагает несколько принципов:
• Факты важнее объяснений. Логи, метрики, трассировки и результаты экспериментов надёжнее, чем убедительная история, которую рассказывает AI-агент.
• Разделяйте факты и гипотезы. Модель может предложить правдоподобную причину ошибки, но это ещё не доказательство.
• Сравнивайте работающую и сломанную системы. Иногда одно различие в поведении даёт больше информации, чем изучение тысяч строк исходников.
• Заставляйте ИИ опровергать собственные выводы. Хорошая гипотеза должна объяснять все наблюдаемые факты, а не только часть симптомов.
• Меняйте роль разработчика. Вместо ручного анализа каждой функции — проектирование проверок, сбор данных и контроль достоверности выводов AI-агентов.
Самый интересный вывод: программирование постепенно превращается из процесса написания и понимания кода в процесс управления его созданием и проверки корректности. И, возможно, главным навыком разработчика будущего станет не умение читать чужой код, а умение доказать, что он работает правильно.
Статья: https://copyconstruct.medium.com/how-to-effectively-debug-when-you-no-longer-understand-the-code-bd3dcb2c5f7b🇺🇸
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
С развитием AI-кодинга возникает новая проблема: нейросети способны писать тысячи строк кода за день, но кто будет разбираться во всём этом, когда что-то сломается? Инженер Синди Шридхаран поделилась опытом отладки сложных систем с помощью Claude Code. В основе статьи — три реальные проблемы: рост задержек, утечка памяти и зависание сервиса.
Главная мысль: для эффективной отладки больше не обязательно понимать каждую строку кода. Важнее уметь проверять гипотезы ИИ.
Автор предлагает несколько принципов:
• Факты важнее объяснений. Логи, метрики, трассировки и результаты экспериментов надёжнее, чем убедительная история, которую рассказывает AI-агент.
• Разделяйте факты и гипотезы. Модель может предложить правдоподобную причину ошибки, но это ещё не доказательство.
• Сравнивайте работающую и сломанную системы. Иногда одно различие в поведении даёт больше информации, чем изучение тысяч строк исходников.
• Заставляйте ИИ опровергать собственные выводы. Хорошая гипотеза должна объяснять все наблюдаемые факты, а не только часть симптомов.
• Меняйте роль разработчика. Вместо ручного анализа каждой функции — проектирование проверок, сбор данных и контроль достоверности выводов AI-агентов.
Самый интересный вывод: программирование постепенно превращается из процесса написания и понимания кода в процесс управления его созданием и проверки корректности. И, возможно, главным навыком разработчика будущего станет не умение читать чужой код, а умение доказать, что он работает правильно.
Статья: https://copyconstruct.medium.com/how-to-effectively-debug-when-you-no-longer-understand-the-code-bd3dcb2c5f7b
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
How to effectively debug when you no longer understand the code
“” is published by Cindy Sridharan.
Куда девается место на диске: Xcode, рабочие деревья и ИИ-агенты
Несколько недель назад мои сборки начали странным образом падать. Сначала сломался этап линковки. Потом
Оказалось, диск был заполнен. И ни одна из этих ошибок прямо об этом не говорила.
Такое начинает происходить гораздо чаще, когда в рабочем процессе появляются ИИ-агенты. Я запускаю по два-три агента одновременно, каждый в своём git worktree, каждый собирает приложение и запускает тесты. Каждое рабочее дерево также получает собственные копии симуляторов. Если агенты используют один и тот же симулятор, они начинают устанавливать свои сборки поверх чужих и нажимать кнопки на чужих экранах. Каждая сборка, каждый прогон тестов и каждая копия симулятора оставляют после себя гигабайты данных, и ничего из этого автоматически не очищается.
Статья: https://apptractor.ru/info/articles/kuda-devaetsya-mesto-na-diske-xcode-rabochie-derevya-i-ii-agenty.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Несколько недель назад мои сборки начали странным образом падать. Сначала сломался этап линковки. Потом
lipo. Затем кэш модулей начал жаловаться, что файл «был изменён после того, как был собран module file». Чистые сборки не помогали.Оказалось, диск был заполнен. И ни одна из этих ошибок прямо об этом не говорила.
Такое начинает происходить гораздо чаще, когда в рабочем процессе появляются ИИ-агенты. Я запускаю по два-три агента одновременно, каждый в своём git worktree, каждый собирает приложение и запускает тесты. Каждое рабочее дерево также получает собственные копии симуляторов. Если агенты используют один и тот же симулятор, они начинают устанавливать свои сборки поверх чужих и нажимать кнопки на чужих экранах. Каждая сборка, каждый прогон тестов и каждая копия симулятора оставляют после себя гигабайты данных, и ничего из этого автоматически не очищается.
Статья: https://apptractor.ru/info/articles/kuda-devaetsya-mesto-na-diske-xcode-rabochie-derevya-i-ii-agenty.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
AsoBeast - self-hosted ASO-инструмент для отслеживания ключевых слов в App Store и Google Play
AsoBeast — это инструмент для App Store Optimization (ASO) и отслеживания позиций по ключевым словам в Apple App Store и Google Play. Он импортирует страницу приложения, ежедневно отслеживает позиции по ключевым словам до 200-го места, следит за конкурентами, отзывами и метаданными, а затем превращает накопленную историю в приоритетную очередь задач по ASO. Этот репозиторий содержит бесплатную версию с открытым исходным кодом, которую можно запустить на собственном сервере.
Каждый запрос к магазину выполняется непосредственно на машине, где размещён AsoBeast, как обычный публичный поисковый запрос или запрос страницы, поэтому Apple и Google видят каждую отслеживаемую фразу так же, как любой другой поисковый запрос. Вам не нужно регистрироваться у стороннего ASO-провайдера, покупать API-ключ или передавать стороннему ASO-сервису информацию о том, какие ключевые слова вы отслеживаете. За исключением этих запросов к магазинам, ваши данные остаются внутри вашего развёртывания, если только вы явно не включите внешнюю интеграцию, например webhook-уведомления, электронную почту, помощь OpenAI, данные о популярности запросов из Apple Ads или обновления статуса магазинов.
AsoBeast на GitHub: https://github.com/AsoBeast/asobeast
Платформа: ASO
⭐️: 53
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
AsoBeast — это инструмент для App Store Optimization (ASO) и отслеживания позиций по ключевым словам в Apple App Store и Google Play. Он импортирует страницу приложения, ежедневно отслеживает позиции по ключевым словам до 200-го места, следит за конкурентами, отзывами и метаданными, а затем превращает накопленную историю в приоритетную очередь задач по ASO. Этот репозиторий содержит бесплатную версию с открытым исходным кодом, которую можно запустить на собственном сервере.
Каждый запрос к магазину выполняется непосредственно на машине, где размещён AsoBeast, как обычный публичный поисковый запрос или запрос страницы, поэтому Apple и Google видят каждую отслеживаемую фразу так же, как любой другой поисковый запрос. Вам не нужно регистрироваться у стороннего ASO-провайдера, покупать API-ключ или передавать стороннему ASO-сервису информацию о том, какие ключевые слова вы отслеживаете. За исключением этих запросов к магазинам, ваши данные остаются внутри вашего развёртывания, если только вы явно не включите внешнюю интеграцию, например webhook-уведомления, электронную почту, помощь OpenAI, данные о популярности запросов из Apple Ads или обновления статуса магазинов.
AsoBeast на GitHub: https://github.com/AsoBeast/asobeast
Платформа: ASO
⭐️: 53
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Dari — инспектор взаимодействия WebView bridge для Android
Dari — это библиотека-инспектор для отладки взаимодействия через Android WebView bridge, вдохновлённая Chucker. Она перехватывает и отображает все сообщения WebView ↔️ App bridge в постоянном уведомлении и во встроенном интерфейсе приложения, не требуя изменений существующей логики бриджа.
Возможности:
• Перехват в реальном времени сообщений Web→App и App→Web
• Отслеживание трёх состояний: IN_PROGRESS, SUCCESS, ERROR
• Поддержка тёмной темы
• Жест встряхивания для открытия инспектора
• Фильтр по статусу, чтобы сосредоточиться на ошибках или незавершённых вызовах
• Экспорт перехваченных сообщений в JSON
• Опциональная инспекция Protocol Buffers с декодером, предоставляемым приложением
• No-op модуль (dari-noop) для release-сборок без дополнительных затрат во время выполнения
• Поддержка вызовов fire-and-forget для одностороннего взаимодействия через бридж
• Одинаковый публичный API для debug- и release-артефактов
Dari на GitHub: https://github.com/easyhooon/dari
Платформа: Android
⭐️: 35
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Dari — это библиотека-инспектор для отладки взаимодействия через Android WebView bridge, вдохновлённая Chucker. Она перехватывает и отображает все сообщения WebView ↔️ App bridge в постоянном уведомлении и во встроенном интерфейсе приложения, не требуя изменений существующей логики бриджа.
Возможности:
• Перехват в реальном времени сообщений Web→App и App→Web
• Отслеживание трёх состояний: IN_PROGRESS, SUCCESS, ERROR
• Поддержка тёмной темы
• Жест встряхивания для открытия инспектора
• Фильтр по статусу, чтобы сосредоточиться на ошибках или незавершённых вызовах
• Экспорт перехваченных сообщений в JSON
• Опциональная инспекция Protocol Buffers с декодером, предоставляемым приложением
• No-op модуль (dari-noop) для release-сборок без дополнительных затрат во время выполнения
• Поддержка вызовов fire-and-forget для одностороннего взаимодействия через бридж
• Одинаковый публичный API для debug- и release-артефактов
Dari на GitHub: https://github.com/easyhooon/dari
Платформа: Android
⭐️: 35
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Измеряя незримое: что и как измерять в мобильной разработке (часть 2)
В прошлой статье мы рассмотрели несколько базовых метрик. В этой части поговорим о менее очевидных, но не менее полезных критериях и способах измерения различных аспектов мобильной разработки. Тема не новая, однако получила новый импульс благодаря развитию и широкому внедрению искусственного интеллекта (ИИ).
Статья: https://habr.com/ru/companies/domclick/articles/1090382/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В прошлой статье мы рассмотрели несколько базовых метрик. В этой части поговорим о менее очевидных, но не менее полезных критериях и способах измерения различных аспектов мобильной разработки. Тема не новая, однако получила новый импульс благодаря развитию и широкому внедрению искусственного интеллекта (ИИ).
Статья: https://habr.com/ru/companies/domclick/articles/1090382/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS Ru) Анатомия LazyVStack. Проблемы, скрытые возможности, оптимизации•
(iOS Ru) Влияние температурного режима на UX в iOS-приложениях•
(iOS En) iPhone Duo Group Lab + iPhone Duo Group Lab•
(iOS En) Top 6 Swift Concurrency Interview Questions Explained•
(iOS En) Animated Launch Screen With OnBoarding View Using SwiftU•
(iOS En) AI is now really good at building iOS apps•
(iOS En) iPhone Duo Is Here - What Happens to Your Existing iOS•
(iOS En) SwiftUI Animated App Theme Switcher•
(And Ru) 1 байт вместо 32: анатомия ScatterMap•
(And Ru) 15 лет Kotlin: ретроспектива•
(And Ru) А вы можете сказать, что все-таки такое «корутина» в Kotlin?•
(And En) From Android to QuakeCon: What 90s Game Engines Teach Us About Extreme Optimization•
(Crs Ru) Как превратить абстрактную задачу в оптимизационную на примере KMP-движка коллажей•
(Crs Ru) Swift для Android и кроссплатформы. Разбираем на практике•
(Crs Ru) CMP на ОС Аврора: с нуля до альфы•
(Crs Ru) Пробуем Сompose-alpha для ОС Аврора•
(Crs Ru) Под капотом изолятов и Garbage Collector Dart VM•
(Crs Ru) KMP Contest Winners | KotlinConfersations 2026•
(Dev Ru) Метрики плавности мобильных приложений•
(Dev Ru) Первый бескомпромиссный SDUI•
(Dev Ru) Разработчик вышел из кода•
(Dev Ru) Вуз в эпоху ИИ — развод на 4 года?•
(Dev Ru) Koog — твой друг: специализированный агент на Kotlin•
(Dev En) Line-by-line review of AI code is a mistake•
(Dev En) I didn't know I needed this new AI model so badly•
(Dev En) Design Software Systems Like a Senior Engineer – Complete CourseПрошлогодние видео:
•
(And Ru) Семантический Gradle: публикуем артефакты со спокойствием и уверенностью•
(Dev Ru) Собеседование DS инженера в Авито: ML system design (все собеседования)Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Как фронтенд‑команде сделать мобильное приложение без нативных разработчиков
Нашей команде поставили задачу разработать мобильное приложение для iOS и Android. Нативных разработчиков на Swift и Kotlin в команде нет, зато половина хорошо знает Vue. Поэтому я как лид выбрал Vue и Capacitor — фреймворк, который упаковывает обычное веб‑приложение в нативную оболочку и даёт доступ к функциям телефона через JavaScript‑плагины.
Статья: https://habr.com/ru/articles/1094782/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Нашей команде поставили задачу разработать мобильное приложение для iOS и Android. Нативных разработчиков на Swift и Kotlin в команде нет, зато половина хорошо знает Vue. Поэтому я как лид выбрал Vue и Capacitor — фреймворк, который упаковывает обычное веб‑приложение в нативную оболочку и даёт доступ к функциям телефона через JavaScript‑плагины.
Статья: https://habr.com/ru/articles/1094782/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Blueprint - генерация отладочных иконок
Blueprint - небольшая CLI-утилита для iOS/macOS-разработки, которая автоматически превращает обычную иконку приложения в blueprint-версию для Debug-сборок, примерно в стиле иконки Xcode. Главная идея: чтобы тестовую/отладочную сборку на устройстве было сразу видно и не перепутать с продакшеном.
Она умеет работать как с новыми файлами Icon Composer
Blueprint на GitHub: https://github.com/MustafaNatur/blueprint
Платформа: iOS
⭐️: 114
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Blueprint - небольшая CLI-утилита для iOS/macOS-разработки, которая автоматически превращает обычную иконку приложения в blueprint-версию для Debug-сборок, примерно в стиле иконки Xcode. Главная идея: чтобы тестовую/отладочную сборку на устройстве было сразу видно и не перепутать с продакшеном.
Она умеет работать как с новыми файлами Icon Composer
.icon, так и с обычными AppIcon.appiconset. На выходе она создаёт отдельную иконку вроде AppIconDebug.icon или AppIconDebug.appiconset, после чего её можно назначить для Debug-конфигурации через ASSETCATALOG_COMPILER_APPICON_NAME. Исходную иконку библиотека не перезаписывает. Blueprint на GitHub: https://github.com/MustafaNatur/blueprint
Платформа: iOS
⭐️: 114
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я проектирую SwiftUI-приложения с Swift Concurrency, чтобы компилятор не выдавал предупреждений
Структурирование SwiftUI-приложения для меня всегда сводилось к одним и тем же целям: хорошо организованный код, компоненты, каждый из которых выполняет одну задачу, и приложение, которое остаётся поддерживаемым по мере роста. Я хочу быстро находить нужные вещи, менять одну функцию, не ломая остальные, и использовать превью без зависимости от сервера.
Swift concurrency добавила ко всему этому ещё одну проблему, и довольно болезненную. Как только появляются сеть, кэширование или аутентификация, компилятор начинает жаловаться. Ошибки
Работает. В этой статье я покажу, как структурирую свои SwiftUI-приложения, чтобы они оставались организованными и удобными в поддержке, а SwiftUI и Swift concurrency работали вместе, а не друг против друга.
Статья: https://apptractor.ru/info/articles/kak-ya-proektiruyu-swiftui-prilozheniya-s-swift-concurrency.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Структурирование SwiftUI-приложения для меня всегда сводилось к одним и тем же целям: хорошо организованный код, компоненты, каждый из которых выполняет одну задачу, и приложение, которое остаётся поддерживаемым по мере роста. Я хочу быстро находить нужные вещи, менять одну функцию, не ломая остальные, и использовать превью без зависимости от сервера.
Swift concurrency добавила ко всему этому ещё одну проблему, и довольно болезненную. Как только появляются сеть, кэширование или аутентификация, компилятор начинает жаловаться. Ошибки
Sendable, ошибки изоляции main actor, предупреждения о гонках данных. Добавляешь где-нибудь @MainActor, и новая ошибка появляется уже в другом месте. В какой-то момент начинаешь задаваться вопросом: Swift concurrency вообще нормально работает со SwiftUI? И если да, то как нужно структурировать приложение, чтобы они не конфликтовали друг с другом?Работает. В этой статье я покажу, как структурирую свои SwiftUI-приложения, чтобы они оставались организованными и удобными в поддержке, а SwiftUI и Swift concurrency работали вместе, а не друг против друга.
Статья: https://apptractor.ru/info/articles/kak-ya-proektiruyu-swiftui-prilozheniya-s-swift-concurrency.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Mac.apk - запуск Android-приложений нативно на Apple Silicon
Mac.apk запускает Android-приложения непосредственно на Apple Silicon. Приложения стартуют как обычные процессы macOS, отрисовывают графику через GPU Mac и выполняются на CPU с нативной скоростью. Они появляются в Dock, получают собственные окна с кнопкой «Назад» рядом со стандартными кнопками управления окном, могут менять размер и ориентацию как обычные окна macOS и автоматически переключаются между светлой и тёмной темой вместе с Mac. Android TV-приложениями можно управлять с клавиатуры, а игровые лаунчеры способны запускать другие установленные приложения.
Здесь нет ни эмулятора, ни виртуальной машины. В фоне не загружается Android, под системой не работает ядро Linux, а инструкции не интерпретируются одна за другой. Mac.apk напрямую реализует среду выполнения Android-приложений поверх macOS.
Mac.apk на GitHub: https://github.com/kksimp/Mac.apk
Платформа: Android
⭐️: 901
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Mac.apk запускает Android-приложения непосредственно на Apple Silicon. Приложения стартуют как обычные процессы macOS, отрисовывают графику через GPU Mac и выполняются на CPU с нативной скоростью. Они появляются в Dock, получают собственные окна с кнопкой «Назад» рядом со стандартными кнопками управления окном, могут менять размер и ориентацию как обычные окна macOS и автоматически переключаются между светлой и тёмной темой вместе с Mac. Android TV-приложениями можно управлять с клавиатуры, а игровые лаунчеры способны запускать другие установленные приложения.
Здесь нет ни эмулятора, ни виртуальной машины. В фоне не загружается Android, под системой не работает ядро Linux, а инструкции не интерпретируются одна за другой. Mac.apk напрямую реализует среду выполнения Android-приложений поверх macOS.
Mac.apk на GitHub: https://github.com/kksimp/Mac.apk
Платформа: Android
⭐️: 901
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Swift на Android: путь к сингулярности. От анонса SwiftJava до полноценного приложения
Сегодня мы с вами обсудим наработки от Apple. Какую технологию они представили еще в 2025 году, что изменилось со времени, как Apple выпустили официальный релиз Swift SDK для Android. А также мы посмотрим, как написать настоящее приложение, где вся бизнес-логика живёт на Swift, а UI на Compose.
Статья в двух частях: первая и вторая
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня мы с вами обсудим наработки от Apple. Какую технологию они представили еще в 2025 году, что изменилось со времени, как Apple выпустили официальный релиз Swift SDK для Android. А также мы посмотрим, как написать настоящее приложение, где вся бизнес-логика живёт на Swift, а UI на Compose.
Статья в двух частях: первая и вторая
Платформа: кроссплатформа
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Гравицапа для GPU: OpenGL ES на Kotlin DSL на примере 3D‑«Жизни» Конвея
Наконец‑то я закончил работу над новым большим блоком RedByteFX, тем самым, который в планах звучал скромно: «а ещё было бы неплохо OpenGL ES». «Неплохо» растянулось на много вечеров и вылилось в версию 1.2.0, которая уже лежит в Maven Central. Если коротко: теперь на Kotlin DSL можно писать не только эффекты для Compose, но и полноценную 3D‑графику и вычисления на GPU. Если подробно, то читайте дальше: я покажу всё на живом примере и сравню с тем, как пришлось бы писать без библиотеки.
Статья: https://habr.com/ru/articles/1095948/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Наконец‑то я закончил работу над новым большим блоком RedByteFX, тем самым, который в планах звучал скромно: «а ещё было бы неплохо OpenGL ES». «Неплохо» растянулось на много вечеров и вылилось в версию 1.2.0, которая уже лежит в Maven Central. Если коротко: теперь на Kotlin DSL можно писать не только эффекты для Compose, но и полноценную 3D‑графику и вычисления на GPU. Если подробно, то читайте дальше: я покажу всё на живом примере и сравню с тем, как пришлось бы писать без библиотеки.
Статья: https://habr.com/ru/articles/1095948/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Производительность SwiftUI: как находить перерисовки в Xcode Instruments
Проблемы с производительностью SwiftUI часто сводятся к двум вещам: представления либо перерисовываются слишком часто, либо их
В этой статье я покажу, как находить перерисовки SwiftUI и измерять их стоимость в Xcode Instruments. Мы запишем трассировку с шаблоном SwiftUI, изучим дорожку SwiftUI и представления View Body Updates, чтобы увидеть, какое представление сколько раз обновляется, сколько занимает каждое обновление и что именно его вызвало. Если вы раньше пользовались
Статья: https://apptractor.ru/info/articles/proizvoditelnost-swiftui-kak-nahodit-pererisovki-v-xcode-instruments.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Проблемы с производительностью SwiftUI часто сводятся к двум вещам: представления либо перерисовываются слишком часто, либо их
body выполняется слишком долго. Прежде чем что-то исправлять, нужно понять, какие именно представления виноваты и что вызывает их обновление. Xcode Instruments способен показать это довольно точно — если знать, где смотреть.В этой статье я покажу, как находить перерисовки SwiftUI и измерять их стоимость в Xcode Instruments. Мы запишем трассировку с шаблоном SwiftUI, изучим дорожку SwiftUI и представления View Body Updates, чтобы увидеть, какое представление сколько раз обновляется, сколько занимает каждое обновление и что именно его вызвало. Если вы раньше пользовались
Self._printChanges(), то Instruments — следующий шаг, когда нужно понять, сколько эти перерисовки реально стоят.Статья: https://apptractor.ru/info/articles/proizvoditelnost-swiftui-kak-nahodit-pererisovki-v-xcode-instruments.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
SimulatorCamera - камера для iOS-симулятора
У iOS Simulator никогда не было настоящей камеры.
SimulatorCamera регистрирует виртуальную камеру на системном уровне macOS с помощью API Apple
Что вы получаете:
• Веб-камера Mac → iOS Simulator — существующее приложение получает кадры с частотой 30 FPS и разрешением 1280×720
• Видео как источник — можно использовать любой MP4 / MOV / HEVC, воспроизведение зацикливается без разрывов
• Статичное изображение как источник — выберите PNG / JPG, и оно станет видеопотоком камеры
• Генератор QR-кодов — программная генерация QR для тестирования сканеров
• Тестовый шаблон — встроенные цветные полосы / движущаяся полоса, всегда доступны
• CLI
• Никакого SDK — вашему iOS-приложению не нужно импортировать или линковать что-либо из этого проекта
• Физическое устройство не требуется — всё работает целиком внутри iOS Simulator
• Бесплатно, открытый исходный код, лицензия MIT — можно форкать, распространять, продавать, никаких отчислений
SimulatorCamera на GitHub: https://github.com/dautovri/SimulatorCamera
Платформа: iOS
⭐️: 59
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
У iOS Simulator никогда не было настоящей камеры.
AVCaptureDevice возвращает nil. Любое приложение, которое работает с камерой — сканеры QR-кодов, считыватели штрихкодов, захват документов, ML-конвейеры, AR-прототипы, видеозвонки, — либо подменяет работу камеры заглушкой, либо запускается только на физических устройствах, либо содержит ненадёжный запасной вариант вроде «использовать фото вместо камеры».SimulatorCamera регистрирует виртуальную камеру на системном уровне macOS с помощью API Apple
CMIOExtension. iOS Simulator в Xcode 16+ видит эту виртуальную камеру через стандартный AVFoundation. Ваш существующий код с AVCaptureSessionпросто работает. Никакой интеграции SDK. Никаких изменений в Info.plist. Никаких веток #if targetEnvironment(simulator).Что вы получаете:
• Веб-камера Mac → iOS Simulator — существующее приложение получает кадры с частотой 30 FPS и разрешением 1280×720
• Видео как источник — можно использовать любой MP4 / MOV / HEVC, воспроизведение зацикливается без разрывов
• Статичное изображение как источник — выберите PNG / JPG, и оно станет видеопотоком камеры
• Генератор QR-кодов — программная генерация QR для тестирования сканеров
• Тестовый шаблон — встроенные цветные полосы / движущаяся полоса, всегда доступны
• CLI
simcamctl — например, simcamctl set-source --qr "TOKEN" для CI и ИИ-агентов• Никакого SDK — вашему iOS-приложению не нужно импортировать или линковать что-либо из этого проекта
• Физическое устройство не требуется — всё работает целиком внутри iOS Simulator
• Бесплатно, открытый исходный код, лицензия MIT — можно форкать, распространять, продавать, никаких отчислений
SimulatorCamera на GitHub: https://github.com/dautovri/SimulatorCamera
Платформа: iOS
⭐️: 59
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - dautovri/SimulatorCamera: Plug a real camera, a video file, or your screen into the iOS Simulator. Finally.
Plug a real camera, a video file, or your screen into the iOS Simulator. Finally. - dautovri/SimulatorCamera
Как Grab сократил ANR на 32% и улучшил время запуска на 35% благодаря R8
Grab — ведущий суперапп Юго-Восточной Азии, который предлагает доставку, транспортные и финансовые услуги миллионам пользователей в восьми странах через одно приложение. За 10 лет кодовая база выросла до более чем 10 млн строк кода и сотен сторонних библиотек, а сборка использовала гибридную связку Bazel и Gradle. В итоге команда столкнулась с тремя растущими проблемами: высоким уровнем ошибок Application Not Responding (ANR), постоянно увеличивающимся размером приложения и постепенно ухудшающимся временем запуска. Включив оптимизацию R8, доработав keep rules и внедрив Baseline Profiles и Startup Profiles, Grab снизил воспринимаемый пользователями уровень ANR на 32%, уменьшил размер загрузки приложения примерно на 30% и ускорил запуск на 35%.
Статья: https://apptractor.ru/info/articles/kak-grab-sokratil-anr-na-32-i-uluchshil-vremya-zapuska-na-35-blagodarya-r8.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Grab — ведущий суперапп Юго-Восточной Азии, который предлагает доставку, транспортные и финансовые услуги миллионам пользователей в восьми странах через одно приложение. За 10 лет кодовая база выросла до более чем 10 млн строк кода и сотен сторонних библиотек, а сборка использовала гибридную связку Bazel и Gradle. В итоге команда столкнулась с тремя растущими проблемами: высоким уровнем ошибок Application Not Responding (ANR), постоянно увеличивающимся размером приложения и постепенно ухудшающимся временем запуска. Включив оптимизацию R8, доработав keep rules и внедрив Baseline Profiles и Startup Profiles, Grab снизил воспринимаемый пользователями уровень ANR на 32%, уменьшил размер загрузки приложения примерно на 30% и ускорил запуск на 35%.
Статья: https://apptractor.ru/info/articles/kak-grab-sokratil-anr-na-32-i-uluchshil-vremya-zapuska-na-35-blagodarya-r8.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Sketchy - рисованные анимированные иллюстрации и empty states для Compose Multiplatform
Sketchy — это библиотека Kotlin Multiplatform с иллюстрациями в стиле набросков и линейной графики — тёплыми, «человечными» изображениями, которые хорошо подходят для онбординга и пустых состояний. Все они полностью рисуются через
Sketchy на GitHub: https://github.com/Ali0092/Sketchy
Платформа: Android/кроссплатформа
⭐️: 39
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Sketchy — это библиотека Kotlin Multiplatform с иллюстрациями в стиле набросков и линейной графики — тёплыми, «человечными» изображениями, которые хорошо подходят для онбординга и пустых состояний. Все они полностью рисуются через
Canvas, изначально поддерживают анимацию и полностью настраиваются под тему вашего приложения. Библиотека работает на Android, iOS, desktop и web из одного source set commonMain.Sketchy на GitHub: https://github.com/Ali0092/Sketchy
Платформа: Android/кроссплатформа
⭐️: 39
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1
UIKit говорит, что интерфейс уже RTL. Почему тогда половина экрана осталась LTR?
Представьте: пользователь переключает язык приложения с английского на арабский. Интерфейс перестраивается, кнопки меняются местами, навигация переезжает на другую сторону. Вроде всё работает.
Но затем открываешь следующий экран и замечаешь, что стрелка Back смотрит не туда. Возвращаешься назад, открываешь форму, а текстовое поле ведёт себя странно при вводе латиницы. Ещё одно переключение языка, и часть интерфейса снова оказывается в LTR.
Статья: https://habr.com/ru/articles/1097336/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Представьте: пользователь переключает язык приложения с английского на арабский. Интерфейс перестраивается, кнопки меняются местами, навигация переезжает на другую сторону. Вроде всё работает.
Но затем открываешь следующий экран и замечаешь, что стрелка Back смотрит не туда. Возвращаешься назад, открываешь форму, а текстовое поле ведёт себя странно при вводе латиницы. Ещё одно переключение языка, и часть интерфейса снова оказывается в LTR.
Статья: https://habr.com/ru/articles/1097336/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Прощай,
Apple наконец заменила самый пугающий файл в каждом iOS-репозитории. Вот что изменилось, как перейти на новый формат и стоит ли это делать — с объяснениями для джунов, сеньоров и тимлидов.
Статья: https://apptractor.ru/info/articles/proschay-project-pbxproj-zdravstvuy-json-krupneyshee-izmenenie-xcode-za-30-let.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
project.pbxproj, здравствуй, JSON: крупнейшее изменение Xcode за 30 летApple наконец заменила самый пугающий файл в каждом iOS-репозитории. Вот что изменилось, как перейти на новый формат и стоит ли это делать — с объяснениями для джунов, сеньоров и тимлидов.
Статья: https://apptractor.ru/info/articles/proschay-project-pbxproj-zdravstvuy-json-krupneyshee-izmenenie-xcode-za-30-let.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM