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

    • PortalCam P1

      • Produktübersicht
      • Grundlegende Bedienung
      • LCC Scan App verwenden
      • Wartung und Pflege
      • FAQ
  • Lixel K-Serie

    • Lixel K1

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
    • Lixel K2

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Kartenfusion
      • Empfehlungen zur Routenplanung für typische Szenen
      • Hinweise
      • FAQ
  • Lixel L-Serie

    • Lixel L2 Pro

      • Produktübersicht
      • Grundlegende Bedienung
      • Geräteaktivierung und -verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Messpunkt
      • Anhang
      • FAQ
    • Lixel L3

      • Produktübersicht
      • Grundlegende Bedienung
      • Aktivierung und Verbindung
      • Scan-Workflow
      • Punktwolke mit absoluten Koordinaten erfassen
      • Anhang
  • Zubehör

    • Stick Light

      • Installationsanleitung
      • Grundlegende Bedienung
      • Häufige Fragen
  • Lixel Studio

    • Version und Copyright
    • Installation und Aktivierung
    • Softwareoberfläche
    • Dateioperationen
    • Projektverarbeitung
    • Werkzeuge
    • 2D-Zeichnung
    • Anwendungen
    • Einstellungen
    • Geräteverbindung
    • Häufige Fragen
  • Lixel CyberColor

    • LCC Studio

      • Erste Schritte
      • Version und Updates
      • Download und Installation
      • Oberfläche und Navigation
      • Vor der Rekonstruktion
      • Modellrekonstruktion
      • Einzelmodell-Rekonstruktion
      • Kartenfusion
      • Boden-Luft-Fusion
      • Luftbild-Rekonstruktion
      • Meine Modelle
      • Weitere Funktionen
      • Einstellungen und Konto
      • Converter
      • Videorekonstruktion
      • Häufige Fragen / FAQ
    • LCC Scene Editor

      • Version und Updates
      • Konto und Anmeldung
      • Produktübersicht und Startseite
      • Editor-Oberfläche
      • Navigationsmodi
      • Datei
      • Einstellungen
      • Bearbeiten
      • Fenster
      • Globale Symbolleiste
      • Assets und Eigenschaften
      • Linke Symbolleiste
      • Ansichtspunkte
      • Portal
      • Skybox
      • Markierungen
      • Messung
      • Flythrough
      • Szenenbericht
      • 3D-Layout
      • Minikarte
      • Vorschaumodus (Viewer)
      • Hilfe
      • Häufige Fragen (FAQ)
      • Spawn-Point
    • LCC Model Editor

      • Version und Updates
      • Benutzerhandbuch
      • Übersicht und Oberfläche
      • Dateioperationen
      • Selektoren
      • Modelle bearbeiten
      • Messung
      • Farbkorrektur
      • Asset-Verwaltung
      • Einstellungen und Hilfe
      • Häufige Fragen
    • Capture Guide

      • Überblick
      • Überblick über die Aufnahmegeräte
      • Allgemeine Aufnahmeprinzipien
      • Aufnahme von Innenszenen
      • Aufnahme von Außenszenen
      • Großflächige Aufnahme (Map Fusion)
      • Aerial-Ground Map Fusion – Aufnahme
      • Objektaufnahme
      • Personenaufnahme
      • Video-Rekonstruktionsaufnahme
      • HD Enhancement
      • Kontrollpunkte (Lixel P1)
      • FAQ und Fehlerbehebung
    • Best Practices

      • Zusammenführen mehrerer großer 3DGS-Modelle
    • Versionsgeschichte
  • Plugin & SDK

    • Unreal

      • Einführung
      • Schnellstart - Windows
      • Schnellstart - Linux
      • Schnellstart - Quest3
      • Editionen und Lizenzierung
      • Rendering
      • Tiled-Rasterisierung (experimentell)
      • Bildeinstellungen
      • Normalen und Beleuchtung
      • Szenenbearbeitung
      • Leistungsparameter
      • Leitfaden zur Leistung
      • Integration von Drittanbieter- und Engine-Plugins
      • Proxy Mesh
      • Ladeanimation
      • Kollision
      • Unterstützung des Navigation System
      • Unterstützung von Single Layer Water
      • Lokalisierung
      • FAQ
      • Fehlerbehebung
      • Logs und Diagnose
      • Kontakt
      • Bewährte Vorgehensweisen

        • 3DGS mit einem LixelStudio-Mesh neu beleuchten
      • API-Referenz

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG- / SPZ- / PLY-Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Änderungsprotokoll

        • 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

      • Einführung in das Unity SDK
      • Technische Funktionen
      • Anforderungen an die Entwicklungsumgebung
      • PC-Schnellstartanleitung
      • Leitfaden zur Optimierung der Projekteinstellungen
      • Pico 4 Ultra-Entwicklungsanleitung
      • Pico 4 Ultra-PC-Streaming-Anleitung
      • Quest 3-Entwicklungsanleitung
      • Quest 3-PC-Streaming-Anleitung
      • OpenXR-Entwicklungsanleitung
      • Pico 4 Ultra-Business-Streaming-Anleitung
      • Glossar
      • FAQ
      • Kontakt
      • Funktionsentwicklungsleitfaden

        • Entwicklungsanleitung für gemischtes Multi-Szenen-Rendering
        • Entwicklungsanleitung für Schattenempfang
        • Entwicklungsanleitung für Echtzeitbeleuchtung
        • Entwicklungsanleitung für Multi-Kamera-Rendering
        • Entwicklungsanleitung für hochauflösendes Bild-Rendering
        • Entwicklungsanleitung zur Kompatibilität der Datenformate LCC und LCC2
        • Entwicklungsanleitung für Ladeeffekte
        • Entwicklungsanleitung für das Umschalten des Mip-Rendering-Modus
        • Entwicklungsanleitung für Kanten- und Eckensnapping
        • Entwicklungsanleitung für projizierte Decals
        • Entwicklungsanleitung für projizierte Video-Decals
        • Entwicklungsanleitung für Hervorhebung
        • Entwicklungsanleitung für Echtzeit-Clipping
        • Entwicklungsanleitung für Farbanpassung
        • Entwicklungsanleitung für das Abrufen von Szenen-Mesh-Daten
        • Entwicklungsanleitung für den Editor-Modus
        • Konfigurationsanleitung für Render-Leistungsparameter
        • Entwicklungsanleitung zum gemeinsamen Paketieren von Anwendung und Daten
        • Entwicklungsanleitung für das Kollisionssystem
        • Anleitung zu macOS-Berechtigungsproblemen in der Entwicklung
        • Entwicklungsanleitung für Kompilierung und Paketierung auf iOS-Geräten
      • API-Referenz

        • LCCManager
        • Renderer
        • Datentypen
      • Changelog

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

      • Einführung
      • Leitfaden zur Rendering-Leistungsoptimierung
      • Grafikkonfiguration
      • Häufige Fragen
      • API-Referenz

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • Änderungsprotokoll

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0

