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

    • PortalCam P1

      • Productoverzicht
      • Basisbediening
      • De LCC Scan App gebruiken
      • Onderhoud en verzorging
      • Veelgestelde vragen
  • Lixel K-serie

    • Lixel K1

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
    • Lixel K2

      • Productoverzicht
      • Basisbediening
      • Apparaat activeren en verbinden
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten verkrijgen
      • Kaartfusie
      • Suggesties voor routeplanning bij typische scènes
      • Voorzorgsmaatregelen
      • FAQ
  • Lixel L-serie

    • Lixel L2 Pro

      • Productoverzicht
      • Basisbediening
      • Apparaatactivering en -verbinding
      • Scanworkflow
      • Puntenwolkgegevens met absolute coördinaten opnemen
      • Meetpunt
      • Appendix
      • FAQ
    • Lixel L3

      • Productoverzicht
      • Basisfuncties van het apparaat
      • Apparaatactivering en -verbinding
      • Gegevensopname
      • Absolute coördinaten opnemen
      • Appendix
  • Accessoires

    • Stick Light

      • Installatiegids
      • Basisbediening
      • FAQ
  • Lixel Studio

    • Versie en copyright
    • Installatie en activering
    • Software-interface
    • Bestandsbewerkingen
    • Projectverwerking
    • Gereedschappen
    • 2D-tekenen
    • Toepassingen
    • Instellingen
    • Apparaatverbinding
  • 07-plugin-sdk

    • Unity

      • LCC Unity SDK Introductie
      • Technische functies
      • Vereisten voor de ontwikkelomgeving
      • Snelstartgids voor pc
      • Optimalisatiegids voor projectinstellingen
      • Ontwikkelgids voor Pico 4 Ultra
      • Pc-streaminggids voor Pico 4 Ultra
      • Ontwikkelgids voor Quest 3
      • Pc-streaminggids voor Quest 3
      • Ontwikkelgids voor OpenXR
      • Business Streaming-gids voor Pico 4 Ultra
      • Woordenlijst
      • Veelgestelde vragen
      • Contact opnemen
      • Ontwikkelingshandleiding voor functies

        • Ontwikkelgids voor gemengde rendering van meerdere scènes
        • Ontwikkelgids voor het ontvangen van schaduwen
        • Ontwikkelgids voor realtime belichting
        • Ontwikkelgids voor multi-camera rendering
        • Ontwikkelgids voor het renderen van afbeeldingen met hoge resolutie
        • Ontwikkelgids voor compatibiliteit van de gegevensformaten LCC en LCC2
        • Ontwikkelgids voor laadeffecten
        • Ontwikkelgids voor het schakelen tussen Mip-renderingmodi
        • Ontwikkelgids voor rand- en hoeksnapping
        • Ontwikkelgids voor geprojecteerde decal
        • Ontwikkelgids voor video-geprojecteerde decal
        • Ontwikkelgids voor markeren
        • Ontwikkelgids voor realtime knippen
        • Ontwikkelgids voor kleuraanpassing
        • Ontwikkelgids voor het ophalen van scène-Meshgegevens
        • Ontwikkelgids voor de Editor-modus
        • Configuratiegids voor renderprestatieparameters
        • Ontwikkelgids voor het samen verpakken van de applicatie en de gegevens
        • Ontwikkelgids voor het botsingssysteem
        • Gids voor macOS-ontwikkelingsmachtigingsproblemen
        • Ontwikkelgids voor compilatie en verpakking voor iOS-apparaten
      • API-referentie

        • LCCManager
        • Renderer
        • Gegevenstypen
      • Wijzigingslogboek

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

Gids voor macOS-ontwikkelingsmachtigingsproblemen

Omdat de LCC Unity SDK een webP-decoderingsbibliotheek van derden gebruikt, kun je bij het gebruik van de SDK op macOS de fout "Failed to open xxx.bundle" tegenkomen. Dit is het beveiligingsmechanisme van macOS (Gatekeeper) dat niet-gecertificeerde plug-ins van derden blokkeert om uit te voeren, en heeft niets te maken met Unity of de SDK zelf.

