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

    • PortalCam P1

      • Panoramica del prodotto
      • Operazioni di base
      • Uso della LCC Scan App
      • Manutenzione e cura
      • FAQ
  • Serie Lixel K

    • Lixel K1

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Fusione delle mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
    • Lixel K2

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione
      • Flusso di scansione
      • Acquisire una nuvola di punti con coordinate assolute
      • Fusione mappe
      • Consigli di pianificazione dei percorsi per scene tipiche
      • Precauzioni
      • FAQ
  • Serie Lixel L

    • Lixel L2 Pro

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Flusso di scansione
      • Ottenere una nuvola di punti con coordinate assolute
      • Punto di misura
      • Appendice
      • FAQ
    • Lixel L3

      • Panoramica del prodotto
      • Operazioni di base
      • Attivazione e connessione del dispositivo
      • Acquisizione dei dati
      • Acquisizione di coordinate assolute
      • Appendice
  • Accessori

    • Stick Light

      • Guida all'installazione
      • Operazioni di base
      • Domande frequenti
  • Lixel Studio

    • Versione e copyright
    • Installazione e attivazione
    • Interfaccia del software
    • Operazioni sui file
    • Elaborazione del progetto
    • Strumenti
    • Disegno 2D
    • Applicazioni di settore
    • Impostazioni
    • Connessione del dispositivo
    • Domande Frequenti
  • Lixel CyberColor

    • LCC Studio

      • Introduzione
      • Versione e aggiornamenti
      • Download e installazione
      • Panoramica dell'interfaccia e navigazione
      • Operazioni preliminari alla ricostruzione
      • Prima della ricostruzione
      • Ricostruzione del modello
      • Ricostruzione modello singolo
      • Fusione delle mappe
      • Fusione aria-terra
      • Ricostruzione aerea
      • I miei modelli
      • Altre funzioni
      • Impostazioni e account
      • Convertitore
      • Ricostruzione video
      • Domande Frequenti / FAQ
    • LCC Scene Editor

      • Versione e aggiornamenti
      • Account e accesso
      • Panoramica del prodotto e home page
      • Interfaccia dell'editor
      • Modalità di navigazione
      • File
      • Impostazioni
      • Modifica
      • Finestra
      • Barra degli strumenti globale
      • Asset e proprietà
      • Barra degli strumenti sinistra
      • Punti di vista
      • Portale
      • Skybox
      • Annotazioni
      • Misurazione
      • Flythrough
      • Rapporto scena
      • 3D Layout
      • Mini-mappa
      • Modalità Anteprima (Viewer)
      • Aiuto
      • Domande frequenti (FAQ)
      • Punto di spawn
    • LCC Model Editor

      • Versione e aggiornamenti
      • Guida utente
      • Panoramica e interfaccia
      • Operazioni sui file
      • Selettori
      • Modifica dei modelli
      • Misurazione
      • Correzione colore
      • Gestione degli asset
      • Impostazioni e Aiuto
      • Domande frequenti
    • Capture Guide

      • Panoramica
      • Panoramica dei dispositivi di acquisizione
      • Principi generali di acquisizione
      • Acquisizione di scene interne
      • Acquisizione di scene esterne
      • Acquisizione su larga scala (map fusion)
      • Acquisizione per aerial-ground map fusion
      • Acquisizione di oggetti
      • Acquisizione di persone
      • Acquisizione per ricostruzione da video
      • HD Enhancement
      • Control points (Lixel P1)
      • FAQ e risoluzione dei problemi
    • Buone Pratiche

      • Unione di più modelli 3DGS di grandi dimensioni
    • Cronologia versioni
  • Plugin e SDK

    • Unreal

      • Introduzione
      • Avvio rapido - Windows
      • Avvio rapido - Linux
      • Avvio rapido - Quest3
      • Edizioni e licenze
      • Rendering
      • Rasterizzazione Tiled (sperimentale)
      • Impostazioni visive
      • Normali e illuminazione
      • Modifica della scena
      • Parametri di prestazione
      • Guida alle prestazioni
      • Integrazione con plugin di terze parti e del motore
      • Proxy Mesh
      • Animazione di caricamento
      • Collisioni
      • Supporto del Navigation System
      • Supporto di Single Layer Water
      • Localizzazione
      • FAQ
      • Risoluzione dei problemi
      • Log e diagnostica
      • Contattaci
      • Buone pratiche

        • Rilluminare il 3DGS con una mesh di LixelStudio
      • Riferimento API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enum
        • Struct
      • Registro delle modifiche

        • 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

      • Introduzione all'Unity SDK
      • Caratteristiche tecniche
      • Requisiti dell'ambiente di sviluppo
      • Guida rapida per PC
      • Guida all'ottimizzazione delle impostazioni di progetto
      • Guida allo sviluppo per Pico 4 Ultra
      • Guida allo streaming PC per Pico 4 Ultra
      • Guida allo sviluppo per Quest 3
      • Guida allo streaming PC per Quest 3
      • Guida allo sviluppo OpenXR
      • Guida allo streaming Business per Pico 4 Ultra
      • Glossario
      • FAQ
      • Contattaci
      • Guida allo sviluppo delle funzionalità

        • Guida allo sviluppo del rendering misto multi-scena
        • Guida allo sviluppo della ricezione delle ombre
        • Guida allo sviluppo dell'illuminazione in tempo reale
        • Guida allo sviluppo del rendering multi-camera
        • Guida allo sviluppo del rendering di immagini ad alta risoluzione
        • Guida allo sviluppo della compatibilità dei formati dati LCC e LCC2
        • Guida allo sviluppo dell'effetto di caricamento
        • Guida allo sviluppo del cambio di modalità di rendering Mip
        • Guida allo sviluppo dello snap a bordi e angoli
        • Guida allo sviluppo della decal proiettata
        • Guida allo sviluppo della decal proiettata video
        • Guida allo sviluppo dell'evidenziazione
        • Guida allo sviluppo del ritaglio in tempo reale
        • Guida allo sviluppo della regolazione del tono
        • Guida allo sviluppo dell'ottenimento dei dati Mesh della scena
        • Guida allo sviluppo della modalità Editor
        • Guida alla configurazione dei parametri di prestazioni di rendering
        • Guida allo sviluppo del co-impacchettamento di applicazione e dati
        • Guida allo sviluppo del sistema di collisione
        • Guida ai problemi di autorizzazione nello sviluppo su macOS
        • Guida allo sviluppo di compilazione e packaging per dispositivi iOS
      • Riferimento API

        • LCCManager
        • Renderer
        • Tipi di dati
      • Registro delle modifiche

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

      • Introduzione
      • Guida all'ottimizzazione delle prestazioni di rendering
      • Configurazione grafica
      • Domande frequenti
      • Riferimento API

        • 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
      • Registro delle modifiche

        • 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