Anleitung zu macOS-Berechtigungsproblemen in der Entwicklung

Da das LCC Unity SDK eine WebP-Decodierungsbibliothek eines Drittanbieters verwendet, kann bei der Verwendung des SDK unter macOS der Fehler „Failed to open xxx.bundle“ auftreten. Dabei handelt es sich um den Sicherheitsmechanismus von macOS (Gatekeeper), der nicht zertifizierte Drittanbieter-Plugins am Ausführen hindert; dies hat nichts mit Unity oder dem SDK selbst zu tun.

Diese Anleitung besteht aus zwei Teilen:

  • Teil 1: Berechtigungsprobleme von Drittanbieter-Bibliotheken in der Entwicklungsumgebung vorübergehend beheben.
  • Teil 2: Die formale Lösung beim Paketieren einer Anwendung (für die öffentliche Verteilung).

Teil 1: Berechtigungsprobleme von Drittanbieter-Bibliotheken in der Entwicklungsumgebung vorübergehend beheben

Die folgenden Methoden dienen zum schnellen Entfernen der Bundle-Beschränkung während der Entwicklung; probieren Sie sie in der Reihenfolge ihrer Priorität aus.

Methode 1: Direkt in den Systemeinstellungen zulassen (am schnellsten)

SchrittVorgang
1Öffnen Sie die Mac-Systemeinstellungen und suchen Sie links Datenschutz & Sicherheit
2Scrollen Sie nach unten, um den Abschnitt „Sicherheit“ zu finden
3Suchen Sie die Meldung „xxx.bundle wurde von der Verwendung blockiert“ und klicken Sie auf die benachbarte Schaltfläche Zulassen
4Starten Sie Unity neu und importieren oder führen Sie das SDK erneut aus

