Forum iPhone, iPod et iPad, Apple TV, Apple Watch et Mac en français par iPhoneSoft pour les systèmes iOS, macOS, tvOS et watchOS
Vous n'êtes pas identifié(e).
Hello,
Aujourd'hui je vais vous apprendre à programmer un tweak pour Cydia (qui fonctionnera sous MobileSubstrate)
Tout se fera directement sur l'appareil
Attention ! : sachez que toutes les manipulations qui vont suivre ne sont pas sans risque ! Vous êtes habitués à faire planter votre appareil à cause de conflits entre paquets, certes, mais là vous êtes vraiment dans la programmation de tweaks, donc faites extrêmement attention.
Ni moi, ni iPhoneSoft ne pourrons être tenus responsables d'un quelconque plantage sur votre appareil donc suivez ce tutoriel à vos risques et périls !
Pré-requis :
- savoir programmer, en Objective-C
- un iPhone/iPod/iPad jailbreaké sous iOS 3.X/4.X/5.X/6.X
- 1Go d'espace libre.
- iFile (disponible à 4$ sur BigBoss) : le meilleur explorateur de fichiers pour iPhone/iPod/iPad, c'est avec lui que vous programmerez.
- MobileTerminal v520-2 (disponible sur la source de Saurik) : le (seul ?) terminal de Cydia qui va vous permettre un bon nombre de choses.
- BigBoss Recommended Tools 1.3.1 : les commandes pour installer Theos et le SDK d'iOS 3.0.
- Mobile Substrate : créé par le créateur de Cydia, cette plateforme va modifier le code d'iOS (classes et headers). Tous les tweaks en sont dépendants.
- Ce dossier contenant certains fichiers du tweak réalisé : http://www.mediafire.com/?yffoq1akheuhqpf
Utilisation des couleurs :
Dans ce tutoriel chaque couleur représentera quelque chose de particulier :
- le bleu représentera un chemin ou une arborescence dans iFile/un logiciel SSH
- le rouge représentera des choses/notions importantes
- le vert représentera des commandes/du texte dans MobileTerminal
Si une couleur n'a rien à voir avec tout ça, je le préciserai
Quelques explications :
Theos : plateforme constituée de plusieurs outils permettant de coder des applications/tweaks sans l'aide de Xcode. Tout comme Xcode, il vous génèrera automatiquement chaque fichier nécessaire au bon fonctionnement de votre tweak.
SDK : simplement le kit de développement d'une version d'iOS. Il y aura plus d'explications par la suite
Vous pourrez coder depuis votre ordinateur et ensuite copiez les fichiers sur l'appareil via iFunBox ou autre logiciel.
I : Téléchargement et installation de Theos
II : Création d'un projet avec NIC
III : Explications des différents fichiers constituant un projet
IV: Codage et compilation du tweak UnlockGreeter
V : Amélioration du tweak avec des options.
VI : Liens
Allons-y
Partie I
Après avoir rempli les pré-requis, assurez-vous que Cydia est fermée (désactivez-la dans le multitâche si vous avez activé la clé UIApplicationExitsOnSuspend dans le fichier Info.plist)
En effet, il faut que le processus dpkg soit libre sinon certaines dépendances de Theos ne seront pas installées et ça ne fonctionnera pas bien (passez par SBSettings aussi et fermez Cydia dans Processes).
Il est temps d'installer Theos et le SDK d'iOS 3.0.
Pourquoi le SDK d'iOS 3.0 et pas celui qui correspond à la version de mon appareil ?
La raison est simple : pour avoir le SDK de votre version il faut déjà que vous soyez développeur Comme la majorité ici ne le sont pas on travaillera avec le SDK d'iOS 3.0 (ça fonctionne très bien) mais ne vous en faites pas je vous passerai un lien pour avoir les headers d'iOS 5/6 et je vous expliquerai comment et où les copier.
Pour ceux qui sont développeurs, il existe un script créé par Ryan Petrich qui vous permettra de copier les fichiers du SDK vers votre appareil (cherchez install-sdk sur son GitHub). Personnellement il n'a jamais fonctionné pour moi depuis qu'Apple a déplacé le dossier Developer de Mac dans le dossier de Xcode 4.5, donc utilisez ma technique pour être sûr d'avoir tous les headers.
Bon installons notre Theos
Ouvrez MobileTerminal et entrez les commandes suivantes :
su
votre mot de passe (alpine par défaut)
cd /
installtheos3
Une tonne de lignes vont s'afficher, ne vous inquiétez pas, c'est normal. Pendant le téléchargement et l'installation, MobileTerminal peut vous demander s'il doit installer des dépendances, Tapez Y puis entrée à chaque fois.
L'installation peut durer très longtemps, cela dépend de votre connexion
Une fois terminée nous allons juste faire une petite vérification pour s'assurer que la majorité des fichiers a été installée correctement.
- Ouvrez iFile
Allez dans le dossier /var (en partant du dossier racine /) et vérifiez que deux dossiers nommés "sdk" et "theos" soient bien présents.
Dans le dossier sdk, vérifiez que l'arborescence est la suivante :
Developer
System
usr
Entitlements.plist
ResourceRules.plist
SDKSettings.plist
Dans le dossier theos, vérifiez celle-ci :
bin
include
lib
makefiles
mod
templates
LICENSE
Prefix.pch
Si tous ces dossiers sont présents, c'est un premier bon signe
Nous allons maintenant créer notre projet
Partie II
Présentation du projet :
Bon ne vous attendez pas à un super tweak comme Auxo ou Barrel il s'agit juste de comprendre comment ça fonctionne
Le tweak que nous allons coder affichera une UIAlertView (alerte) lorsqu'on déverrouillera notre appareil, vous voyez rien de bien exceptionnel Nous ajouterons des options accessibles via les réglages qui permettront de modifier le texte de l'alerte.
Présentation de NIC 2.0 :
New Instance Creator est un utilitaire qui va générer tous les fichiers de votre projet, un peu comme Xcode.
Pour le lancer, ouvrez MobileTerminal et entrez les commandes suivantes :
su
votre mot de passe (alpine par défaut)
cd /
$THEOS/bin/nic.pl
Normalement, une petite interface (en lignes de commande) apparaît.
Raccourcis pour Mobileterminal :
Comme vous le voyez, lors de la création d'un tweak/d'une application via Theos, on utilise beaucoup le terminal. Taper les mêmes commandes plusieurs fois va vite devenir fatiguant. C'est pourquoi je vous conseille de les ajouter en raccourci
- Cliquez sur la petite icône blanche à droite et au-dessus du clavier.
- Cliquez sur Shortcut Menu
- Cliquez sur +
- Dans Menu Label vous mettez le nom du raccourci, ici on créé un projet avec Theos donc on peut l'appeler : Theos project creation
- Dans Shortcut Action vous mettez la commande qui, pour la création d'un projet, est la dernière que l'on a vu à savoir : $THEOS/bin/nic.pl
- Cliquez ensuite sur Done
Vous devriez voir votre raccourci apparaître dans le menu de la petite flèche bleue
Continuons la création de notre projet
Après avoir entré la commande de création, une petite interface apparaît.
Vous voyez une sorte de menu numéroté avec des mots bizarres Ces mots représentent juste les différentes templates.
Retenez que dans notre cas, une template est un "type" de projet. Voici les différents types que propose Theos :
- [1.] iphone/application : une application qui a son icône sur l'écran d'accueil (comme Cydia, iFile, LivePapers..)
- [2.] iphone/library : une bibliothèque, cela ne nous concerne pas.
- [3.] iphone/preference_bundle : création d'un onglet dans l'application Réglages pour paramétrer les tweaks.
- [4.] iphone/tool : création d'un outil comme unzip, unrar etc..
- [5.] iphone/tweak : création d'un tweak qui modifiera le code d'iOS
Il faut donc taper le numéro correspondant à la template que nous souhaitons utiliser. Dans notre case, c'est le 5.
Ensuite Theos vous demande le nom du projet, tapez : UnlockGreeter.
Tapez ensuite le nom du paquet sous cette forme : eu.votrepseudo.unlockgreeter.
Tapez ensuite le nom de l'auteur/gérant du tweak, en l'occurrence votre pseudo : votre pseudo.
Enfin Theos vous demande un certain filtre pour MobileSubstrate, tapez directement entrée (car on va modifier une méthode propre à l'écran d'accueil, si on voulait modifier une application native on devrait indiquer l'ID de son bundle)
Si tout s'est bien passé, le mot Done devrait s'afficher
Partie III
Le dossier de votre projet est dans le répertoire racine de l'iOS (/).
Après l'avoir ouvert, vous devriez avoir l'arborescence suivante :
theos
control
Makefile
Tweak.xm
UnlockGreeter.plist
Voyons le rôle de chacun :
theos : c'est simplement un lien symbolique vers le dossier /var/theos pour que le compilateur puisse accéder aux outils de Theos.
control : fichier control de votre paquet (.deb), pour plus d'informations allez voir le tutoriel "Le Debian de A à Z".
Makefile : fichier indispensable pour la compilation, il contient diverses informations sur certaines commandes de Theos pour la compilation, le nom du tweak et les frameworks nécessaires.
Tweak.xm : c'est le fichier qui va contenir le code source de votre projet.
UnlockGreeter.plist : fichier qui indique le bundle à utiliser pour Mobile Substrate.
Modifier le code d'iOS :
Voici le moment que vous attendez tous, la modification du code d'iOS, voyons comment ça fonctionne.
"Hooker" les classes et les méthodes :
Hooker ? késako ?
Voici le principe fondamental du "hooking", alors lisez bien
Hooker des classes/des méthodes consiste à ajouter des lignes de code avant ou après l'appel de la méthode et donc de "modifier" légèrement la classe.
Explication avec un exemple :
Imaginons une méthode s'appelant enableWifi dont le prototype est le suivant :
- (void)enableWifi:(id)arg1 :(id)arg2;
Notre méthode prend donc comme argument deux objets dont on ignore l'identité et ne renvoie rien
Maintenant on va supposer qu'on détient le header de la classe où cette méthode est déclarée, nous l'appellerons WifiActivationController.
Donc on a :
- WifiActivationController : nom de la classe où notre méthode est déclarée
- enableWifi : nom de notre méthode
Voyons maintenant les mots-clés du hooking :
%hook ClassName : le mot hook précédé du symbole % et suivi du nom de la classe indiquera au compilateur la classe que l'on souhaite modifier.
Dans notre cas nous devrons écrire au début de notre fichier Tweak.xm : %hook WifiActivationController
Ensuite nous écrivons le corps de la méthode que l'on souhaite modifier :
- (void)enableWifi:(id)arg1 :(id)arg2
{
%orig;
}
%orig est le mot clé qui indique au compilateur qu'on appelle la méthode, donc que l'on exécute son vrai code.
Si on appelle la méthode avec ses arguments originaux, nous mettons %orig;
Si on souhaite l'appeler avec des arguments personnalisés (entendez par là, nos propres arguments), nous mettons par exemple : %orig(nil, object1);
Pour une méthode qui renvoie une valeur, vous devez mettre à la fin return %orig pour qu'elle puisse renvoyer la valeur originale.
Attention, vous ne devez jamais oublier ce mot-clé sinon la méthode n'exécutera pas son code initial et vous vous retrouverez avec un joli Safe Mode (peut-être pire)
Nous avons donc pour le moment :
%hook WifiActivationController
- (void)enableWifi:(id)arg1 :(id)arg2
{
%orig;
}
Enfin nous devons indiquer au compilateur la fin de notre modification, à part si l'on souhaite modifier une autre méthode
Cette fin est déclarée grâce au mot-clé %end
Notre fichier final, sans modification apportée au code, sera donc de la forme suivante :
%hook WifiActivationController
- (void)enableWifi:(id)arg1 :(id)arg2
{
%orig;
}
%end
Maintenant si on veut modifier la méthode, on ajoute du code avant ou après son appel avec le mot-clé orig
En gros ça donne ça :
- (void)enableWifi:(id)arg1 :(id)arg2
{
/* Code
exécuté
avant
l'appel
*/
%orig;
/* Code
exécuté
après
l'appel
*/
}
Ceci est un schéma vraiment simple, car on ne modifie qu'une classe alors que l'on peut en modifier plusieurs
Vous pouvez également utiliser le mot clé %log qui permet d'écrire un message dans le log du système sur l'appel de la méthode, sa classe, son nom et ses arguments.
Vous pouvez aussi créer vos propres méthodes avec le mot-clé %new(typeencoding) où typeencoding fait référence au type d'encodage de l'Objective-C (regardez la doc sur le site d'Apple).
Exemple où l'on va modifier plusieurs classes et plusieurs méthodes (tout le code est dans le même fichier) :
%hook Classe1
- (id)methode1DeLaClasse1: (int)argument1
{
// On fait une addition
// On verrouille l'appareil
%orig;
}
%end
%hook Classe2
- (void)methode1deLaClasse2
{
%orig;
// On affiche une UIAlertView par exemple
%log;
}
- (BOOL)methode2deLaClasse2: (id)arg1
{
return NO;
}
%new(v@:)
- (void)maPropreMethode
{
[self appendString:@"Yeah"];
}
%end
Voilà un exemple un peu plus parlant, enfin j'espère
Bon même si vous n'avez pas trop pigé l'exemple, vous comprendrez mieux pendant le codage du tweak
Partie IV
C'est parti pour le codage de UnlockGreeter
Codage :
Allez dans le dossier créé par Theos dans le répertoire racine, il doit s'appeler unlockgreeter.
Ouvrez le fichier Tweak.xm et effacez son contenu.
Petit rappel, notre tweak doit afficher une UIAlertView après le déverrouillage de notre appareil, il va donc nous falloir la méthode qui s'exécute pour faire disparaître l'écran de verrouillage et accéder à l'écran d'accueil.
Je vais pas vous laisser chercher pendant trois heures voici la classe et la méthode à modifier
SBAwayController est le nom de notre classe.
- (void)deactivate est le prototype de notre méthode.
Vous vous souvenez de la syntaxe ?
Voilà à quoi va ressembler notre fichier :
%hook SBAwayController
- (void)deactivate
{
%orig;
}
%end
C'est bien beau tout ça, mais notre tweak ne fait absolument rien Là j'appelle juste la méthode originale
Nous voulons qu'une alerte s'affiche lorsque nous avons déverrouillé l'appareil, donc c'est après l'appel de la méthode ce qui veut dire après le mot-clé %orig
Voici le code de notre alerte :
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIAlertView *greeting = [[UIAlertView alloc] initWithTitle:@"Hey !" message:@"Votre premier tweak fonctionne !" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Okay", nil];
[greeting show];
[greeting release];
[pool drain];
Nous allons donc le placer après le mot clé %orig (sauf la déclaration de l'objet NSAutoreleasePool) ce qui donne :
%hook SBAwayController
-(void)deactivate {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
%orig;
UIAlertView *greeting = [[UIAlertView alloc] initWithTitle:@"Hey !" message:@"Votre premier tweak fonctionne !" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Okay", nil];
[greeting show];
[greeting release];
[pool drain];
}
%end
Et voilà notre code est prêt !
Il faut maintenant indiquer à Theos le nom des frameworks que nous avons utilisés
Maintenant fermez le fichier Tweak.xm en cliquant sur OK.
Ouvrez le fichier Makefile.
Ajoutez la ligne suivante après celle-ci : UnlockGreeter_FILES = Tweak.xm
UnlockGreeter_FRAMEWORKS = UIKit Foundation
Fermez le fichier.
Nous voilà prêts pour la compilation
Compilation :
Pour la compilation, nous allons utiliser MobileTerminal
Ouvrez le terminal puis entrez les commandes suivantes :
su
votre mot de passe (alpine par défaut)
cd /
cd unlockgreeter
Il y a trois commandes à connaître :
- make : cette commande compilera votre projet en .dylib
- make package : cette commande créera l'architecture de votre paquet (dossier "_" dans le dossier de votre projet) et le fera
- make package install : cette commande est juste une combinaison des deux premières mais elle se contentera d'installer le paquet
Dans notre cas, et sentant que vous êtes pressés de voir le résultat, nous allons utiliser make package install
Tapez donc make package install à l'intérieur du dossier unlockgreeter
Si tout se passe bien votre appareil va relancer sa partie logicielle (respring).
Déverrouillez-le et admirez
Partie V
C'est bien, le tweak fonctionne seulement il y a un petit problème.. il affichera une alerte à chaque fois que vous déverrouillerez votre appareil
C'est pourquoi nous allons créer des réglages pour l'activer et le désactiver ainsi que d'autres options pouvoir modifier l'alerte
Préférences
Comme vous devez sûrement le savoir, les réglages de chaque tweak fonctionnent grâce à PreferenceLoader qui permet entre autre de les intégrer dans l'application native d'iOS.
Le fonctionnement de ces réglages dépend de deux fichiers .plist au minimum ou plus selon les tweaks
Dans notre cas nous n'aurons besoin que de deux fichiers .plist :
- Un fichier nommé UnlockGreeter.plist qui définira l'architecture de vos réglages (pour plus d'informations, regardez mon tutoriel pour créer ses propres .plist) et qui sera dans /Library/PreferenceLoader/Preferences
- Un fichier nommé eu.iseven.unlockgreeter.plist (j'ai mis mon pseudo pour l'exemple, faites attention de tout modifier (nom du fichier & dans le code) si vous mettez le vôtre) qui constituera un fichier de sauvegarde pour chaque option (Apple procède de la même façon pour sauvegarder votre appareil) et qui sera dans /var/mobile/Library/Preferences
Je vous les ai préparés donc prenez-les directement dans le dossier téléchargé au préalable
Il va falloir modifier le code pour que le tweak fonctionne suivant les réglages qui ont été définis
Je vais copier directement le code modifié et vous l'expliquer ligne par ligne.
%hook SBAwayController
-(void)deactivate {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSDictionary *prefs=[[NSDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/eu.iseven.unlockgreeter.plist"]; // On définit un NSDictionary qui va charger notre fichier de sauvegarde
%orig;
/*
* On définit trois NSString qui représenteront les valeurs sauvegardées, donc les choix de l'utilisateur
*/
NSString *customTitle = (id)[prefs objectForKey:@"title"];
NSString *customText = (id)[prefs objectForKey:@"text"];
NSString *customButtonText = (id)[prefs objectForKey:@"buttonText"];
/*
* On définit trois NSString représentant le texte par défaut si l'utilisateur n'a pas coché l'option Custom Text
*/
NSString *title = @"Welcome Back !";
NSString *text = @"Your tweak is great !";
NSString *buttonText = @"Ok";
/*
* La première condition vérifie si la clé enabled est activée
*/
if ([[prefs objectForKey:@"enabled"] boolValue])
{
/*
* Si l'option customText est activée, les valeurs du fichier de sauvegarde sont assignées aux valeurs principales.
*/
if ([[prefs objectForKey:@"customText"] boolValue])
{
title = customTitle;
text = customText;
buttonText = customButtonText;
}
/*
* On remplace les valeurs de l'UIAlertView par les NSString précédents
*/
UIAlertView *greeting = [[UIAlertView alloc] initWithTitle:title message:text delegate:nil cancelButtonTitle:nil otherButtonTitles:buttonText, nil];
[greeting show];
[greeting release];
}
/*
* On met à jour le fichier .plist
*/
[prefs release];
[pool drain];
}
%end
Et voilà
Dès que l'utilisateur activera un des interrupteur dans les réglages, le fichier de sauvegarde se mettra à jour automatiquement et le tweak lira les valeurs sauvegardées
Recompilez comme tout à l'heure après avoir copié chaque fichier .plist dans son répertoire respectif
Déverrouillez votre appareil, allez dans les réglages et testez chaque option
Partie VI
C'est bien beau tout ça mais maintenant vous vous demandez sûrement comment développer vos propres tweaks ?
Et bien c'est "simple" en fait, il suffit de parcourir les headers du SDK, repérer les méthodes qui réalisent les actions que vous souhaitez modifier et les hooker dans le fichier Tweak.xm
Pour vous aider, voici quelques liens très utiles si vous souhaitez vous lancez dans la programmation de tweaks :
- TweakWeek, plein de tweaks gratuits en open-source sur GitHub : http://tweakweek.com
- Site de iKyle, développeur de CardSwitcher : http://iky1e.tumblr.com
- Stackoverflow, le meilleur site d'entraide pour iOS et tout autre langage de programmation : http://stackoverflow.com
Bonne chance à vous !
Dernière modification par iSeven (13-07-2013 09:04:21)
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Hors ligne
Oui bravo à toi même s'y je ne tenterai pas
Ipad mini 16 go blanc iOS 6.1 evasioné 1.3
iphone 3GS evasioné iOS 6.1.2 evasioné 1.4
N'oublies pas de passer en "RESOLU"en modifiant ton premier post si ton problème est réglé
N'hésites pas à me tutoyer ou à m'envoyer un mail si jamais tu as besoin de mon aide
Samsung galaxy Y androïd 2.3.6 retrouvé au fond du placard XD
Hors ligne
Ça s'annonce prometteur tout ça
J'espère, vérifie si j'ai pas fait de fautes dans mes explications car il y a tellement de choses à expliquer
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Je ne m'y connais pas du tout en programmation maus le tuto a l'air super. Pourras tu rajouter des screenshots quand le tuto sera terminé ? Le tuto sera plus joli. Sino bonne chance pour la suite, ça va intéresser du monde.
iPod Touch 4 Noir 8 Go IOS 6.1 Evasi0nné
Hors ligne
Je ne m'y connais pas du tout en programmation maus le tuto a l'air super. Pourras tu rajouter des screenshots quand le tuto sera terminé ? Le tuto sera plus joli. Sino bonne chance pour la suite, ça va intéresser du monde.
Ouais j'en rajouterai
Merci
Dernière modification par iSeven (23-03-2013 18:32:13)
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
J'espère, vérifie si j'ai pas fait de fautes dans mes explications car il y a tellement de choses à expliquer
Dans l'ensemble c'est très bien expliqué et très clair je trouve ! (pour une fois que je n'ai rien à redire )
À part peut-être cette phrase, juste rajouter que parfois il faut modifier si on ne "hook" pas le SpringBoard :
Enfin Theos vous demande un certain filtre pour MobileSubstrate, tapez directement entrée.
Pour le code à la fin, je pense que tu expliqueras probablement plus concrètement dans la suite du tuto, alors ça va !
Bravo à toi !
Hors ligne
Avec le boulot qui a été fourni, je pense que le tuto pourrait être épinglé.
iPod touch 4 8go
iOS 5.1.1 Jailbreaké
"L'innovation c'est ce qui distingue un leader d'un suiveur" Steve Jobs
Hors ligne
Merci
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Bravo a toi iSeven !!
Moi qui me ventait savoir configuré des themes et applications, je ne t'arrive même pas a la cheville...
En tout cas, encore bravo a ton travail précieux pour la communauté !
Je pense que tu vas émoustillé la curiosité d'un important nombre de personnes !
Hors ligne
Bravo a toi iSeven !!
Moi qui me ventait savoir configuré des themes et applications, je ne t'arrive même pas a la cheville...
En tout cas, encore bravo a ton travail précieux pour la communauté !
Je pense que tu vas émoustillé la curiosité d'un important nombre de personnes !
Merci
Et puis on est là pour s'entraider, pas pour se comparer
Je connais juste les bases de la programmation avec Theos, je ne suis pas capable de te pondre un tweak comme Auxo, Barrel etc..
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Oui mais bon, faut s'y connaitre !
Moi perso je ne me lancerais jamais la dedans.
Hors ligne
Ça peut toujours être enrichissant ...
iPod touch 4 8go
iOS 5.1.1 Jailbreaké
"L'innovation c'est ce qui distingue un leader d'un suiveur" Steve Jobs
Hors ligne
Bah le but de ce tutoriel n'est pas d'assimiler l'Objective-C, mais plutôt d'avoir quelques connaissances sur le fonctionnement de Mobile Substrate et de comprendre le principe du hooking, la preuve : le tweak codé ne fait rien d'extraordinaire x)
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Merci pour ce bon tuto Je me suis toujours demandé comment se programmait un tweak ! Par contre je suis pour le moment sur le C, donc l'objective-C serra pour plus tard
Hors ligne
Excellent ! Tu n'imagine même pas comment tu m'as rendu happy, moi qui croyait que la prog de Tweak ou d'appli iPhone ne se faisait que via Xcode
Qui plus est super tuto, vraiment très bien expliqué je vais me dépécher de bouffer mon bouquin sur l'Objective-C via GNUstep pour utiliser Theos du coup, mais sur Linux !
Un grand merci à toi
Dernière modification par SynnyG (15-05-2013 15:29:39)
Hors ligne
Salut,
En général, ça veut dire que tu as beaucoup trop de sources installées.
Vires en quelques unes et recommence la manip
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
merci pour le partage. :D
Hors ligne
MERCI iSeven
Cela fonctionne tres bien avec mon ipod 4 5.1.1
mais avec mon iPhone 4 6.1.3 cela ne fontionne pas
quand j'installe theos j'ai des message erreur
il me manque des fichier voici quelque erreur que je rencontre
ln: failed to create synbolic link libstdc++.dylib : File exists
ln: failed to create synbolic link libobjc.dylib : File exists
ln: failed to create synbolic link libsystem.dylib : File exists
Hors ligne
Salut,
En gros la commande ln (qui permet de créer des liens symboliques) ne peut pas agir car des liens symboliques de ces librairies (.dylib) existent déjà.
C'est pas grave
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
le probleme sur mon iphone 4 est lors de la compilation
voici le message erreur
Making all for tweak unlockgreeter...
Linking tweak unlock greeter...
Undefined symbols:
"_OBJC_CLASS_$_UIAlertview", referenced from :
__objc_classrefs__DATA@0 in tweak.xm.7afc6a07.o
ld:symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [obj/unlockgreeter.dylib.64873355.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [unlockgreeter.all.tweak.variable] Error 2
Hors ligne
Salut,
Tu as bien importé UIKit/UIKit.h dans ton fichier Tweak.xm ? Et ajouté le framework UIKit dans le fichier Makefile ?
Hors ligne
Je ne sais pas si c'est une solution mais vérifie si tu as installe le BigBoss Recommanded Tools sur Cydia
iTOUCH 4 explosé 32 go noir/Galaxy S2 blanc rooté/Blackberry Curve 8520
iPhone 4s 32 go blanc non JB/iPhone 3GS 16 Go noir JB
Hors ligne
Je ne sais pas si c'est une solution mais vérifie si tu as installe le BigBoss Recommanded Tools sur Cydia
Ca n'a rien à voir, ce paquet installe juste le script qui permet de télécharger theos et le SDK d'iOS 3
iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013
Auteur de Crystal, Emerald et Sapphire (Cydia)
N'hésitez pas à me poser des questions : https://twitter.com/iSeven
Hors ligne
Ok, j'étais pas sur mais maintenant je suis fixé
iTOUCH 4 explosé 32 go noir/Galaxy S2 blanc rooté/Blackberry Curve 8520
iPhone 4s 32 go blanc non JB/iPhone 3GS 16 Go noir JB
Hors ligne