Cómo compilar theos tweak

Compilar ajustes con las bibliotecas de Theos puede ser un desafío para principiantes, lo que a menudo genera numerosos errores y, en última instancia, fallos de compilación. Buscar soluciones en línea en estos casos puede no dar resultados satisfactorios. Este tutorial le guiará a través del proceso de compilación de ajustes tanto para entornos root como para entornos root, lo que le permitirá crear paquetes DEB listos para instalar.
Una parte importante de la comunidad de jailbreak depende de tweaks de código abierto. Estos tweaks no solo sirven como ejemplos inspiradores de modificaciones del sistema iOS, sino también como una amplia base de conocimientos para quienes aspiran a desarrollar tweaks. Muchos de estos tweaks deben compilarse con Theos, un sistema de compilación multiplataforma para crear tweaks de iOS.
Las bibliotecas de Theos se instalan fácilmente en múltiples plataformas, como dispositivos iOS, macOS, Linux y PC con Windows. Esta flexibilidad permite a los desarrolladores compilar tweaks de jailbreak sin esfuerzo en diversos sistemas operativos. En esta guía, explicaremos paso a paso cómo compilar un tweak con Theos y distribuir paquetes DEB para su instalación.

En este tutorial sobre cómo compilar un tweak con Theos, utilizaremos el código fuente del tweak Sushi . Sushi está diseñado para mejorar tu experiencia de control multimedia en dispositivos jailbreakeados. Presenta un banner personalizable, inspirado en Dynamic Island, que se transforma suavemente en una vista de control multimedia mediante animaciones al cambiar la canción que se está reproduciendo.
El tweak Sushi se puede compilar con Theos tanto para jailbreaks rooteados como rooteados que se ejecuten desde iOS 13 hasta iOS 16. Dopamine 2 y Palera1n también son compatibles.
Cómo compilar un ajuste con Theos para iOS
Para compilar un ajuste con Theos, se recomienda usar la última versión de la biblioteca compatible con Sonoma 14.3.1. Si desea garantizar la compatibilidad con versiones de iOS anteriores a la 14.0, es necesario actualizar a Xcode 11.7. Sin embargo, para nuestra tarea actual, usaremos Xcode 14.3.1. Cabe destacar que Xcode 15 restringe la compilación de la mayoría de los ajustes de jailbreak.
Por lo tanto, esta nueva cadena de herramientas no admite la compilación para la antigua ABI. Si desea mantener la compatibilidad con versiones anteriores, puede obtener la cadena de herramientas de una versión anterior de Xcode y alternar entre esta y la nueva cadena de herramientas según desee configurando la versión de las herramientas de línea de comandos de Xcode.
Para compilar un ajuste de jailbreak con theos, siga los pasos:
Paso 1. Instale theos en su PC, Mac o dispositivo iOS siguiendo nuestra guía.
Paso 2. Instala iPhoneOS16.4.sdk descargando Xcode 14.3.1 o Xcode 11.7 directamente desde los servidores de Apple. Necesitarás autenticarte con tu Apple ID para descargarlo.
Paso 3. Abra la aplicación de terminal y extraiga Xcode_14.3.1.xip con el siguiente comando. Tras la extracción, cambie el nombre de la aplicación para que no entre en conflicto con su instalación principal de Xcode.
xip -x Xcode_14.3.1.xip
Paso 4. Mueva Xcode_14.3.1.app a la carpeta Aplicaciones.

Paso 5. Cambia la versión de las herramientas de línea de comandos de Xcode seleccionadas. El siguiente comando cambiará temporalmente la versión de las herramientas de línea de comandos solo para esta sesión de terminal.
export DEVELOPER_DIR=/Applications/Xcode_14.3.1.app/Contents/Developer
o permanente
sudo xcode-select -switch /Applications/Xcode_14.3.1.app/Contents/Developer
Si necesita utilizar la última cadena de herramientas de Xcode desde la línea de comandos, use --reset:
sudo xcode-select --reset
Paso 6. Clona el repositorio de ajustes de Sushi desde GitHub a tu computadora.
git clone https://github.com/Skittyblock/Sushi

Paso 7. La modificación de Sushi usa clases adicionales para usarlas en los paquetes de preferencias. Clona SkittyPrefs desde GitHub a la carpeta "prefs" dentro de la carpeta "Sushi".
cd Sushi && cd prefs && git clone https://github.com/Skittyblock/SkittyPrefs
Paso 8. Regrese a la carpeta principal "Sushi" en la aplicación de terminal.
cd ..
Paso 9. Cree la configuración de SPM ejecutando este comando.
make spm
Paso 10. Elimine los archivos objeto y ejecutables. Tenga en cuenta que debe ejecutar el comando "make clean" al cambiar entre compilaciones con y sin root.
make clean
Paso 11. Compila el ajuste de Sushi y genera un paquete DEB sin root para jailbreaks de Dopamine o Palera1n . Para compilaciones con root, elimina la opción "THEOS_PACKAGE_SCHEME=rootless".
make do THEOS_PACKAGE_SCHEME=rootless

Paso 12. Una vez finalizada la compilación, encontrarás los paquetes DEB (arm, arm64) del ajuste creado con Theos dentro de la carpeta "packages", ubicada en la carpeta "Sushi".

Errores comunes de compilación de Theos
El principal desafío al compilar ajustes con Theos suele deberse al uso de una versión incompatible de Xcode. Por ejemplo, Xcode 15 suele incluir la última versión del SDK de iPhone OS, como iPhoneOS17.2.sdk. Sin embargo, los ajustes suelen necesitar ser compatibles no solo con iOS 16, sino también con versiones anteriores como iOS 13, iOS 14 e iOS 15. En estos casos, es necesario instalar una versión anterior de Xcode 11.7.

Los siguientes errores pueden aparecer al ejecutar una versión incorrecta de Xcode:
- ld: advertencia: -multiply_defined está obsoleto
- ld: advertencia: ignorando bibliotecas duplicadas: '-lc++'
- ld: no se encontró el marco 'MediaRemote'
- clang: error: el comando del enlazador falló con el código de salida 1 (use -v para ver la invocación)
- make[4]: *** [/Usuarios/.../theos/makefiles/instance/library.mk:52: /Usuarios/.../.../.theos/obj/debug/arm64e/....dylib] Error 1
- error: 'groupTableViewBackgroundColor' está obsoleto: quedó obsoleto por primera vez en ios 13.0 [-Werror,-Wdeprecated-declarations] return [UIColor groupTableViewBackgroundColor];
- .../SDKs/iPhone017.2.sdk/ Sistema/Biblioteca/Frameworks/ UIKit.framework/Encabezados/UIInterface.h:247:48: n