Comment compiler le tweak theos

Compiler des modifications avec les bibliothèques Theos peut s'avérer complexe pour les débutants, entraînant souvent de nombreuses erreurs et des échecs de compilation. Dans ce cas, chercher des solutions en ligne peut s'avérer insatisfaisant. Ce tutoriel vous guidera tout au long du processus de compilation de modifications pour les environnements rootless et rootful, aboutissant à la création de paquets DEB prêts à installer.
Une part importante de la communauté du jailbreak dépend de modifications open source. Ces modifications servent non seulement de démonstrations inspirantes des modifications apportées au système iOS, mais aussi de bases de connaissances complètes pour les développeurs de modifications. Nombre de ces modifications doivent être compilées avec Theos, un système de compilation multiplateforme pour la création de modifications iOS.
Les bibliothèques Theos sont facilement installables sur de multiples plateformes, telles que les appareils iOS, macOS, Linux et les PC Windows. Cette flexibilité permet aux développeurs de compiler facilement des modifications de jailbreak sur différents systèmes d'exploitation. Dans ce guide, nous vous expliquerons étape par étape comment compiler une modification avec Theos et distribuer les packages DEB pour l'installation.

Dans ce tutoriel sur la compilation d'un tweak avec Theos, nous utiliserons le code source du tweak Sushi . Sushi est conçu pour améliorer votre expérience de contrôle multimédia sur les appareils jailbreakés. Il propose une bannière personnalisable, inspirée de Dynamic Island, qui passe en douceur à une vue de contrôle multimédia grâce à des animations lorsque le morceau en cours de lecture change.
Sushi tweak peut être compilé avec Theos pour les jailbreaks rootless et rootful fonctionnant d'iOS 13 à iOS 16. Dopamine 2 et Palera1n sont également pris en charge.
Comment compiler un tweak avec theos pour iOS
Pour compiler un tweak avec Theos, il est recommandé d'utiliser la dernière version de la bibliothèque compatible avec Sonoma 14.3.1. Pour garantir la compatibilité avec les versions d'iOS antérieures à 14.0, une rétrogradation vers Xcode 11.7 est nécessaire. Néanmoins, pour notre tâche actuelle, nous utiliserons Xcode 14.3.1. Il est important de noter que Xcode 15 restreint la compilation de la plupart des tweaks de jailbreak.
Par conséquent, cette nouvelle chaîne d'outils ne prend pas en charge la compilation pour l'ancienne ABI. Si vous souhaitez conserver la prise en charge des versions antérieures, vous pouvez récupérer la chaîne d'outils d'une version antérieure de Xcode et basculer entre celle-ci et la nouvelle chaîne d'outils selon vos besoins en définissant la version des outils de ligne de commande Xcode.
Pour compiler un tweak de jailbreak avec theos, suivez les étapes :
Étape 1. Installez theos sur votre PC, Mac ou appareil iOS en suivant notre guide.
Étape 2. Installez iPhoneOS16.4.sdk en téléchargeant Xcode 14.3.1 ou Xcode 11.7 directement depuis les serveurs Apple. Vous devrez vous authentifier avec votre identifiant Apple pour télécharger.
Étape 3. Ouvrez l'application Terminal et extrayez Xcode_14.3.1.xip avec la commande suivante. Après l'extraction, renommez l'application pour qu'elle n'entre pas en conflit avec votre installation principale de Xcode.
xip -x Xcode_14.3.1.xip
Étape 4. Déplacez Xcode_14.3.1.app vers le dossier Applications.

Étape 5. Modifiez la version des outils de ligne de commande Xcode sélectionnés. La commande suivante modifiera temporairement la version des outils de ligne de commande pour cette session de terminal uniquement.
export DEVELOPER_DIR=/Applications/Xcode_14.3.1.app/Contents/Developer
ou permanent
sudo xcode-select -switch /Applications/Xcode_14.3.1.app/Contents/Developer
Si vous devez utiliser la dernière chaîne d'outils Xcode à partir de la ligne de commande, utilisez --reset :
sudo xcode-select --reset
Étape 6. Clonez le référentiel Sushi Tweak de GitHub sur votre ordinateur.
git clone https://github.com/Skittyblock/Sushi

Étape 7. L'optimisation Sushi utilise des classes supplémentaires pour les bundles de préférences. Clonez SkittyPrefs depuis GitHub vers le dossier « prefs » du dossier « Sushi ».
cd Sushi && cd prefs && git clone https://github.com/Skittyblock/SkittyPrefs
Étape 8. Revenez au dossier principal « Sushi » dans l'application Terminal.
cd ..
Étape 9. Créez la configuration SPM en exécutant cette commande.
make spm
Étape 10. Supprimez les fichiers objets et exécutables. Veuillez noter que vous devez exécuter la commande « make clean » lors du passage d'une version root à une version sans root.
make clean
Étape 11. Compilez le tweak Sushi et générez un package DEB rootless pour les jailbreaks Dopamine ou Palera1n . Pour une build rootful, supprimez l'option « THEOS_PACKAGE_SCHEME=rootless ».
make do THEOS_PACKAGE_SCHEME=rootless

Étape 12. Une fois le processus de compilation terminé, vous trouverez les packages DEB (arm, arm64) du tweak créé avec Theos dans le dossier « packages » situé dans le dossier « Sushi ».

Erreurs courantes de compilation de theos
La principale difficulté rencontrée lors de la compilation de modifications avec Theos provient souvent de l'utilisation d'une version incompatible de Xcode. Par exemple, Xcode 15 est généralement fourni avec la dernière version du SDK d'iPhone OS, comme iPhoneOS17.2.sdk. Cependant, les modifications doivent généralement être compatibles non seulement avec iOS 16, mais aussi avec des versions antérieures comme iOS 13, iOS 14 et iOS 15. Dans ce cas, l'installation d'une version antérieure de Xcode 11.7 devient indispensable.

Les erreurs suivantes peuvent apparaître lors de l’exécution d’une mauvaise version de Xcode :
- ld : avertissement : -multiply_defined est obsolète
- ld : avertissement : ignorer les bibliothèques en double : '-lc++'
- ld : framework « MediaRemote » introuvable
- clang : erreur : la commande du linker a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)
- make[4]: *** [/Users/.../theos/makefiles/instance/library.mk:52: /Users/.../.../.theos/obj/debug/arm64e/....dylib] Erreur 1
- erreur : « groupTableViewBackgroundColor » est obsolète : d'abord obsolète dans iOS 13.0 [-Werror, -Wdeprecated-declarations] return [UIColor groupTableViewBackgroundColor] ;
- .../SDKs/iPhone017.2.sdk/System/Library/Frameworks/ UIKit.framework/Headers/UIInterface.h:247:48: n