Deze gids bestaat uit twee delen:

  • Deel 1: Machtigingsproblemen met bibliotheken van derden tijdelijk oplossen in de ontwikkelomgeving.
  • Deel 2: De formele oplossing bij het verpakken van een applicatie (voor openbare distributie).

Deel 1: Machtigingsproblemen met bibliotheken van derden tijdelijk oplossen in de ontwikkelomgeving

De volgende methoden zijn bedoeld om de bundle-beperking tijdens de ontwikkeling snel te verwijderen; probeer ze in volgorde van prioriteit.

Methode 1: Rechtstreeks toestaan in Systeeminstellingen (snelste)

StapBewerking
1Open de Mac-Systeeminstellingen en zoek links Privacy en beveiliging
2Scroll naar beneden om de sectie "Beveiliging" te vinden
3Zoek de melding "xxx.bundle was blocked from use" en klik op de aangrenzende knop Sta toe
4Start Unity opnieuw en importeer of voer de SDK opnieuw uit

Methode 2: Het quarantainekenmerk verwijderen via Terminal (meest grondige)

macOS voegt het quarantainekenmerk com.apple.quarantine toe aan bestanden die van het netwerk zijn gedownload; je kunt dit rechtstreeks met een Terminal-opdracht verwijderen.

StapBewerking
1Open Launchpad → Overige → Terminal
2Voer de opdracht in (houd een spatie aan het einde aan): sudo xattr -rd com.apple.quarantine
3Sleep het xxx.bundle-bestand dat de fout meldde rechtstreeks naar het Terminal-venster om het pad automatisch aan te vullen
4Druk op Enter en voer het Mac-aanmeldwachtwoord in (wordt tijdens het typen niet weergegeven, wat normaal is)
5Start Unity opnieuw nadat de opdracht is voltooid

Tip:

Deze opdracht vereist beheerdersrechten (sudo). Het scherm toont niets terwijl je het wachtwoord typt; typ het gewoon volledig en druk op Enter.

Methode 3: Uitvoerrechten toevoegen (aanvullend)

Als methode 1 en 2 nog steeds niet werken, voeg dan uitvoerrechten toe aan de bundle:

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

Je kunt het bundle-bestand ook naar de Terminal slepen om het pad automatisch aan te vullen, op Enter drukken en Unity opnieuw starten.

Methode 4: De platforminstellingen van de Unity-plug-in controleren

StapBewerking
1Zoek het xxx.bundle-bestand in het Project-venster van Unity
2Selecteer het en bekijk het Inspector-venster
3Vink bij Platforminstellingen Any Platform aan, of vink afzonderlijk Standalone / macOS aan
4Zorg ervoor dat Exclude Platform niet is aangevinkt
Controleer de platforminstellingen van de plug-in van de bundle in de Unity Inspector

Vink Any Platform of macOS aan bij Platforminstellingen in de Inspector

Methode 5: Gatekeeper tijdelijk uitschakelen (laatste redmiddel)

Waarschuwing:

Deze methode verlaagt de systeembeveiliging. Het wordt alleen aanbevolen voor tijdelijk gebruik op een ontwikkelmachine; zorg ervoor dat je deze na afloop van de ontwikkeling weer inschakelt.

Als geen van de bovenstaande methoden werkt, kun je de systeembeveiligingsverificatie tijdelijk uitschakelen:

sudo spctl --master-disable

Controleer of deze is uitgeschakeld:

spctl --status
# assessments disabled wordt weergegeven wanneer het uitschakelen is geslaagd

Schakel de beveiliging na afloop van de ontwikkeling weer in:

sudo spctl --master-enable

Deel 2: Machtigingsproblemen met bibliotheken van derden oplossen bij het verpakken van een applicatie

Om eindgebruikers een applicatie met een SDK van derden te laten gebruiken zonder dat zij het probleem opmerken, moet je aan de ontwikkelaarszijde "diepe code-ondertekening + Apple-notarisatie + Staple-ticketbinding" voltooien. Dit is de enige conforme standaardoplossing op macOS zonder gebruikersbewerkingen.

