AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
XcodeProj - работа с проектами Xcode

XcodeProj — это библиотека от Tuist, написанная на Swift, для анализа и работы с файлами проектов Xcode. С ее помощью можно писать скрипты и автоматизировать задачи в проекте. Например, можно создать скрипт, который будет синхронизировать ключ с версией проекта с текущим тегом в Git, представляющим версию проекта.

XcodeProj на GitHub: https://github.com/tuist/XcodeProj
Платформа: iOS
⭐️: 2.2K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📺 Видео и подкасты за неделю

(iOS Ru) Разбор кода: iOS-приложение для медитации на Swift
(iOS En) SwiftUI Animated Tab Icons - Symbol Effects Tab Bar
(iOS En) RichText Notes App - AttributedStrings and SwiftData
(iOS En) Interactive Map Carousel | MapKit | Map Animations | SwiftUI
(And Ru) Как сделать приложение за 10 минут? | FlowMVI Часть 1 - Часть 2 - Часть 3
(And XR) The Android Show | XR Edition
(And XR) Getting started developing on AI Glasses
(And XR) What's new in the Android XR SDK for Unity
(And XR) Designing interfaces for wired XR glasses
(And XR) Designing audio experiences on AI Glasses
(And XR) XR Journey: From Snapdragon Spaces to Android XR
(And XR) Design best practices for display AI Glasses
(And XR) What's new in the Jetpack XR SDK for immersive experiences
(And En) Bring your own model - Android Developers Backstage
(And En) Bottom Nav With Multiple Back Stacks In Navigation3
(And En) Nested Nav Graphs & Shared ViewModels With Navigation3
(And En) FaceCut App - Create Beautiful Portraits in minutes
(Crs En) Why iOS Devs Struggle with KMP (and How to Fix It)
(Dev Ru) Заменит ли AI разработчика
(Dev Ru) SWE-агенты — Пишем код, LLM, автономный ИИ
(Dev Ru) Open Source: альтруизм или скрытая выгода?
(Dev Ru) Как внедрить ИИ в разработку и подружиться с безопасниками
(Dev Ru) Как выявлять баги до первой строчки кода: опыт внедрения тест-анализа и тест-дизайна
(Dev Ru) Как мы делаем больше 10 релизов в день без регресса

Прошлогодние видео:

(And Ru) Полный разбор Kotlin Delegated Property
(Crs Ru) BA x Flutter: взаимодействие отделов, запуск кроссплатформы и почему хорошее ТЗ — бич креативности
(Dev Ru) Карьера и лидерство в IT
(Dev Ru) Вся правда о грейдах, ревью и промоушенах
(Dev Ru) Искусство создания антихрупкого API

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Маленький экран — серьёзный вызов!

В VK мобильные разработчики создают опыт, который помещается в карман, но работает на миллионах устройств. Узнайте об их подходах к сложным задачам и ключевых результатах. По ссылке — ролики и даже вакансии!
9 типичных ошибок в Kotlin Flow, которые вы, вероятно, совершаете.

Автор делится своим опытом, собранным в ходе код-ревью реальных Android-проектов. Он отмечает, что, несмотря на всю мощь Kotlin Flow, разработчики часто сталкиваются с неочевидным поведением, которое может приводить к тихой отмене работы, повторному выполнению ресурсоемких операций или неожиданным проблемам с жизненным циклом. В статье подробно рассматриваются девять распространенных ошибок, каждая из которых сопровождается примерами плохого и хорошего кода и краткими практическими правилами, применимыми в реальной разработке.

Статья: https://medium.com/@af2905g/9-kotlin-flow-mistakes-youre-probably-making-c946ad750452
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
ComposeGuard - обнаружение нарушений правил и лучших практик Jetpack Compose

ComposeGuard — это плагин для IntelliJ/Android Studio, который обеспечивает обнаружение нарушений лучших практик Compose в режиме реального времени во время написания кода. Он анализирует ваши компонуемые функции и выделяет проблемы на основе документации по правилам Compose.

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

ComposeGuard на GitHub: https://github.com/AndroidPoet/compose-guard
Платформа: Android
⭐️: 17

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Создание приложения с меню на Flutter, которое не занимает много памяти

Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.

Статья: https://habr.com/ru/companies/piter/articles/976000/
Платформа: кроссплатформа
👍1
Я уменьшил iOS-приложение с 200 до 8 МБ: побочные эффекты, которых я не ожидал

Уменьшить размер приложения с 200 до 8 МБ — легко.

Жить с последствиями — вот это нелегко.

Это история о том, как я слишком много оптимизировал, слишком поздно это понял и случайно создал один из самых запутанных кошмаров отладки в своей карьере.

Статья: https://apptractor.ru/info/articles/200-8.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2
Cupertino - локальный сканер документации Apple и сервер MCP

Cupertino - инструмент для сканирования, индексирования и предоставления документации Apple для разработчиков агентам искусственного интеллекта через протокол контекста модели (MCP).

Cupertino — это локальная, структурированная, готовая к использованию с ИИ система документации для платформ Apple. Она:

