Guía de desarrollo de compilación y empaquetado para dispositivos iOS
Trasfondo
El LCC Unity SDK se publica en forma de DLL precompiladas. Debido a que la plataforma iOS requiere que los plugins nativos se enlacen como bibliotecas estáticas (__Internal) en lugar de cargarse dinámicamente (dlopen), debes completar los pasos de configuración adicionales descritos en este documento antes de compilar una aplicación iOS. Hay una diferencia fundamental en los mecanismos de carga de plugins nativos entre iOS y otras plataformas; otras plataformas (Windows, macOS, Android, Linux) no requieren operaciones adicionales.
Este SDK usa "libwebp" como objetivo P/Invoke cuando se compila en una DLL. El script integrado del SDK Editor/RewriteWebpDllImport.cs lo reescribe automáticamente como "__Internal" durante las compilaciones de iOS, asegurando que IL2CPP genera las llamadas directas de símbolo correctas.
Nota:
Al compilar una aplicación para dispositivos iOS, primero renombra
Editor/RewriteWebpDllImport.txtdel paquete del SDK aEditor/RewriteWebpDllImport.cspara que el script surta efecto. Alternativamente, cambia directamente el sufijo del script en el paquete del SDK y cópialo al directorio Assets/Editor/ del proyecto.
Requisitos previos
El script RewriteWebpDllImport.cs usa la biblioteca de reescritura IL Mono.Cecil durante la compilación, por lo que debes añadirla como dependencia al proyecto primero. Hay dos formas; elige una.
Método 1: Añadir mediante el Package Manager (recomendado)
Abre la barra de menús de Unity Ventana → Administrador de paquetes, haz clic en el botón + de la esquina superior izquierda, elige Añadir paquete por nombre..., introduce el nombre com.unity.nuget.mono-cecil, introduce la versión 1.11.5, haz clic en Añadir y espera a que el Package Manager termine de instalar, como se muestra a continuación.

Añadir com.unity.nuget.mono-cecil por nombre en el Administrador de paquetes
Método 2: Editar manualmente manifest.json
Edita directamente el Packages/manifest.json del proyecto y añade una línea bajo dependencies:
{
"dependencies": {
"com.unity.nuget.mono-cecil": "1.11.5"
}
}
Después de guardar, vuelve a Unity; el Editor resolverá e instalará automáticamente la dependencia.
Flujo de trabajo de compilación
Después de completar la configuración previa, sigue el flujo de trabajo de compilación iOS estándar; RewriteWebpDllImport intervendrá automáticamente durante la compilación.
- Renombra
Editor/RewriteWebpDllImport.txtaEditor/RewriteWebpDllImport.cs(si aún no se ha renombrado). - En la barra de menús de Unity, selecciona Archivo → Build Settings, selecciona iOS de la lista de plataformas y haz clic en Switch Platform.
- Haz clic en Build (o Build And Run), selecciona un directorio de salida y genera el proyecto Xcode.
- Durante la compilación, el script reescribe automáticamente todas las entradas
DllImportdel SDK que apuntan a"libwebp"como"__Internal". Después de una compilación exitosa, la Console muestra un log similar a:
[RewriteWebpDllImport] Reescribió 77 entradas P/Invoke de "libwebp" a "__Internal".
- Abre el proyecto generado con Xcode y, en Build Phases → Link Binary With Libraries del objetivo, confirma que
libwebp.a,libwebpdemux.aylibsharpyuv.aestán enlazadas. - Conecta el dispositivo iOS, firma y ejecuta en Xcode.
Nota:
Si el log
[RewriteWebpDllImport]no aparece en la Console, normalmente significa que el script no surtió efecto — confirma que el sufijo del archivo se ha cambiado de.txta.csy que la dependencia Mono.Cecil está correctamente instalada.
Solución de problemas
| Mensaje de error | Causa | Solución |
|---|---|---|
Unable to load DLL 'libwebp' | El script no surtió efecto y DllImport sigue apuntando al nombre de la biblioteca dinámica | Confirma que RewriteWebpDllImport.txt se ha renombrado a .cs, recompila y comprueba el log de la Console |
Cannot find LCCSDK.dll in staging area | La DLL principal del SDK no se encontró durante la compilación y falta el objetivo de reescritura | Confirma que el SDK se ha importado correctamente al proyecto y que la DLL no está excluida de iOS mediante Exclude Platform |
Errores de compilación relacionados con Mono.Cecil (no se encuentra el namespace Mono.Cecil) | No instalado o versión no coincidente | Añade com.unity.nuget.mono-cecil@1.11.5 según "Requisitos previos" y espera a que el compilador vuelva a resolver |
Notas
- Se recomienda usar Unity 2022.3 LTS o superior (incluido Unity 6); no se puede garantizar la compatibilidad con Mono.Cecil e IL2CPP en versiones excesivamente antiguas.
- Si necesitas ejecutar en el Simulador de iOS, confirma que la biblioteca estática enlazada contiene la porción de arquitectura
arm64-simulator, de lo contrario el simulador no puede enlazar. - La configuración anterior solo afecta a la plataforma iOS. Los flujos de trabajo de compilación de Windows, macOS, Android y Linux no se ven afectados en absoluto, y no es necesario renombrar el script ni añadir la dependencia Mono.Cecil.