XGRIDSDocs
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Seria Lixel PortalCam

    • PortalCam P1

      • Przegląd produktu
      • Podstawowa obsługa
      • Korzystanie z aplikacji LCC Scan
      • Konserwacja i pielęgnacja
      • FAQ
  • Seria Lixel K

    • Lixel K1

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
    • Lixel K2

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Przebieg skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Fuzja map
      • Zalecenia dotyczące planowania trasy dla typowych scen
      • Środki ostrożności
      • FAQ
  • Seria Lixel L

    • Lixel L2 Pro

      • Przegląd produktu
      • Podstawowa obsługa
      • Aktywacja i połączenie urządzenia
      • Proces skanowania
      • Pozyskiwanie danych chmury punktów ze współrzędnymi bezwzględnymi
      • Punkt pomiarowy
      • Dodatek
      • FAQ
    • Lixel L3

      • Przegląd produktu
      • Podstawowe funkcje urządzenia
      • Aktywacja i połączenie urządzenia
      • Przechwytywanie danych
      • Przechwytywanie współrzędnych bezwzględnych
      • Dodatek
  • Akcesoria

    • Stick Light

      • Przewodnik instalacji
      • Podstawowa obsługa
      • Często zadawane pytania
  • Lixel Studio

    • Wersja i prawa autorskie
    • Instalacja i aktywacja
    • Interfejs oprogramowania
    • Operacje na plikach
    • Przetwarzanie projektu
    • Narzędzia
    • Rysowanie 2D
    • Zastosowania
    • Ustawienia
    • Połączenie z urządzeniem
  • 07-plugin-sdk

    • Unity

      • Wprowadzenie do Unity SDK
      • Funkcje techniczne
      • Wymagania środowiska deweloperskiego
      • Przewodnik szybkiego startu dla PC
      • Przewodnik optymalizacji ustawień projektu
      • Przewodnik deweloperski dla Pico 4 Ultra
      • Przewodnik strumieniowania PC dla Pico 4 Ultra
      • Przewodnik deweloperski dla Quest 3
      • Przewodnik strumieniowania PC dla Quest 3
      • Przewodnik deweloperski dla OpenXR
      • Przewodnik Business Streaming dla Pico 4 Ultra
      • Słownik
      • Często zadawane pytania (FAQ)
      • Skontaktuj się z nami
      • Przewodnik programowania funkcji

        • Przewodnik mieszanego renderowania wielu scen
        • Przewodnik odbierania cieni
        • Przewodnik oświetlenia w czasie rzeczywistym
        • Przewodnik renderowania wielokamerowego
        • Przewodnik renderowania obrazów wysokiej rozdzielczości
        • Przewodnik zgodności formatów danych LCC i LCC2
        • Przewodnik efektu ładowania
        • Przewodnik przełączania trybu renderowania Mip
        • Przewodnik przyciągania do krawędzi i narożników
        • Przewodnik dekala projekcyjnego
        • Przewodnik wideo dekala projekcyjnego
        • Przewodnik podświetlania
        • Przewodnik przycinania w czasie rzeczywistym
        • Przewodnik korekcji kolorów
        • Przewodnik pobierania danych siatki sceny
        • Przewodnik trybu edytora
        • Przewodnik konfiguracji parametrów wydajności renderowania
        • Przewodnik współpakowania aplikacji i danych
        • Przewodnik systemu kolizji
        • Przewodnik problemów z uprawnieniami w deweloperstwie na macOS
        • Przewodnik kompilacji i pakowania na urządzenia iOS
      • Dokumentacja API

        • LCCManager
        • Renderer
        • Typy danych
      • Dziennik zmian

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

Przewodnik problemów z uprawnieniami w deweloperstwie na macOS

Ponieważ LCC Unity SDK używa biblioteki dekodującej webP innej firmy, podczas korzystania z SDK na macOS możesz napotkać błąd „Failed to open xxx.bundle". To mechanizm bezpieczeństwa macOS (Gatekeeper) blokujący uruchamianie niecertyfikowanych wtyczek firm trzecich i nie ma to nic wspólnego z Unity ani samym SDK.