Vereisten (allemaal vereist)

Nr.VoorwaardeBeschrijving
1Apple Developer ProgramUSD 99/jaar, gebruikt om het Developer ID Application-certificaat te verkrijgen
2Hardened Runtime inschakelenVink in Unity Player-instellingen → Overige instellingen → Mac Use Hardened Runtime aan
3Een unieke Bundle ID configurerenHoud deze consistent met de ontwikkelaarsportal
4Automatische ondertekening van Unity uitschakelenGebruik Terminal om na het verpakken handmatig diep te ondertekenen

Volledige workflow voor ondertekening en notarisatie

Stap 1: Uitgebreide kenmerken wissen

xattr -cr "YourApp.app"

Stap 2: Diepe recursieve ondertekening

De parameter --deep doorloopt automatisch alle interne .bundle-, .dylib- en .framework-bestanden en ondertekent deze uniform, waardoor het probleem dat bundels van derden worden geblokkeerd omdat ze niet zijn ondertekend, grondig wordt opgelost.

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

Kernpunt:

Vervang YourCompany (TeamID) door je volledige Developer ID. Het gebruik van --deep zorgt ervoor dat alle interne bundels van derden worden ondertekend — dit is de hoofdoorzaak van 90% van de problemen waarbij "het na ondertekening nog steeds fouten geeft".

Stap 3: Een standaard zip verpakken voor notarisatie

Je moet de ditto-opdracht gebruiken om te verpakken; gebruik niet de systeemcompressie via rechtsklikken (anders mislukt de notarisatieverificatie).

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

Stap 4: Uploaden naar Apple voor notarisatie

Gebruik notarytool (de officiële nieuwe tool) om in te dienen voor notarisatie; de backend van Apple scant automatisch op schadelijke code:

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

Wacht tot Accepted wordt geretourneerd, wat betekent dat de notarisatie is geslaagd.

Stap 5: Het notarisatieticket in de app vastnieten

Na het vastnieten kunnen gebruikers de verificatie ook offline doorstaan:

xcrun stapler staple "YourApp.app"
# Controleer of het is gelukt
xcrun stapler validate "YourApp.app"

Interne tests / distributie binnen het bedrijfsintranet (alternatief)

Als je nog geen Apple-ontwikkelaarsaccount hebt, kun je binnen het intranet distribueren met de volgende benadering:

StapBewerking
1Unity verpakt de .app
2Voer op de buildmachine uit: xattr -rd com.apple.quarantine "YourApp.app"
3Distribueer via intranettools (scp, bedrijfsclouddrive, USB-stick), download niet via een browser

Beperking:

Deze benadering geldt alleen voor overdracht binnen het intranet. Browserdownloads voegen het quarantainekenmerk opnieuw toe, waardoor de bundle-fout opnieuw optreedt, en is niet geschikt voor openbare distributie.

Veelvoorkomende valkuilen

Veelgemaakte foutJuiste aanpak
Alleen het hoofdprogramma ondertekend, zonder --deepMoet --deep gebruiken om alle interne bundles / dylibs recursief te ondertekenen
Hardened Runtime niet ingeschakeldVink dit aan in de Player-instellingen vóór het verpakken in Unity, anders mislukt de notarisatie direct
Vergeten het ticket na notarisatie vast te nietenMoet xcrun stapler staple uitvoeren, anders toont offline openen nog steeds het dialoogvenster
Uitgebreide kenmerken niet gewist vóór ondertekeningVoer eerst xattr -cr uit om resterende kenmerken van alle bundles te wissen en onderteken daarna
Systeemcompressie via rechtsklikken gebruikt in plaats van dittoMoet ditto -c -k standaardverpakking gebruiken, anders mislukt de notarisatieverificatie

Samenvatting

De enige standaardoplossing voor openbare distributie = Apple Developer ID + diepe codesign + notarytool-notarisatie + stapler-ticket. Na voltooiing downloaden gebruikers de app en gebruiken deze direct, zonder beveiligingsdialoog en zonder dat zij het probleem opmerken.