Guida ai problemi di autorizzazione nello sviluppo su macOS

Poiché l'LCC Unity SDK usa una libreria di decodifica webP di terze parti, potresti incontrare l'errore "Impossibile aprire xxx.bundle" quando usi l'SDK su macOS. Si tratta del meccanismo di sicurezza di macOS (Gatekeeper) che blocca l'esecuzione dei plugin di terze parti non certificati, e non ha nulla a che fare con Unity o con l'SDK stesso.

Questa guida è divisa in due parti:

  • Parte 1: risolvere temporaneamente i problemi di autorizzazione delle librerie di terze parti nell'ambiente di sviluppo.
  • Parte 2: la soluzione formale durante il packaging di un'applicazione (per la distribuzione pubblica).

Parte 1: risolvere temporaneamente i problemi di autorizzazione delle librerie di terze parti nell'ambiente di sviluppo

I seguenti metodi servono a rimuovere rapidamente la restrizione del bundle durante lo sviluppo; provali in ordine di priorità.

Metodo 1: consenti direttamente nelle Impostazioni di Sistema (il più rapido)

PassaggioOperazione
1Apri le Impostazioni di Sistema del Mac e trova Privacy e Sicurezza a sinistra
2Scorri verso il basso fino alla sezione "Sicurezza"
3Trova il messaggio "xxx.bundle è stato bloccato dall'uso" e fai clic sul pulsante Consenti accanto
4Riavvia Unity, quindi reimporta o esegui l'SDK

Metodo 2: rimuovi l'attributo di quarantena tramite Terminale (il più completo)

macOS aggiunge l'attributo di quarantena com.apple.quarantine ai file scaricati dalla rete; puoi rimuoverlo direttamente con un comando del Terminale.

PassaggioOperazione
1Apri Launchpad → Altro → Terminale
2Inserisci il comando (mantieni uno spazio finale): sudo xattr -rd com.apple.quarantine
3Trascina il file xxx.bundle che ha segnalato l'errore direttamente nella finestra del Terminale per completare automaticamente il percorso
4Premi Invio e inserisci la password di accesso del Mac (non viene mostrata durante la digitazione, il che è normale)
5Riavvia Unity al termine del comando

Suggerimento:

Questo comando richiede i privilegi di amministratore (sudo). Lo schermo non mostrerà nulla mentre digiti la password; completa la digitazione e premi Invio.

Metodo 3: aggiungi i permessi di esecuzione (supplementare)

Se i Metodi 1 e 2 non funzionano ancora, aggiungi i permessi di esecuzione al bundle:

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

Puoi anche trascinare il file del bundle nel Terminale per completare automaticamente il percorso, premere Invio e riavviare Unity.

Metodo 4: verifica le impostazioni di piattaforma del plugin in Unity

PassaggioOperazione
1Trova il file xxx.bundle nella finestra Progetto di Unity
2Selezionalo e osserva la finestra Inspector
3In Platform Settings, spunta Any Platform, oppure spunta separatamente Standalone / macOS
4Assicurati che Exclude Platform non sia spuntata
Verifica le impostazioni di piattaforma del plugin del bundle nell'Inspector di Unity