Ten przewodnik ma dwie części:

  • Część 1: Tymczasowe rozwiązywanie problemów z uprawnieniami bibliotek firm trzecich w środowisku deweloperskim.
  • Część 2: Formalne rozwiązanie przy pakowaniu aplikacji (do dystrybucji publicznej).

Część 1: Tymczasowe rozwiązywanie problemów z uprawnieniami bibliotek firm trzecich w środowisku deweloperskim

Poniższe metody dotyczą szybkiego usuwania ograniczenia bundle podczas tworzenia; wypróbuj je w kolejności priorytetu.

Metoda 1: Zezwól bezpośrednio w Ustawieniach systemowych (najszybsza)

KrokOperacja
1Otwórz Ustawienia systemowe na Macu i znajdź Prywatność i bezpieczeństwo po lewej stronie
2Przewiń w dół, aby znaleźć sekcję „Bezpieczeństwo"
3Znajdź komunikat „xxx.bundle was blocked from use" i kliknij sąsiedni przycisk Zezwól
4Uruchom ponownie Unity, a następnie ponownie zaimportuj lub uruchom SDK

Metoda 2: Usuń atrybut kwarantanny przez Terminal (najdokładniejsza)

macOS dodaje atrybut kwarantanny com.apple.quarantine do plików pobranych z sieci; możesz go usunąć bezpośrednio poleceniem Terminala.

KrokOperacja
1Otwórz Launchpad → Inne → Terminal
2Wpisz polecenie (zachowaj końcową spację): sudo xattr -rd com.apple.quarantine
3Przeciągnij plik xxx.bundle, który zgłosił błąd, bezpośrednio do okna Terminala, aby automatycznie uzupełnić ścieżkę
4Naciśnij Enter i wpisz hasło logowania do Maca (nie jest wyświetlane podczas pisania, co jest normalne)
5Uruchom ponownie Unity po zakończeniu polecenia

Wskazówka:

To polecenie wymaga uprawnień administratora (sudo). Ekran nie pokaże nic podczas wpisywania hasła; po prostu dokończ pisanie i naciśnij Enter.

Metoda 3: Dodaj uprawnienia wykonywania (uzupełniająca)

Jeśli metody 1 i 2 nadal nie działają, dodaj uprawnienia wykonywania do bundle:

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

Możesz też przeciągnąć plik bundle do Terminala, aby automatycznie uzupełnić ścieżkę, nacisnąć Enter i uruchomić ponownie Unity.

Metoda 4: Sprawdź ustawienia platformy wtyczki Unity

KrokOperacja
1Znajdź plik xxx.bundle w oknie Projekt w Unity
2Wybierz go i spójrz na okno Inspektor
3W Ustawieniach platformy zaznacz Dowolna platforma lub osobno zaznacz Standalone / macOS
4Upewnij się, że Wyklucz platformę nie jest zaznaczone
Sprawdź ustawienia platformy wtyczki bundle w Inspektorze Unity

Zaznacz Dowolna platforma lub macOS w Ustawieniach platformy w Inspektorze

Metoda 5: Tymczasowo wyłącz Gatekeeper (ostateczność)

Ostrzeżenie:

Ta metoda zmniejsza bezpieczeństwo systemu. Zaleca się ją tylko do tymczasowego użycia na maszynie deweloperskiej; pamiętaj, aby ponownie włączyć ją po zakończeniu tworzenia.

Jeśli żadna z powyższych metod nie działa, możesz tymczasowo wyłączyć weryfikację bezpieczeństwa systemu:

sudo spctl --master-disable

Sprawdź, czy jest wyłączona:

spctl --status
# po pomyślnym wyłączeniu wyświetlane jest „assessments disabled"

Ponownie włącz ochronę bezpieczeństwa po zakończeniu tworzenia:

sudo spctl --master-enable

Część 2: Rozwiązywanie problemów z uprawnieniami bibliotek firm trzecich przy pakowaniu aplikacji

Aby użytkownicy końcowi mogli używać aplikacji zawierającej SDK firmy trzeciej bez odczuwania problemu, musisz po stronie dewelopera ukończyć „głębokie podpisywanie kodu + notaryzację Apple + zszycie biletu Staple". To jedyne zgodne standardowe rozwiązanie na macOS z zerową liczbą operacji po stronie użytkownika.

Wymagania wstępne (wszystkie wymagane)

