XGRIDSДокументация
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel CyberColor

    • Руководство пользователя LCC Studio

      • Начало работы
      • Версия и обновления
      • Загрузка и установка
      • Обзор интерфейса и навигация
      • Перед реконструкцией
      • Реконструкция модели
      • Реконструкция одиночной модели
      • Объединение карт
      • Воздушно-наземное объединение
      • Воздушная реконструкция
      • Мои модели
      • Другие функции
      • Настройки и учётная запись
      • Конвертер
      • Реконструкция по видео
      • Часто задаваемые вопросы
    • LCC Scene Editor

      • Версия и обновления
      • Учётная запись и вход
      • Обзор продукта и главная страница
      • Интерфейс редактора
      • Режимы навигации по сцене
      • Файл
      • Настройки
      • Операции редактирования
      • Окно
      • Глобальная панель инструментов
      • Ресурсы и свойства
      • Левая панель инструментов
      • Точки обзора
      • Портал
      • Skybox
      • Аннотации
      • Измерение
      • Flythrough
      • Отчёт по сцене
      • 3D Layout
      • Мини-карта
      • Preview Mode (Viewer)
      • Справка
      • Часто задаваемые вопросы
      • Точка появления
    • LCC Model Editor

      • Версия и обновления
      • Руководство пользователя
      • Обзор и интерфейс
      • Операции с файлами
      • Инструменты выбора
      • Редактирование моделей
      • Измерение
      • Цветокоррекция
      • Управление ресурсами
      • Настройки и справка
      • Часто задаваемые вопросы
    • Рекомендации по применению

      • Объединение нескольких крупных моделей 3DGS
  • Plugin & SDK

    • Unreal

      • Введение
      • Быстрый старт — Windows
      • Быстрый старт — Linux
      • Быстрый старт — Quest3
      • Редакции и лицензирование
      • Рендеринг
      • Растеризация Tiled (экспериментально)
      • Визуальные настройки
      • Нормали и освещение
      • Редактирование сцены
      • Параметры производительности
      • Руководство по оптимизации производительности
      • Интеграция со сторонними и движковыми плагинами
      • Прокси-меш
      • Анимация загрузки
      • Коллизии
      • Поддержка системы навигации
      • Поддержка однослойной воды
      • Локализация
      • Частые вопросы
      • Устранение неполадок
      • Журналы и диагностика
      • Свяжитесь с нами
      • Рекомендуемые практики

        • Переосвещение 3DGS с помощью меша LixelStudio
      • Справочник API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Журнал изменений

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Введение в Unity SDK
      • Технические возможности
      • Требования к среде разработки
      • Руководство по быстрому старту для PC
      • Руководство по оптимизации настроек проекта
      • Руководство по разработке для Pico 4 Ultra
      • Руководство по стримингу Pico 4 Ultra с PC
      • Руководство по разработке для Quest 3
      • Руководство по стримингу Quest 3 с PC
      • Руководство по разработке OpenXR
      • Руководство по бизнес-стримингу Pico 4 Ultra
      • Глоссарий
      • FAQ
      • Свяжитесь с нами
      • Руководство по разработке функций

        • Руководство по разработке смешанного рендеринга нескольких сцен
        • Руководство по разработке приёма теней
        • Руководство по разработке освещения в реальном времени
        • Руководство по разработке многокамерного рендеринга
        • Руководство по разработке рендеринга изображений высокого разрешения
        • Руководство по разработке совместимости форматов данных LCC и LCC2
        • Руководство по разработке эффекта загрузки
        • Руководство по разработке переключения режима рендеринга Mip
        • Руководство по разработке привязки к рёбрам и углам
        • Руководство по разработке проецируемых декалей
        • Руководство по разработке видеопроецируемой декали
        • Руководство по разработке подсветки
        • Руководство по разработке обрезки в реальном времени
        • Руководство по разработке коррекции цвета
        • Руководство по разработке получения данных Mesh сцены
        • Руководство по разработке в режиме редактора
        • Руководство по настройке параметров производительности рендеринга
        • Руководство по разработке совместной упаковки приложения и данных
        • Руководство по разработке системы коллизий
        • Руководство по проблемам с разрешениями при разработке на macOS
        • Руководство по разработке компиляции и упаковки для устройств iOS
      • Справочник по API

        • LCCManager
        • Renderer
        • Типы данных
      • Журнал изменений

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