Spunta Any Platform o macOS in Platform Settings nell'Inspector

Metodo 5: disattiva temporaneamente Gatekeeper (ultima risorsa)

Avviso:

Questo metodo riduce la sicurezza del sistema. È consigliato solo per un uso temporaneo su una macchina di sviluppo; assicurati di riattivarlo al termine dello sviluppo.

Se nessuno dei metodi precedenti funziona, puoi disattivare temporaneamente la verifica di sicurezza del sistema:

sudo spctl --master-disable

Verifica se è disattivata:

spctl --status
# viene mostrato assessments disabled quando la disattivazione riesce

Riattiva la protezione di sicurezza al termine dello sviluppo:

sudo spctl --master-enable

Parte 2: risolvere i problemi di autorizzazione delle librerie di terze parti durante il packaging di un'applicazione

Per consentire agli utenti finali di usare un'applicazione contenente un SDK di terze parti senza percepire il problema, devi completare "firma approfondita del codice + notarizzazione Apple + associazione del ticket Staple" lato sviluppatore. È l'unica soluzione standard conforme su macOS con zero operazioni per l'utente.

Prerequisiti (tutti obbligatori)

N.CondizioneDescrizione
1Apple Developer Program99 USD/anno, serve per ottenere il certificato Developer ID Application
2Abilita Hardened RuntimeIn Unity Player Settings → Other Settings → Mac, spunta Use Hardened Runtime
3Configura un Bundle ID univocoMantienilo coerente con il portale sviluppatori
4Disattiva la firma automatica di UnityUsa il Terminale per firmare manualmente in modo approfondito dopo il packaging

Flusso di lavoro completo di firma e notarizzazione

Passaggio 1: elimina gli attributi estesi

xattr -cr "YourApp.app"

Passaggio 2: firma ricorsiva approfondita

Il parametro --deep attraversa automaticamente tutti i file .bundle, .dylib e .framework interni e li firma uniformemente, risolvendo a fondo il problema dei bundle di terze parti bloccati perché non firmati.

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

Punto chiave:

Sostituisci YourCompany (TeamID) con il tuo Developer ID completo. Usando --deep garantisci che tutti i bundle di terze parti interni vengano firmati: è la causa principale del 90% dei problemi di "errore ancora presente dopo la firma".

Passaggio 3: crea uno zip standard per la notarizzazione

Devi usare il comando ditto per il packaging; non usare la compressione con il clic destro del sistema (altrimenti la verifica di notarizzazione fallirà).

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

Passaggio 4: carica su Apple per la notarizzazione

Usa notarytool (il nuovo strumento ufficiale) per inviare la richiesta di notarizzazione; il backend di Apple esegue automaticamente la scansione del codice dannoso:

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

Attendi la restituzione di Accepted, che significa che la notarizzazione è riuscita.

Passaggio 5: applica il ticket di notarizzazione all'app

Dopo l'applicazione del ticket (stapling), gli utenti possono superare la verifica anche aprendo offline:

xcrun stapler staple "YourApp.app"
# Verifica se l'operazione è riuscita
xcrun stapler validate "YourApp.app"

Test interni / distribuzione intranet aziendale (alternativa)

Se non disponi ancora di un account sviluppatore Apple, puoi distribuire all'interno dell'intranet usando il seguente approccio:

PassaggioOperazione
1Unity genera il pacchetto .app
2Sulla macchina di build, esegui: xattr -rd com.apple.quarantine "YourApp.app"
3Distribuisci tramite strumenti intranet (scp, cloud drive aziendale, chiavetta USB), non scaricare tramite browser

Limitazione:

Questo approccio si applica solo al trasferimento intranet. I download tramite browser aggiungeranno nuovamente l'attributo di quarantena, facendo ricomparire l'errore del bundle, e non è adatto alla distribuzione pubblica.

Errori comuni

Errore comuneApproccio corretto
Firmato solo il programma principale, senza --deepDevi usare --deep per firmare ricorsivamente tutti i bundle / dylib interni
Hardened Runtime non abilitatoSpuntalo in Player Settings prima del packaging di Unity, altrimenti la notarizzazione fallisce direttamente
Ticket non applicato (staple) dopo la notarizzazioneDevi eseguire xcrun stapler staple, altrimenti l'apertura offline mostra ancora la finestra di dialogo
Attributi estesi non eliminati prima della firmaEsegui prima xattr -cr per eliminare gli attributi residui di tutti i bundle, poi firma
Usata la compressione con clic destro del sistema invece di dittoDevi usare il packaging standard ditto -c -k, altrimenti la verifica di notarizzazione fallisce

Riepilogo

L'unica soluzione standard per la distribuzione pubblica = Apple Developer ID + codesign approfondito + notarizzazione notarytool + ticket stapler. Una volta completata, gli utenti scaricano e usano l'app immediatamente, senza alcuna finestra di dialogo di sicurezza e senza percepire il problema.