Skip to content

nsleader/icode

Repository files navigation

iCode - iOS Development Tools for VS Code / Cursor

Platform Xcode VS Code License

iCode — расширение для VS Code и Cursor, которое превращает ваш редактор в полноценную среду разработки iOS приложений. Собирайте, запускайте и отлаживайте iOS проекты без необходимости переключаться в Xcode.

✨ Основные возможности

  • 🎯 Выбор схемы и таргета — быстрое переключение между схемами проекта
  • 📱 Поддержка симуляторов и устройств — запуск на любом доступном iOS симуляторе или подключённом устройстве
  • ⚙️ Конфигурации сборки — поддержка Debug, Release и кастомных конфигураций
  • 🔨 Сборка проекта — интеграция с xcodebuild и красивый вывод через xcbeautify
  • ▶️ Запуск приложения — автоматическая установка и запуск с подключением к консоли
  • 🐛 Отладка — интеграция с LLDB через CodeLLDB с поддержкой Swift типов
  • 🔍 Swift индексация — интеграция с SourceKit-LSP через xcode-build-server
  • 📊 Status Bar — удобные элементы управления прямо в статус-баре

📋 Требования

  • macOS (обязательно)
  • Xcode 15+ с установленными Command Line Tools
  • VS Code 1.85+ или Cursor
  • Node.js 18+ (для разработки)

Рекомендуемые инструменты

# Красивый вывод сборки (рекомендуется)
brew install xcbeautify

# Swift индексация (для автодополнения)
brew install xcode-build-server

Рекомендуемые расширения

  • CodeLLDB — для отладки iOS приложений:
  • Swift — поддержка языка Swift:
    • VS Code: Swift (swiftlang)
    • Cursor: официальное расширение обновляется с задержкой, рекомендуется swift-vscode (chrisatwindsurf) — сравните версии и выберите актуальную

🚀 Установка

Способ 1: Из VSIX файла

  1. Скачайте файл icode-1.0.0.vsix
  2. Откройте VS Code / Cursor
  3. Нажмите Cmd+Shift+P → введите "Install from VSIX"
  4. Выберите скачанный файл

Способ 2: Сборка из исходников

# Клонируйте репозиторий
git clone https://github.com/nsleader/icode.git
cd icode

# Установите зависимости
npm install

# Соберите и упакуйте
npm run compile
npm run package

# Установите расширение
code --install-extension icode-1.0.0.vsix

📖 Использование

Быстрый старт

  1. Откройте iOS проект в VS Code / Cursor
  2. Расширение активируется автоматически при обнаружении .xcodeproj или .xcworkspace
  3. В статус-баре появятся элементы управления:
[📄 Select Scheme] [📱 Select Target] [🐛 Debug] [🔨 Build] [▶️ Run]

Пошаговый пример

Шаг 1: Выберите схему

Нажмите на 📄 Select Scheme в статус-баре или выполните команду:

Cmd+Shift+P → iCode: Select Scheme

Выберите проект (если их несколько) и схему из списка.

Шаг 2: Выберите симулятор/устройство

После выбора схемы автоматически откроется список доступных симуляторов и устройств:

📱 Simulators
  ├── iPhone 16 Pro (iOS 26.2)
  ├── iPhone 15 (iOS 26.1)
  └── iPad Pro (iOS 18.2)

📲 Devices
  └── Ivan's iPhone (iOS 26.1)

Шаг 3: Выберите конфигурацию

Выберите конфигурацию сборки (Debug, Release или кастомную):

🐛 Debug     — для разработки и отладки
📦 Release   — для тестирования и публикации

Шаг 4: Соберите и запустите

  • Build (Cmd+Shift+P → iCode: Build Project) — только сборка
  • Run (Cmd+Shift+P → iCode: Build & Run) — сборка + запуск

При запуске:

  1. Проект собирается с выбранной конфигурацией
  2. Симулятор запускается автоматически
  3. Приложение устанавливается и запускается
  4. Консольный вывод отображается в терминале

💡 Совет: Закройте терминал, чтобы остановить приложение.

Настройка Swift индексации

Для работы автодополнения и навигации по коду:

Cmd+Shift+P → iCode: Configure Swift Index (SourceKit-LSP)

Команда создаст файл buildServer.json в корне проекта для интеграции с SourceKit-LSP. Не забудьте добавить его в .gitignore

⚠️ Важно: После настройки индексации необходимо собрать проект, чтобы xcode-build-server получил информацию о структуре проекта.

⌨️ Доступные команды

Команда Описание
iCode: Select Scheme Выбор проекта и схемы
iCode: Select Simulator/Device Выбор симулятора или устройства
iCode: Select Configuration Выбор конфигурации (Debug/Release)
iCode: Build Project Сборка проекта
iCode: Build & Run Сборка и запуск приложения
iCode: Configure Swift Index Настройка индексации для SourceKit-LSP
iCode: Resolve SPM Dependencies Предварительный резолв SPM-зависимостей
iCode: Configure Debug (LLDB) Настройка отладки через CodeLLDB

⚙️ Настройки и параметры

Оптимизация сборки

Настройки доступны в Settings → Extensions → iCode:

