So kompilieren Sie Theos Tweak

Das Kompilieren von Tweaks mit Theos-Bibliotheken kann für Neulinge eine Herausforderung darstellen und oft zu zahlreichen Fehlern und schließlich zu Kompilierungsfehlern führen. Die Online-Suche nach Lösungen führt in solchen Fällen möglicherweise nicht zu zufriedenstellenden Ergebnissen. Dieses Tutorial führt Sie durch den Kompilierungsprozess von Tweaks sowohl für Rootless- als auch für Rootful-Umgebungen und erstellt installationsfertige DEB-Pakete.
Ein erheblicher Teil der Jailbreak-Community ist auf Open-Source-Jailbreak-Tweaks angewiesen. Diese Tweaks dienen nicht nur als inspirierende Demonstration von iOS-Systemmodifikationen, sondern auch als umfassende Wissensdatenbank für angehende Tweak-Entwickler. Viele dieser Tweaks müssen mit Theos kompiliert werden, einem plattformübergreifenden Build-System zur Erstellung von iOS-Tweaks.
Die Theos-Bibliotheken lassen sich problemlos auf verschiedenen Plattformen installieren, z. B. auf iOS-Geräten, macOS, Linux und Windows-PCs. Diese Flexibilität ermöglicht es Entwicklern, Jailbreak-Optimierungen mühelos für verschiedene Betriebssysteme zu kompilieren. In dieser Anleitung finden Sie eine Schritt-für-Schritt-Anleitung zum Kompilieren einer Optimierung mit Theos und zum Verteilen von DEB-Paketen zur Installation.

In diesem Tutorial zum Kompilieren eines Tweaks mit Theos verwenden wir den Quellcode des Sushi-Tweaks . Sushi wurde entwickelt, um Ihre Mediensteuerung auf Geräten mit Jailbreak zu verbessern. Es führt ein anpassbares Banner ein, das von Dynamic Island inspiriert ist und durch Animationen nahtlos in eine Mediensteuerungsansicht übergeht, sobald sich der aktuell abgespielte Song ändert.
Sushi Tweak kann mit Theos sowohl für Rootless- als auch Rootful-Jailbreaks kompiliert werden, die von iOS 13 bis iOS 16 laufen. Dopamine 2 und Palera1n werden ebenfalls unterstützt.
So kompilieren Sie einen Tweak mit Theos für iOS
Um einen Tweak mit Theos zu kompilieren, empfiehlt es sich, die neueste Version der Bibliothek zu verwenden, die mit Sonoma 14.3.1 kompatibel ist. Um die Kompatibilität mit iOS-Versionen vor 14.0 sicherzustellen, ist ein Downgrade auf Xcode 11.7 erforderlich. Für unsere Aufgabe verwenden wir jedoch Xcode 14.3.1. Beachten Sie, dass Xcode 15 die Kompilierung der meisten Jailbreak-Tweaks einschränkt.
Daher unterstützt diese neuere Toolchain das Erstellen für die alte ABI nicht. Wenn Sie die Unterstützung für frühere Versionen beibehalten möchten, können Sie die Toolchain aus einer früheren Xcode-Version verwenden und nach Bedarf zwischen dieser und der neueren Toolchain wechseln, indem Sie die Version der Xcode-Befehlszeilentools festlegen.
Um einen Jailbreak-Tweak mit Theos zu kompilieren, folgen Sie den Schritten:
Schritt 1. Installieren Sie theos auf Ihrem PC, Mac oder iOS-Gerät, indem Sie unserer Anleitung folgen.
Schritt 2. Installieren Sie iPhoneOS16.4.sdk, indem Sie Xcode 14.3.1 oder Xcode 11.7 direkt von den Apple-Servern herunterladen. Zum Herunterladen müssen Sie sich mit Ihrer Apple-ID authentifizieren.
Schritt 3. Öffnen Sie die Terminal-App und extrahieren Sie Xcode_14.3.1.xip mit dem folgenden Befehl. Benennen Sie die App nach dem Extrahieren um, damit es nicht zu Konflikten mit Ihrer primären Xcode-Installation kommt.
xip -x Xcode_14.3.1.xip
Schritt 4. Verschieben Sie Xcode_14.3.1.app in den Anwendungsordner.