• Сканирует документацию разработчиков Apple, Swift.org, предложения Swift Evolution, рекомендации по проектированию пользовательского интерфейса, устаревшие руководства Apple Archive и метаданные пакетов Swift
• Индексирует всё в быструю, доступную для поиска базу данных SQLite FTS5 с рейтингом BM25
• Предоставляет документацию агентам ИИ, таким как Claude, через протокол контекста модели (MCP)
• Обеспечивает автономный доступ к более чем 302 424 страницам документации для 307 фреймворков

Зачем это нужно?

• Больше никаких галлюцинаций: агенты ИИ получают точную и актуальную документацию по API Apple
• Автономная разработка: работайте с полной документацией без доступа к интернету
• Детерминированный поиск: один и тот же запрос всегда возвращает одинаковые результаты
• Локальный контроль: управляйте своей документацией, проверяйте базу данных, создавайте сценарии рабочих процессов
• Дизайн, ориентированный на ИИ: создан специально для интеграции с агентами ИИ через MCP

Cupertino на GitHub: https://github.com/mihaelamj/cupertino
Платформа: iOS
⭐️: 105
👍2
Улучшение доступности в Android-приложениях

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

Статья: https://apptractor.ru/info/articles/uluchshenie-dostupnosti-v-android-prilozheniyah.html
Платформа: Android
1
Android Gradle Graph Plugin - мониторинг зависимостей проекта

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

Плагин был одним из инструментов для ускорения сборки. Подробнее об опыте ускорения сборки проекта 1Fit можете узнать в докладе.

Android Gradle Graph Plugin на GitHub: https://github.com/Anelkad/gradle-portal-verification-PENLI5B8
Платформа: Android
⭐️: 17


👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🦸‍♀️ "Станьте инженером, использующим искусственный интеллект" - обучающий курс JetBrains и Nebius

В сотрудничестве с облачной платформой Nebius AI компания JetBrains запустила серию из десяти бесплатных мини-курсов для разработчиков, демонстрирующих, как интегрировать ИИ в рабочий процесс, чтобы повысить производительность.

Всего на платформе есть 10 курсов и один Live-урок:

• Техники промптинга
• Программирование с ИИ-агентом
• Теория агентского рабочего процесса
• Обзор ИИ-инструментов для разработчиков
• ИИ-агенты как ваша команда
• Создание собственного ИИ-агента
• ИИ в QA
• Введение в ИИ для DevOps
• Легальные риски использования ИИ для программирования
• Создание приложения с ИИ с нуля
• Лабораторная ИИ разработки

Внутри 25 практических задач, выпускной проект. Предполагаемое время на все - около 20 часов. Все бесплатно. Также есть план за $500, который включает более сложную программу обучения и в итоге позволяет получить сертификат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ускорение CI сборок в Xcode с кэшированием слотов

Я прошел через множество трудностей, чтобы прийти к этому, и нигде не был описан подход, который я в итоге выбрал. Я подозреваю, что это связано с тем, что относительно немногие используют собственную инфраструктуру CI на macOS, что является обязательным требованием для этой конфигурации.

Далее следует полный технический анализ решения, которое я в итоге реализовал, которое я называю кэшированием с подогревом слотов.

Статья: https://apptractor.ru/info/articles/uskorenie-ci-sborok-v-xcode-s-keshirovaniem-slotov.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Snowdrop - простая работа с сетью

Snowdrop — типобезопасный, простой в использовании фреймворк на основе Swift Macros, созданный для того, чтобы вы могли с легкостью создавать и поддерживать сложные сетевые запросы.

Функции:

• Создание типобезопасных сервисов с помощью макроса @Service
• Поддержка различных типов методов запроса (например, @GET, @POST, @PUT, @DELETE, @PATCH, @CONNECT, @HEAD, @OPTIONS и т.п.)
• Пиннинг SSL/сертификатов
• Перехватчики
• Возможность создания мок-объектов

Snowdrop на GitHub: https://github.com/neothXT/Snowdrop
Платформа: iOS
⭐️: 67

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Все не так с Codable

Опыт нашей команды в работе над производительностью показал, что оптимизации базовых технологий и компонентов намного ценнее точечных оптимизаций. Точечные оптимизации очень хрупкие: немного изменится граф инициализации, последовательность выполнения некоторых функций, добавится новый аргумент в конструктор — и все, точечная оптимизация уже не работает или неактуальна.

А такие базовые компоненты, как JSONDecoder/Encoder, используются в iOS-проектах повсеместно, и ускорение их работы дает ощутимое влияние на общую производительность приложений.

Статья: https://habr.com/ru/companies/tbank/articles/977694/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Android UI-тесты с Maestro без тяжелой инфраструктуры

Maestro в Android-проекте: mock flavor, базовые сценарии и локальный прогон UI-тестов через Git pre-push без тяжелой инфраструктуры.

Статья: https://www.codingpas.ru/posts/android-ui-tests-maestro-pre-push/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift

Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции зависимость не используют — они просто передают её дальше. Сигнатуры разбухают, рефакторинг превращается в массовую правку файлов, и значительная часть кода становится техническим шумом.

Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе.

