Ontwikkelgids voor compilatie en verpakking voor iOS-apparaten
Achtergrond
De LCC Unity SDK wordt gepubliceerd in de vorm van voorgecompileerde DLL's. Omdat het iOS-platform vereist dat native plug-ins als statische bibliotheken (__Internal) worden gekoppeld in plaats van dynamisch te worden geladen (dlopen), moet je de extra configuratiestappen in dit document voltooien voordat je een iOS-applicatie bouwt. Er is een fundamenteel verschil in het laadmechanisme van native plug-ins tussen iOS en andere platformen; andere platformen (Windows, macOS, Android, Linux) vereisen geen extra bewerkingen.
Deze SDK gebruikt "libwebp" als P/Invoke-doel wanneer deze tot een DLL wordt gecompileerd. Het ingebouwde Editor/RewriteWebpDllImport.cs-script van de SDK herschrijft dit automatisch naar "__Internal" tijdens iOS-builds, zodat IL2CPP de juiste directe symboolaanroepen genereert.
Opmerking:
Hernoem bij het compileren van een iOS-apparaatapplicatie eerst
Editor/RewriteWebpDllImport.txtin het SDK-pakket naarEditor/RewriteWebpDllImport.cszodat het script van kracht wordt. Je kunt ook rechtstreeks de bestandsextensie van het script in het SDK-pakket wijzigen en het naar de map Assets/Editor/ van het project kopiëren.
Vereisten
Het RewriteWebpDllImport.cs-script gebruikt tijdens het bouwen de IL-herschrijfbibliotheek Mono.Cecil, dus je moet deze eerst als afhankelijkheid aan het project toevoegen. Er zijn twee manieren; kies er één.
Methode 1: Toevoegen via Package Manager (aanbevolen)
Open de Unity-menubalk Venster → Package Manager, klik op de knop + in de linkerbovenhoek, kies Pakket toevoegen op naam..., voer de naam com.unity.nuget.mono-cecil in, voer de versie 1.11.5 in, klik op Toevoegen en wacht tot de Package Manager de installatie heeft voltooid, zoals hieronder wordt weergegeven.

Voeg com.unity.nuget.mono-cecil op naam toe in de Package Manager
Methode 2: manifest.json handmatig bewerken
Bewerk de Packages/manifest.json van het project rechtstreeks en voeg een regel toe onder dependencies:
{
"dependencies": {
"com.unity.nuget.mono-cecil": "1.11.5"
}
}
Schakel na het opslaan terug naar Unity; de Editor lost de afhankelijkheid automatisch op en installeert deze.
Buildworkflow
Volg na het voltooien van de vereiste configuratie de standaard iOS-buildworkflow; RewriteWebpDllImport grijpt tijdens het bouwen automatisch in.
- Hernoem
Editor/RewriteWebpDllImport.txtnaarEditor/RewriteWebpDllImport.cs(als dit nog niet is gebeurd). - Selecteer in de Unity-menubalk Bestand → Buildinstellingen, selecteer iOS in de platformlijst en klik op Platform wisselen.
- Klik op Build (of Build And Run), selecteer een uitvoermap en genereer het Xcode-project.
- Tijdens het bouwen herschrijft het script automatisch alle
DllImport-vermeldingen in de SDK die gericht zijn op"libwebp"naar"__Internal". Na een succesvolle build geeft de Console een log weer die lijkt op:
[RewriteWebpDllImport] Rewrote 77 P/Invoke entries from "libwebp" to "__Internal".
- Open het gegenereerde project met Xcode en controleer bij Build Phases → Link Binary With Libraries van het target dat
libwebp.a,libwebpdemux.aenlibsharpyuv.azijn gekoppeld. - Sluit het iOS-apparaat aan, onderteken en voer uit in Xcode.
Opmerking:
Als de
[RewriteWebpDllImport]-log niet in de Console verschijnt, betekent dit meestal dat het script niet van kracht is geworden — controleer of de bestandsextensie is gewijzigd van.txtnaar.csen of de Mono.Cecil-afhankelijkheid correct is geïnstalleerd.
Probleemoplossing
| Foutmelding | Oorzaak | Oplossing |
|---|---|---|
Unable to load DLL 'libwebp' | Het script is niet van kracht geworden en DllImport verwijst nog steeds naar de naam van de dynamische bibliotheek | Controleer of RewriteWebpDllImport.txt is hernoemd naar .cs, bouw opnieuw en controleer de Console-log |
Cannot find LCCSDK.dll in staging area | De hoofd-DLL van de SDK is tijdens het bouwen niet gevonden en het herschrijfdoel ontbreekt | Controleer of de SDK correct in het project is geïmporteerd en of de DLL niet voor iOS is uitgesloten via Exclude Platform |
Compilatiefouten gerelateerd aan Mono.Cecil (de naamruimte Mono.Cecil kan niet worden gevonden) | Niet geïnstalleerd of de versie komt niet overeen | Voeg com.unity.nuget.mono-cecil@1.11.5 toe volgens "Vereisten" en wacht tot de compiler opnieuw heeft opgelost |
Opmerkingen
- Het wordt aanbevolen om Unity 2022.3 LTS of hoger te gebruiken (inclusief Unity 6); compatibiliteit met Mono.Cecil en IL2CPP kan op te oude versies niet worden gegarandeerd.
- Als je op de iOS-simulator moet draaien, controleer dan of de gekoppelde statische bibliotheek de
arm64-simulator-architectuurslice bevat, anders kan de simulator niet koppelen. - De bovenstaande configuratie heeft alleen invloed op het iOS-platform. De buildworkflows van Windows, macOS, Android en Linux worden helemaal niet beïnvloed en het is niet nodig om het script te hernoemen of de Mono.Cecil-afhankelijkheid toe te voegen.