NrWarunekOpis
1Apple Developer Program99 USD/rok, używany do uzyskania certyfikatu Developer ID Application
2Włącz Hardened RuntimeW Unity Ustawienia odtwarzacza → Inne ustawienia → Mac zaznacz Użyj wzmocnionego środowiska uruchomieniowego
3Skonfiguruj unikalny Bundle IDUtrzymuj spójność z portalem deweloperskim
4Wyłącz automatyczne podpisywanie UnityUżyj Terminala, aby ręcznie głęboko podpisać po spakowaniu

Kompletny przepływ podpisywania i notaryzacji

Krok 1: Wyczyść rozszerzone atrybuty

xattr -cr "YourApp.app"

Krok 2: Głębokie rekurencyjne podpisywanie

Parametr --deep automatycznie przechodzi przez wszystkie wewnętrzne pliki .bundle, .dylib i .framework i podpisuje je jednolicie, dokładnie rozwiązując problem blokowania bundle'ów firm trzecich za brak podpisu.

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

Kluczowy punkt:

Zastąp YourCompany (TeamID) swoim pełnym Developer ID. Użycie --deep zapewnia podpisanie wszystkich wewnętrznych bundle'ów firm trzecich — to główna przyczyna 90% problemów „nadal błąd po podpisaniu".

Krok 3: Spakuj standardowy zip do notaryzacji

Musisz użyć polecenia ditto do pakowania; nie używaj systemowej kompresji prawym przyciskiem (w przeciwnym razie weryfikacja notaryzacji się nie powiedzie).

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

Krok 4: Prześlij do Apple do notaryzacji

Użyj notarytool (oficjalnego nowego narzędzia), aby przesłać do notaryzacji; backend Apple automatycznie skanuje w poszukiwaniu złośliwego kodu:

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

Poczekaj na zwrócenie Accepted, co oznacza, że notaryzacja przeszła.

Krok 5: Zszyj bilet notaryzacji do aplikacji

Po zszyciu użytkownicy mogą przejść weryfikację nawet przy otwieraniu offline:

xcrun stapler staple "YourApp.app"
# Sprawdź, czy się powiodło
xcrun stapler validate "YourApp.app"

Testowanie wewnętrzne / dystrybucja w intranecie przedsiębiorstwa (alternatywa)

Jeśli nie masz jeszcze konta dewelopera Apple, możesz dystrybuować w intranecie przy użyciu następującego podejścia:

KrokOperacja
1Unity pakuje .app
2Na maszynie budującej uruchom: xattr -rd com.apple.quarantine "YourApp.app"
3Dystrybuuj przez narzędzia intranetowe (scp, firmowy dysk chmurowy, dysk USB), nie pobieraj przez przeglądarkę

Ograniczenie:

To podejście dotyczy tylko transferu w intranecie. Pobieranie przez przeglądarkę ponownie doda atrybut kwarantanny, powodując ponowne pojawienie się błędu bundle i nie nadaje się do dystrybucji publicznej.

Typowe pułapki

Typowy błądPrawidłowe podejście
Podpisano tylko program główny, bez --deepNależy użyć --deep, aby rekurencyjnie podpisać wszystkie wewnętrzne bundle / dylib
Nie włączono Hardened RuntimeZaznacz w Ustawieniach odtwarzacza przed pakowaniem Unity, w przeciwnym razie notaryzacja bezpośrednio się nie powiedzie
Zapomniano zszyć bilet po notaryzacjiNależy uruchomić xcrun stapler staple, w przeciwnym razie otwieranie offline nadal pokazuje okno dialogowe
Nie wyczyszczono rozszerzonych atrybutów przed podpisaniemUruchom najpierw xattr -cr, aby wyczyścić pozostałe atrybuty wszystkich bundle'ów, a następnie podpisz
Użyto systemowej kompresji prawym przyciskiem zamiast dittoNależy użyć standardowego pakowania ditto -c -k, w przeciwnym razie weryfikacja notaryzacji się nie powiedzie

Podsumowanie

Jedyne standardowe rozwiązanie dla dystrybucji publicznej = Apple Developer ID + głębokie codesign + notaryzacja notarytool + bilet stapler. Po ukończeniu użytkownicy pobierają i używają natychmiast, bez okna bezpieczeństwa i bez odczuwania problemu.