Руководство по проблемам с разрешениями при разработке на macOS

Поскольку LCC Unity SDK использует стороннюю библиотеку декодирования webP, при использовании SDK на macOS вы можете столкнуться с ошибкой «Failed to open xxx.bundle». Это механизм безопасности macOS (Gatekeeper), блокирующий запуск несертифицированных сторонних плагинов, и не имеет отношения ни к Unity, ни к самому SDK.

Это руководство состоит из двух частей:

  • Часть 1: Временное решение проблем с разрешениями сторонних библиотек в среде разработки.
  • Часть 2: Официальное решение при упаковке приложения (для публичного распространения).

Часть 1: Временное решение проблем с разрешениями сторонних библиотек в среде разработки

Следующие методы применяются для быстрого снятия ограничения bundle во время разработки; пробуйте их в порядке приоритета.

Метод 1: Разрешите напрямую в Системных настройках (самый быстрый)

ШагОперация
1Откройте Системные настройки Mac и найдите слева Конфиденциальность и безопасность
2Прокрутите вниз, чтобы найти раздел «Безопасность»
3Найдите запрос «xxx.bundle was blocked from use» и нажмите соседнюю кнопку Allow
4Перезапустите Unity, затем повторно импортируйте или запустите SDK

Метод 2: Удалите атрибут карантина через Терминал (самый тщательный)

macOS добавляет атрибут карантина com.apple.quarantine к файлам, загруженным из сети; вы можете удалить его напрямую командой Терминала.

ШагОперация
1Откройте Launchpad → Другие → Терминал
2Введите команду (сохраните пробел в конце): sudo xattr -rd com.apple.quarantine
3Перетащите файл xxx.bundle, сообщивший об ошибке, прямо в окно Терминала, чтобы автоматически дополнить путь
4Нажмите Enter и введите пароль входа в Mac (не отображается при вводе, это нормально)
5Перезапустите Unity после завершения команды

Совет:

Эта команда требует прав администратора (sudo). На экране ничего не будет отображаться при вводе пароля; просто допечатайте его и нажмите Enter.

Метод 3: Добавьте права на выполнение (дополнительный)

Если методы 1 и 2 всё ещё не работают, добавьте права на выполнение для bundle:

chmod -R 755 /path/to/xxx.bundle

Вы также можете перетащить файл bundle в Терминал для автодополнения пути, нажать Enter и перезапустить Unity.

Метод 4: Проверьте настройки платформы плагина Unity

ШагОперация
1Найдите файл xxx.bundle в окне Project Unity
2Выберите его и посмотрите в окно Inspector
3В Platform Settings отметьте Any Platform или отдельно отметьте Standalone / macOS
4Убедитесь, что Exclude Platform не отмечен
Проверка настроек платформы плагина bundle в Unity Inspector

Отметьте Any Platform или macOS в Platform Settings в Inspector

Метод 5: Временно отключите Gatekeeper (крайний случай)

Предупреждение:

Этот метод снижает безопасность системы. Он рекомендуется только для временного использования на машине разработки; обязательно включите его снова после завершения разработки.

Если ни один из вышеуказанных методов не работает, вы можете временно отключить проверку безопасности системы:

sudo spctl --master-disable

Проверьте, отключена ли она:

spctl --status
# при успешном отключении отображается assessments disabled

Снова включите защиту безопасности после завершения разработки:

sudo spctl --master-enable

Часть 2: Решение проблем с разрешениями сторонних библиотек при упаковке приложения