Статья: https://habr.com/ru/companies/yandex/articles/976898/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Я попытался сделать Offline-First приложение, и это чуть не уничтожили проект

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

Мой эксперимент с приоритетом офлайн-подключения должен был быть простым: сделать так, чтобы всё iOS-приложение работало даже при отсутствии сети.

Никаких индикаторов загрузки.

Никаких «пожалуйста, повторите попытку».

Никаких «проверьте ваше соединение».

Просто мгновенный пользовательский интерфейс, локальная запись и фоновая синхронизация, которая волшебным образом всё исправляет, когда восстанавливается сеть.

В теории? Прекрасно.

В реальности? Я случайно открыл финального босса в прохождении архитектуры — конфликты данных.

И не те милые, что описаны в учебниках.

Я говорю о реальных, запутанных, противоречивых ошибках, поступающих от реальных людей, использующих приложение на разных устройствах, способами, которые ни один менеджер по продукту не мог предсказать.

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

Статья: https://apptractor.ru/info/articles/ya-popytalsya-sdelat-offline-first-prilozhenie-i-eto-chut-ne-unichtozhili-proekt.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
MoviQ - умный трекер фильмов

MoviQ помогает вам управлять списком просмотренных фильмов и открывать для себя новые фильмы с помощью ИИ. Отмечайте фильмы как просмотренные, оценивайте свои любимые, и Gemini 2.0 предложит вам, что посмотреть дальше, исходя из ваших предпочтений.

Автор создал MoviQ как справочник для разработчиков Android, ищущих реальные примеры приложений, использующих масштабируемую чистую архитектуру, Jetpack Compose, интеграцию с Firebase и всестороннее тестирование. Это тот тип кода, который мне самому хотелось бы иметь, когда я изучал современную Android-разработку.

Ключевые архитектурные решения:

• Offline-First: Room как единый источник истины с облачной синхронизацией
• Однонаправленный поток данных: паттерн MVI с закрытыми классами
• Внедрение зависимостей: Hilt для внедрения зависимостей на этапе компиляции
• Фоновая синхронизация: WorkManager с разрешением конфликтов
• Паттерн Репозиторий: Абстрагирование источников данных от бизнес-логики
• Паттерн Use Case: Единая ответственность за каждую бизнес-операцию

MoviQ на GitHub: https://github.com/davidthurman/MoviQ/
Платформа: Android
⭐️: 8

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📺 Видео и подкасты за неделю

(iOS Ru) Ставим приложения на iOS через Android
(iOS Ru) А ваше приложение похудело к лету?
(iOS En) Senior iOS Engineer Mock Interview - Hotel Booking System Design
(iOS En) Apple Books Expandable Menu - SwiftUI
(iOS En) Truncated Text Effect - Tap to Expand Text View, Text Animations, Text Renderer - SwiftUI
(iOS En) How I use Codex GPT 5.2 with Xcode (My complete workflow)
(iOS En) App Store Style Toolbar Scroll Effect - Toolbar Header Scroll Effect - SwiftUI
(iOS En) Smarter Lists, Labels, and Dictionary Grouping in SwiftUI
(And Ru) Разработка видеоредактора
(And En) Navigate Back With Result In Navigation3 (CMP & Native Android)
(And En) Scenes & Scene Strategies In Navigation3 (CMP & Native Android)
(And En) Coroutines Need a Scope... and That's a Good Thing!
(Crs Ru) Да кто такой этот ваш 2D-скролл?
(Dev Ru) TransmateSDK — ваш товарищ-полиглот
(Dev Ru) Яндекс обновил процесс найма: что внутри?
(Dev Ru) Сокращения, AI и рынок СНГ: кто останется востребованным в IT
(Dev Ru) Онбординг пользователей — Активация, retention, продуктовая ценность
(Dev Ru) ИИ-агенты в жизненном цикле ПО: от ассистентов к полноценным членам команды
(Dev En) Unity 2D Pixel Art Game Tutorial
(Dev En) Intro to Supabase – Full Tutorial for Beginners
(Dev En) Gemini Flash Native Audio: Build a Voice AI Ordering System in Python

Прошлогодние видео:

(And Ru) Публикация Android и KMP библиотеки в Maven Central
(Crs Ru) Flutter Dev Podcast #49: многомодульность на Flutter
(Dev Ru) Compose и SwiftUI: найди 10 отличий
(Dev Ru) Запускаем мобильные UI-тесты эффективно
(Dev Ru) Как мы писали проигрыватель с нуля под каждую платформу
(Dev Ru) Как ВКонтакте измеряет перфоманс приложений
(Dev Ru) Очевидные и неочевидные дыры безопасности в мобильной разработке
(Dev Ru) Страх и ненависть в мобильных автотестах. Строим своё облачное решение

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI

Cегодня я расскажу, как мы построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.

Статья: https://habr.com/ru/companies/whoosh/articles/977814/
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1