Methode 2: Das Quarantäne-Attribut über das Terminal entfernen (am gründlichsten)

macOS fügt aus dem Netzwerk heruntergeladenen Dateien das Quarantäne-Attribut com.apple.quarantine hinzu; Sie können es direkt mit einem Terminal-Befehl entfernen.

SchrittVorgang
1Öffnen Sie Launchpad → Andere → Terminal
2Geben Sie den Befehl ein (mit abschließendem Leerzeichen): sudo xattr -rd com.apple.quarantine
3Ziehen Sie die xxx.bundle-Datei, die den Fehler gemeldet hat, direkt in das Terminal-Fenster, um den Pfad automatisch zu vervollständigen
4Drücken Sie die Eingabetaste und geben Sie das Mac-Anmeldepasswort ein (es wird während der Eingabe nicht angezeigt, was normal ist)
5Starten Sie Unity neu, nachdem der Befehl abgeschlossen ist

Tipp:

Dieser Befehl erfordert Administratorrechte (sudo). Während Sie das Passwort eingeben, zeigt der Bildschirm nichts an; geben Sie es einfach zu Ende ein und drücken Sie die Eingabetaste.

Methode 3: Ausführungsberechtigungen hinzufügen (ergänzend)

Wenn die Methoden 1 und 2 immer noch nicht funktionieren, fügen Sie dem Bundle Ausführungsberechtigungen hinzu:

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

Sie können die Bundle-Datei auch in das Terminal ziehen, um den Pfad automatisch zu vervollständigen, die Eingabetaste drücken und Unity neu starten.

Methode 4: Die Unity-Plugin-Plattformeinstellungen prüfen

SchrittVorgang
1Suchen Sie die Datei xxx.bundle im Fenster Projekt von Unity
2Wählen Sie sie aus und sehen Sie sich das Fenster Inspektor an
3Aktivieren Sie unter Plattformeinstellungen Any Platform oder aktivieren Sie separat Standalone / macOS
4Stellen Sie sicher, dass Exclude Platform nicht aktiviert ist
Die Plugin-Plattformeinstellungen des Bundle im Unity-Inspektor prüfen

Any Platform oder macOS unter Plattformeinstellungen im Inspektor aktivieren

Methode 5: Gatekeeper vorübergehend deaktivieren (letzter Ausweg)

Warnung:

Diese Methode verringert die Systemsicherheit. Sie wird nur für die vorübergehende Verwendung auf einem Entwicklungsrechner empfohlen; aktivieren Sie sie nach Abschluss der Entwicklung unbedingt wieder.

Wenn keine der oben genannten Methoden funktioniert, können Sie die Systemsicherheitsprüfung vorübergehend deaktivieren:

sudo spctl --master-disable

Überprüfen Sie, ob sie deaktiviert ist:

spctl --status
# Bei erfolgreicher Deaktivierung wird „assessments disabled“ angezeigt

Aktivieren Sie den Sicherheitsschutz nach Abschluss der Entwicklung wieder:

sudo spctl --master-enable

Teil 2: Berechtigungsprobleme von Drittanbieter-Bibliotheken beim Paketieren einer Anwendung beheben

Damit Endbenutzer eine Anwendung mit einem Drittanbieter-SDK ohne Wahrnehmung des Problems verwenden können, müssen Sie auf Entwicklerseite „Tiefensignierung + Apple-Notarisierung + Staple-Ticket-Bindung“ abschließen. Dies ist die einzige konforme Standardlösung unter macOS mit null Benutzeroperationen.

Voraussetzungen (alle erforderlich)