Schritt 5. Ändern Sie die Version Ihrer Xcode-Kommandozeilentools. Der folgende Befehl ändert die Version Ihrer Kommandozeilentools vorübergehend nur für diese Terminalsitzung.
export DEVELOPER_DIR=/Applications/Xcode_14.3.1.app/Contents/Developer
oder dauerhaft
sudo xcode-select -switch /Applications/Xcode_14.3.1.app/Contents/Developer
Wenn Sie die neueste Xcode-Toolchain über die Befehlszeile verwenden müssen, verwenden Sie --reset:
sudo xcode-select --reset
Schritt 6. Klonen Sie das Sushi-Tweak-Repository von GitHub auf Ihren Computer.
git clone https://github.com/Skittyblock/Sushi

Schritt 7. Sushi Tweak verwendet einige zusätzliche Klassen für die Verwendung in Einstellungspaketen. Klonen Sie SkittyPrefs von GitHub in den Ordner „prefs“ innerhalb des Ordners „Sushi“.
cd Sushi && cd prefs && git clone https://github.com/Skittyblock/SkittyPrefs
Schritt 8. Kehren Sie zum Hauptordner „Sushi“ in der Terminal-App zurück.
cd ..
Schritt 9. Erstellen Sie eine SPM-Konfiguration, indem Sie diesen Befehl ausführen.
make spm
Schritt 10. Entfernen Sie Objekt- und ausführbare Dateien. Beachten Sie, dass Sie beim Wechsel zwischen Root- und Rootless-Builds den Befehl „make clean“ ausführen müssen.
make clean
Schritt 11. Kompilieren Sie Sushi Tweak und generieren Sie ein rootless DEB-Paket für Dopamine- oder Palera1n- Jailbreaks. Für rootful Builds entfernen Sie die Option "THEOS_PACKAGE_SCHEME=rootless".
make do THEOS_PACKAGE_SCHEME=rootless

Schritt 12. Sobald der Kompilierungsprozess abgeschlossen ist, finden Sie die DEB-Pakete (arm, arm64) des mit Theos erstellten Tweaks im Ordner „packages“ im Ordner „Sushi“.

Häufige Theos-Kompilierungsfehler
Die größte Herausforderung beim Kompilieren von Tweaks mit Theos liegt oft in der Verwendung einer inkompatiblen Xcode-Version. Beispielsweise wird Xcode 15 normalerweise mit der neuesten Version des iPhone OS SDK, z. B. iPhoneOS17.2.sdk, ausgeliefert. Tweaks müssen jedoch häufig nicht nur mit iOS 16, sondern auch mit früheren Versionen wie iOS 13, iOS 14 und iOS 15 kompatibel sein. In solchen Fällen ist die Installation einer älteren Version von Xcode 11.7 erforderlich.

Beim Ausführen einer falschen Xcode-Version können die folgenden Fehler auftreten:
- ld: Warnung: -multiply_defined ist veraltet
- ld: Warnung: doppelte Bibliotheken werden ignoriert: „-lc++“
- ld: Framework „MediaRemote“ nicht gefunden
- clang: Fehler: Linker-Befehl mit Exitcode 1 fehlgeschlagen (verwenden Sie -v, um den Aufruf anzuzeigen)
- make[4]: *** [/Users/.../theos/makefiles/instance/library.mk:52: /Users/.../.../.theos/obj/debug/arm64e/....dylib] Fehler 1
- Fehler: „groupTableViewBackgroundColor“ ist veraltet: erstmals veraltet in iOS 13.0 [-Werror,-Wdeprecated-declarations] return [UIColor groupTableViewBackgroundColor];
- .../SDKs/iPhone017.2.sdk/ System/Bibliothek/Frameworks/ UIKit.framework/Headers/UIInterface.h:247:48: n