Чтобы конечные пользователи использовали приложение со сторонним SDK без осознания проблемы, вы должны выполнить «глубокую подпись кода + нотаризацию Apple + привязку Staple-билета» на стороне разработчика. Это единственное соответствующее стандартам решение на macOS с нулевыми операциями пользователя.

Предварительные условия (все обязательны)

№УсловиеОписание
1Apple Developer Program99 USD/год, используется для получения сертификата Developer ID Application
2Включение Hardened RuntimeВ Unity Player Settings → Other Settings → Mac отметьте Use Hardened Runtime
3Настройте уникальный Bundle IDДержите его согласованным с порталом разработчика
4Отключите авто-подпись UnityИспользуйте Терминал для ручной глубокой подписи после упаковки

Полный рабочий процесс подписи и нотаризации

Шаг 1: Очистите расширенные атрибуты

xattr -cr "YourApp.app"

Шаг 2: Глубокая рекурсивная подпись

Параметр --deep автоматически обходит все внутренние файлы .bundle, .dylib и .framework и подписывает их единообразно, полностью решая проблему блокировки сторонних bundle за отсутствие подписи.

codesign --force --deep --options runtime --sign "Developer ID Application: YourCompany (TeamID)" "YourApp.app"

Ключевой момент:

Замените YourCompany (TeamID) на ваш полный Developer ID. Использование --deep гарантирует подпись всех внутренних сторонних bundle — это корень 90% проблем «всё ещё ошибка после подписи».

Шаг 3: Упакуйте стандартный zip для нотаризации

Вы должны использовать команду ditto для упаковки; не используйте системное сжатие правой кнопкой (иначе проверка нотаризации не пройдёт).

ditto -c -k --sequesterRsrc --keepParent "YourApp.app" build.zip

Шаг 4: Загрузите в Apple для нотаризации

Используйте notarytool (официальный новый инструмент) для отправки на нотаризацию; бэкенд Apple автоматически сканирует на вредоносный код:

xcrun notarytool submit build.zip --apple-id your@apple.com --password app-specific-password --team-id TeamID --wait

Подождите, пока не вернётся Accepted, что означает прохождение нотаризации.

Шаг 5: Прикрепите Staple-билет нотаризации к приложению

После прикрепления пользователи смогут пройти проверку даже при открытии офлайн:

xcrun stapler staple "YourApp.app"
# Проверяем, успешно ли
xcrun stapler validate "YourApp.app"

Внутреннее тестирование / распространение в корпоративной интрасети (альтернатива)

Если у вас ещё нет учётной записи разработчика Apple, вы можете распространять в интрасети, используя следующий подход:

ШагОперация
1Unity упаковывает .app
2На машине сборки выполните: xattr -rd com.apple.quarantine "YourApp.app"
3Распространяйте через инструменты интрасети (scp, корпоративное облачное хранилище, USB-накопитель), не загружайте через браузер

Ограничение:

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

Распространённые подводные камни

Распространённая ошибкаПравильный подход
Подписана только основная программа, без --deepНеобходимо использовать --deep для рекурсивной подписи всех внутренних bundle / dylib
Не включён Hardened RuntimeОтметьте его в Player Settings перед упаковкой Unity, иначе нотаризация сразу не пройдёт
Забыли прикрепить билет после нотаризацииНеобходимо выполнить xcrun stapler staple, иначе при офлайн-открытии всё равно отображается диалог
Не очистили расширенные атрибуты перед подписьюСначала выполните xattr -cr, чтобы очистить остаточные атрибуты всех bundle, затем подпишите
Использовано системное сжатие правой кнопкой вместо dittoНеобходимо использовать стандартную упаковку ditto -c -k, иначе проверка нотаризации не пройдёт

Сводка

Единственное стандартное решение для публичного распространения = Apple Developer ID + глубокая codesign + нотаризация notarytool + билет stapler. После завершения пользователи сразу загружают и используют его, без диалога безопасности и без осознания проблемы.