Nr.BedingungBeschreibung
1Apple Developer ProgramUSD 99/Jahr, wird zum Erhalt des Developer-ID-Application-Zertifikats verwendet
2Hardened Runtime aktivierenAktivieren Sie in Unity unter Player Settings → Other Settings → Mac das Kontrollkästchen Use Hardened Runtime
3Eine eindeutige Bundle-ID konfigurierenHalten Sie sie konsistent mit dem Entwicklerportal
4Automatische Signierung von Unity deaktivierenVerwenden Sie das Terminal, um nach dem Paketieren manuell tief zu signieren

Vollständiger Signierungs- und Notarisierungsablauf

Schritt 1: Erweiterte Attribute löschen

xattr -cr "YourApp.app"

Schritt 2: Tiefe rekursive Signierung

Der Parameter --deep durchläuft automatisch alle internen .bundle-, .dylib- und .framework-Dateien und signiert sie einheitlich, wodurch das Problem, dass Drittanbieter-Bundles wegen fehlender Signierung blockiert werden, gründlich gelöst wird.

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

Wichtiger Punkt:

Ersetzen Sie YourCompany (TeamID) durch Ihre vollständige Developer ID. Die Verwendung von --deep stellt sicher, dass alle internen Drittanbieter-Bundles signiert sind — dies ist die Ursache für 90 % der Probleme „nach der Signierung treten weiterhin Fehler auf“.

Schritt 3: Ein Standard-Zip für die Notarisierung paketieren

Sie müssen zum Paketieren den Befehl ditto verwenden; verwenden Sie nicht die System-Rechtsklick-Komprimierung (andernfalls schlägt die Notarisierungsprüfung fehl).

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

Schritt 4: Zur Notarisierung an Apple hochladen

Verwenden Sie notarytool (das offizielle neue Tool), um die Notarisierung einzureichen; das Backend von Apple scannt automatisch auf Schadcode:

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

Warten Sie auf die Rückgabe von Accepted, was bedeutet, dass die Notarisierung bestanden wurde.

Schritt 5: Das Notarisierungs-Ticket in die App stapeln

Nach dem Stapling können Benutzer die Prüfung auch beim Offline-Öffnen bestehen:

xcrun stapler staple "YourApp.app"
# Überprüfen, ob es erfolgreich war
xcrun stapler validate "YourApp.app"

Interne Tests / Verteilung im Unternehmens-Intranet (Alternative)

Wenn Sie noch kein Apple-Entwicklerkonto haben, können Sie wie folgt im Intranet verteilen:

SchrittVorgang
1Unity paketiert die .app
2Führen Sie auf dem Build-Rechner Folgendes aus: xattr -rd com.apple.quarantine "YourApp.app"
3Verteilen Sie über Intranet-Tools (scp, Unternehmens-Cloud-Laufwerk, USB-Stick), nicht über einen Browser herunterladen

Einschränkung:

Dieser Ansatz gilt nur für die Intranet-Übertragung. Browser-Downloads fügen das Quarantäne-Attribut erneut hinzu, wodurch der Bundle-Fehler erneut auftritt, und ist nicht für die öffentliche Verteilung geeignet.

Häufige Fallstricke

Häufiger FehlerKorrekter Ansatz
Nur das Hauptprogramm signiert, ohne --deepMuss --deep verwenden, um alle internen Bundles / Dylibs rekursiv zu signieren
Hardened Runtime nicht aktiviertVor dem Unity-Paketieren in den Player Settings aktivieren, andernfalls schlägt die Notarisierung direkt fehl
Das Ticket nach der Notarisierung nicht gestapeltMuss xcrun stapler staple ausführen, andernfalls zeigt das Offline-Öffnen weiterhin den Dialog
Die erweiterten Attribute vor dem Signieren nicht gelöschtZuerst xattr -cr ausführen, um Restattribute aller Bundles zu löschen, dann signieren
System-Rechtsklick-Komprimierung statt ditto verwendetMuss die Standard-Paketierung ditto -c -k verwenden, andernfalls schlägt die Notarisierungsprüfung fehl

Zusammenfassung

Die einzige Standardlösung für die öffentliche Verteilung = Apple Developer ID + tiefes codesign + notarytool-Notarisierung + stapler-Ticket. Nach Abschluss laden Benutzer die App herunter und verwenden sie sofort, ohne Sicherheitsdialog und ohne Wahrnehmung des Problems.