Przewodnik kompilacji i pakowania na urządzenia iOS
Tło
LCC Unity SDK jest publikowany w formie wstępnie skompilowanych bibliotek DLL. Ponieważ platforma iOS wymaga, aby wtyczki natywne były linkowane jako biblioteki statyczne (__Internal), a nie ładowane dynamicznie (dlopen), przed zbudowaniem aplikacji iOS musisz ukończyć dodatkowe kroki konfiguracyjne opisane w tym dokumencie. Istnieje fundamentalna różnica w mechanizmach ładowania wtyczek natywnych między iOS a innymi platformami; inne platformy (Windows, macOS, Android, Linux) nie wymagają żadnych dodatkowych operacji.
Ten SDK używa "libwebp" jako celu P/Invoke po skompilowaniu do DLL. Wbudowany skrypt SDK Editor/RewriteWebpDllImport.cs automatycznie przepisuje go na "__Internal" podczas kompilacji iOS, zapewniając, że IL2CPP generuje prawidłowe bezpośrednie wywołania symboli.
Uwaga:
Podczas kompilacji aplikacji na urządzenie iOS najpierw zmień nazwę
Editor/RewriteWebpDllImport.txtw pakiecie SDK naEditor/RewriteWebpDllImport.cs, aby skrypt zadziałał. Alternatywnie bezpośrednio zmień rozszerzenie skryptu w pakiecie SDK i skopiuj go do katalogu Assets/Editor/ projektu.
Wymagania wstępne
Skrypt RewriteWebpDllImport.cs używa biblioteki przepisywania IL Mono.Cecil podczas kompilacji, więc musisz najpierw dodać ją jako zależność do projektu. Są dwa sposoby; wybierz jeden.
Metoda 1: Dodaj przez Menedżer pakietów (zalecana)
Otwórz pasek menu Unity Okno → Menedżer pakietów, kliknij przycisk + w lewym górnym rogu, wybierz Dodaj pakiet według nazwy..., wpisz nazwę com.unity.nuget.mono-cecil, wpisz wersję 1.11.5, kliknij Dodaj i poczekaj, aż Menedżer pakietów zakończy instalację, jak pokazano poniżej.

Dodaj com.unity.nuget.mono-cecil według nazwy w Menedżerze pakietów
Metoda 2: Ręcznie edytuj manifest.json
Bezpośrednio edytuj Packages/manifest.json projektu i dodaj wiersz pod dependencies:
{
"dependencies": {
"com.unity.nuget.mono-cecil": "1.11.5"
}
}
Po zapisaniu przełącz się z powrotem do Unity; Edytor automatycznie rozwiąże i zainstaluje zależność.
Przepływ kompilacji
Po ukończeniu konfiguracji wymagań wstępnych postępuj zgodnie ze standardowym przepływem kompilacji iOS; RewriteWebpDllImport zainterweniuje automatycznie podczas kompilacji.
- Zmień nazwę
Editor/RewriteWebpDllImport.txtnaEditor/RewriteWebpDllImport.cs(jeśli jeszcze nie zmieniono). - Na pasku menu Unity wybierz Plik → Ustawienia kompilacji, wybierz iOS z listy platform i kliknij Przełącz platformę.
- Kliknij Kompiluj (lub Kompiluj i uruchom), wybierz katalog wyjściowy i wygeneruj projekt Xcode.
- Podczas kompilacji skrypt automatycznie przepisuje wszystkie wpisy
DllImportw SDK kierujące na"libwebp"na"__Internal". Po pomyślnej kompilacji Konsola wyświetla dziennik podobny do:
[RewriteWebpDllImport] Rewrote 77 P/Invoke entries from "libwebp" to "__Internal".
- Otwórz wygenerowany projekt w Xcode i w sekcji Fazy kompilacji → Połącz pliki binarne z bibliotekami celu potwierdź, że
libwebp.a,libwebpdemux.ailibsharpyuv.asą linkowane. - Podłącz urządzenie iOS, podpisz i uruchom w Xcode.
Uwaga:
Jeśli dziennik
[RewriteWebpDllImport]nie pojawia się w Konsoli, zwykle oznacza to, że skrypt nie zadziałał — potwierdź, że rozszerzenie pliku zostało zmienione z.txtna.csi że zależność Mono.Cecil jest poprawnie zainstalowana.
Rozwiązywanie problemów
| Komunikat błędu | Przyczyna | Rozwiązanie |
|---|---|---|
Unable to load DLL 'libwebp' | Skrypt nie zadziałał, a DllImport nadal wskazuje nazwę biblioteki dynamicznej | Potwierdź, że RewriteWebpDllImport.txt został zmieniony na .cs, przebuduj i sprawdź dziennik Konsoli |
Cannot find LCCSDK.dll in staging area | Główna biblioteka DLL SDK nie została znaleziona podczas kompilacji, a cel przepisywania jest nieobecny | Potwierdź, że SDK jest poprawnie zaimportowany do projektu, a DLL nie jest wykluczony z iOS przez Exclude Platform |
Błędy kompilacji związane z Mono.Cecil (nie można znaleźć przestrzeni nazw Mono.Cecil) | Niezainstalowane lub niezgodność wersji | Dodaj com.unity.nuget.mono-cecil@1.11.5 zgodnie z „Wymaganiami wstępnymi" i poczekaj, aż kompilator ponownie rozwiąże |
Uwagi
- Zaleca się używanie Unity 2022.3 LTS lub nowszego (w tym Unity 6); zgodności z Mono.Cecil i IL2CPP nie można zagwarantować na zbyt starych wersjach.
- Jeśli musisz uruchamiać na Symulatorze iOS, potwierdź, że linkowana biblioteka statyczna zawiera wycinek architektury
arm64-simulator, w przeciwnym razie symulator nie może linkować. - Powyższa konfiguracja dotyczy tylko platformy iOS. Przepływy kompilacji Windows, macOS, Android i Linux nie są w ogóle naruszone i nie ma potrzeby zmiany nazwy skryptu ani dodawania zależności Mono.Cecil.