Настройка По умолчанию Описание
icode.build.skipMacroValidation true Пропуск валидации Swift макросов (Xcode 15+)
icode.build.parallelizeTargets true Параллельная сборка независимых таргетов
icode.build.disableAutoPackageResolution false Отключить автоматический резолв SPM-зависимостей

💡 Совет по SPM: Если сборка долго резолвит зависимости, выполните команду iCode: Resolve SPM Dependencies один раз, затем включите disableAutoPackageResolution. Это значительно ускорит повторные сборки.

Отладка (LLDB)

Для настройки отладки выполните:

Cmd+Shift+P → iCode: Configure Debug (LLDB)

Команда создаст:

  • .vscode/launch.json — конфигурации отладки
  • .vscode/settings.json — путь к LLDB из Xcode (для поддержки Swift типов)

Workflow отладки:

  1. iCode: Build & Run — запустить приложение
  2. F5 → выбрать Debug <Scheme> (Wait for Process) или (Attach)
  3. LLDB подключится к процессу

💡 При смене схемы launch.json обновляется автоматически.

Требование: Установите расширение CodeLLDB (см. Рекомендуемые расширения) — оно используется как debug adapter.

Автоактивация

Расширение автоматически активируется при открытии папки, содержащей:

  • *.xcodeproj/project.pbxproj
  • *.xcworkspace/contents.xcworkspacedata

Сохранение состояния

Выбранные схема, таргет и конфигурация сохраняются между сессиями для каждого workspace.

Интеграция с xcbeautify

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

Поддерживаемые платформы

  • iOS Simulator — полная поддержка (сборка, установка, запуск с консолью)
  • iOS Device — полная поддержка через xcrun devicectl (Xcode 15+)

🔧 Устранение неполадок

Расширение не активируется

Проблема: Элементы в статус-баре не появляются.

Решение:

  1. Убедитесь, что открыта папка с iOS проектом
  2. Проверьте, что в папке есть .xcodeproj или .xcworkspace
  3. Перезагрузите окно: Cmd+Shift+P → Reload Window

Ошибка "No schemes found"

Проблема: При выборе схемы список пуст.

Решение:

# Проверьте, что xcodebuild работает
xcodebuild -list -project YourProject.xcodeproj

# Если ошибка, попробуйте открыть проект в Xcode
# и дождитесь завершения индексации

Ошибка сборки "Command Line Tools not found"

Решение:

# Установите Command Line Tools
xcode-select --install

# Или укажите путь к Xcode
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Приложение не запускается на симуляторе

Проблема: Сборка успешна, но приложение не запускается.

Решение:

  1. Проверьте, что симулятор не завис:
    xcrun simctl shutdown all
    xcrun simctl erase all  # Осторожно: удалит все данные симуляторов
  2. Попробуйте другой симулятор

SourceKit-LSP не работает

Проблема: Нет автодополнения и навигации по коду.

Решение:

  1. Установите xcode-build-server:
    brew install xcode-build-server
  2. Выполните iCode: Configure Swift Index
  3. Соберите проект (iCode: Build Project)
  4. Перезагрузите окно (Cmd+Shift+P → Reload Window)

Ошибка "Loading the standard library failed"

Проблема: SourceKit-LSP не может найти стандартную библиотеку.

Решение:

  1. Соберите проект через Xcode хотя бы один раз
  2. Убедитесь, что выбрана правильная версия Xcode:
    xcode-select -p
    # Должно показать /Applications/Xcode.app/Contents/Developer

Проблемы с устройством

Проблема: Устройство не отображается в списке.

Решение:

  1. Убедитесь, что устройство разблокировано и доверяет компьютеру
  2. Проверьте подключение:
    xcrun devicectl list devices
  3. Для первого запуска может потребоваться открыть Xcode и подтвердить сертификат разработчика

📁 Структура проекта

icode/
├── src/
│   ├── commands/           # Команды расширения
│   │   ├── selectScheme.ts
│   │   ├── selectSimulator.ts
│   │   ├── selectConfiguration.ts
│   │   ├── build.ts
│   │   ├── run.ts
│   │   ├── configureIndex.ts
│   │   ├── resolvePackages.ts
│   │   └── configureDebug.ts
│   ├── state/
│   │   └── projectState.ts # Управление состоянием
│   ├── utils/
│   │   ├── xcode.ts        # Утилиты для xcodebuild
│   │   ├── simulator.ts    # Работа с симуляторами
│   │   └── exec.ts         # Выполнение команд
│   ├── statusBar.ts        # Элементы статус-бара
│   └── extension.ts        # Точка входа
├── out/                    # Скомпилированный JS
├── package.json
├── tsconfig.json
└── README.md

🤝 Обратная связь и поддержка

Как сообщить о проблеме

При создании issue, пожалуйста, укажите:

  1. Версию macOS и Xcode
  2. Версию VS Code / Cursor
  3. Шаги для воспроизведения проблемы
  4. Логи из Output → iCode (если есть)

📄 Лицензия

MIT License

Copyright (c) 2026 nsleader

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

🙏 Благодарности


Made with ❤️ for iOS developers who prefer VS Code / Cursor

About

VS Code extension for iOS developers

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors