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).
Salut à tous,
Voici un petit tutoriel pour
_____________
/ INTRODUCTION \__________________________________________________________________________________________
\________________________________________________________________________________________________________/
Cette manipulation comporte des avantages et des inconvénients:
Avantages : -> Plus de problème de ralentissement dû à WinterBoard.
-> Vous approfondirez vos connaissances sur l'architecture d'iOS et vous apprendrez à vous servir des scripts (dans le cas présent, ce sera seulement pour renommer des fichiers).
Inconvénients : -> Certaines images ne pourront pas être modifiées (tant que je ne connais pas la technique, donc Neo'.. ).
-> Plus votre thème est important, plus les manipulations seront longues.
-> Pour appliquer/retirer votre thème vous serez obligé de passer par la case Cydia.
Ne vous inquiétez pas, une fois le travail terminé vous pourrez profiter pleinement de votre thème sans ralentissement
Pour l'instant il va falloir vous armer de patience
Pour ce tutoriel, je vais prendre comme exemple un thème très bête que j'ai déjà créé. Vous pourrez donc le télécharger pour voir le résultat.
Bon allons-y !
Pré-requis :
-> iFile
-> MobileTerminal
-> Un client SSH si vous souhaitez réaliser les manipulations sur ordinateur
J'ai la flemme de faire un sommaire, donc je vais avancer petit à petit
___________
/ I) : RAPPELS \____________________________________________________________________________________________
\________________________________________________________________________________________________________/
a) : Architecture d'iOS
Lorsque vous êtes dans le dossier racine (noté par un slash "/") voici les dossiers présents :
Applications
bin
boot
cores
dev
Developer
etc
lib
Library
mnt
private
sbin
System
tmp
User
usr
var
Nous nous intéresserons seulement aux dossiers Applications, Library, System et User.
Applications : les applications systèmes comme Messages, Météo, Rappels... ont chacune leur principal dossier ici.
Library : les fonds d'écran et sonneries du système sont localisés dans ce dossier.
Fonds d'écran => /Library/Wallpaper
Sonneries => /Library/Ringtones
System : les images de l'écran d'accueil, écran verrouillé et les sons sont situées dans cette partie de l'architecture dans plusieurs dossiers que j'indiquerai.
User : les applications dites de "l'utilisateur" ont chacune leur dossier dans cette partie. (Angry Birds, Whats App...)
b) : Les scripts
Présentation
Je vais faire un mini tuto pour ceux qui ne connaissent pas.
Les scripts sont des fichiers contenant des instructions dites "in shell" : elles s'exécutent comme dans un terminal.
Voici les principaux scripts (leurs noms sont en gras) utilisés pour les paquets de Cydia :
preinst : Il s'exécute avant l'installation du paquet.
postinst : Il s'exécute après l'installation du paquet.
prerm : Lui s'exécute avant la suppression du paquet.
postrm : Enfin celui là s'exécute après la suppression du paquet.
Vous pouvez également créer d'autres scripts si vous avez un paquet d'instructions à exécuter.
Son extension devra être .sh et vous pourrez utiliser l'instruction sh nomDeVotreScript.sh pour l'exécuter (vous pouvez mettre ce type d'instruction dans les scripts présentés ci-dessus).
Attention, les scripts principaux n'ont pas d'extension !
Ces fichiers sont dans le dossier DEBIAN avec le fichier control (si vous ne savez pas ce que c'est lisez ce tutoriel).
Structure d'un script bash
Un fichier script commence et se termine de la façon suivante :
#!/bin/sh
// Instructions
// ...
// ..
exit 0
N'apprenez pas ces lignes par cœur mais pour votre culture personnelle :
-> La première ligne représente un chemin SSH qui mène aux fichiers correspondants aux commandes utilisées.
-> La dernière ligne indique au shell que les instructions sont terminées.
Quelques commandes
Voici les commandes que nous allons utiliser :
cd : Permet de changer de dossier.
rm : Permet de supprimer un fichier.
mv : Permet de déplacer/renommer un fichier.
chmod : Permet de changer les droits d'un utilisateur sur un fichier (lire, écrire et exécuter).
cp : Permet de copier un fichier (on ne s'en servira pas, mais elle est connue).
La syntaxe générale se présente comme ceci :
nomDeMaCommande fichier/répertoire
Exemples :
Changer de répertoire : cd /var/mobile/Library
Supprimer un fichier : rm toto.txt
Déplacer un fichier : mv /System/Library/toto1.txt /Library/Application Support
Renommer un fichier : mv test.plist test1.plist
Changer les droits : chmod 777 /usr/lib/apr.exp
Copier un fichier : cp /Applications/test.txt /System/Library/CoreServices
Remarque : Le chiffre 777 ( pour la commande chmod) représente les différents droits que l'on accorde à un utilisateur.
Exemple
777 : Le propriétaire, les personnes appartenant à un groupe prédéfini et les utilisateurs ont le droit de lire, écrire et exécuter le fichier.
755 : Seul le propriétaire a le droit d'écrire dans le fichier concerné.
Vous pouvez changer de répertoire pour exécuter les commandes directement dans le dossier du fichier (voir exemple changer de répertoire et supprimer) ou bien indiquer son chemin après la commande (voir exemple pour copier)
Pour vous repérer dans votre script, vous pouvez utiliser la commande echo afin de marquer un texte indiquant ce que la/les commande(s) suivante(s)
fait/font.
Exemple :
echo Suppression du fichier toto..
rm toto.txt
echo Changement de répertoire
cd /usr/bin
J'ajouterai au fur et à mesure, mais l'essentiel est là
________________________________________________
/ II) : Pratique : modifier le fond du centre de notifications \_______________________________________________________
\________________________________________________________________________________________________________/
C'est parti !
a) : Création du dossier correspondant au thème ainsi que les chemins de chaque image
Pour modifier le fond du centre de notifications, il faut :
-> Un fond avec les dimensions suivantes 960x960 nommé BulletinListLinen@2x.png (http://www.mediafire.com/?zpk58zpdcxd1e3h)
-> Le même fond avec les dimensions 480x480 nommé BulletinListLinen.png (http://www.mediafire.com/?lhjq4aebx3q8hul)
-> Supprimer le fichier cache nommé com.apple.SpringBoard.notificationCenterLinen
Remarque : Les images portant un "@2x" dans leur nom font référence à des images qui sont utilisées uniquement pour les écrans retina.
Leurs chemins :
Les deux fonds => /System/Library/CoreServices/SpringBoard.app
Le fichier cache => /var/mobile/Library/Caches
Tout d'abord, allez dans /var/mobile
Créez un dossier qui a le même nom que celui de votre thème, puis à l'intérieur, créez les chemins des images utilisées (ci-dessus) et un dossier DEBIAN.
Cela donne : MonThème => DEBIAN
=> System => Library => CoreServices => SpringBoard.app
Copiez les deux images dans le dossier SpringBoard.app.
Ajoutez un caractère dans le nom de chaque image afin de les différencier des originaux (sinon il y aura un petit risque de conflit lors de l'installation)
Donc :
-> BulletinListLinen@2x.png devient BulletinListLinen1@2x.png
-> BulletinListLinen.png devient BulletinListLinen1.png
C'est juste pour différencier les deux fichiers, vous pouvez mettre le caractère que vous voulez
b) : Le dossier DEBIAN et les scripts
Maintenant que l'architecture de notre thème est préparée, nous allons attaquer les scripts.
Avant de commencer copiez ce fichier control dans le dossier DEBIAN (http://www.mediafire.com/?678zzo2c9bn284o)
Pour ceux qui l'ignorent, ce fichier contient les informations de votre paquet (version, nom, description...).
Passons aux scripts.
Dans le dossier DEBIAN, créez quatre fichiers sans extension ayant pour noms : preinst, postinst, prerm et postrm.
Dans chacun de ces fichiers recopiez la structure d'un fichier script décrite plus haut, puis supprimez ce qui se trouve entre la première et la dernière ligne.
Vous devriez avoir ceci :
#!/bin/sh
exit 0
Nous allons maintenant étudier chaque fichier, un par un.
preinst
preinst s'exécute avant l'installation du paquet.
Nous allons donc l'utiliser pour :
-> Modifier les droits du dossier SpringBoard.app (parfois Apple interdit la modification de fichier à l'intérieur de certains dossiers donc nous allons changer les droits pour être sûrs de pouvoir agir)
-> Renommer les fichiers originaux pour éviter les conflits
Mettez donc par précaution la commande chmod pour éviter tout problème.
D'après la syntaxe on a donc : chmod 777 /System/Library/CoreServices/SpringBoard.app
Maintenant que l'on est sûr de pouvoir faire ce qu'on veut, on doit se rendre dans ce dossier.
On a donc : cd /System/Library/CoreServices/SpringBoard.app
Remarque : Je vous conseille d'incorporer ces deux lignes comme ceci :
-> La commande cd doitêre présente dans chaque script pour chaque dossier utilisé
-> La commande chmod doit être utilisée dans le premier script qui est exécuté et dans le dernier à être exécuté.
Maintenant que nous sommes dans le dossier, il faut que nous renommions les deux originaux.
Nous allons donc avoir : mv BulletinListLinen@2x.png sauvegarde@2x.png
mv BulletinListLinen.png sauvegarde.png
Les nouveaux noms sont en vert (vous pouvez évidemment choisir d'autres nouveaux noms)
Et voilà, notre fichier preinst est terminé.
Voici son contenu :
#!/bin/sh
chmod 777 /System/Library/CoreServices/SpringBoard.app
cd /System/Library/CoreServices/SpringBoard.app
mv BulletinListLinen@2x.png sauvegarde@2x.png
mv BulletinListLinen.png sauvegarde.png
exit 0
postinst
postinst s'exécute après l'installation du paquet.
Nous allons donc l'utiliser pour :
-> Renommer les fichiers du thèmes avec les noms originaux (sinon ça ne va pas marcher )
-> Supprimer le fichier cache
-> Demander gentiment à Cydia de nous faire un respring après l'installation (pour que le thème prenne effet)
Comme pour le fichier précédent, on incorpore cette commande :
cd /System/Library/CoreServices/SpringBoard.app
Celle utilisée pour changer les droits n'est pas nécessaire ici car ils ont déjà été modifiés !
On renomme les fichiers (du thème ) : mv BulletinListLinen1@2x.png BulletinListLinen@2x.png
mv BulletinListLinen1.png BulletinListLinen.png
On supprime le fichier cache après avoir indiqué son chemin puis modifié les droits !
Cela donne : chmod 777 /var/mobile/Library/Caches
cd /var/mobile/Library/Caches
rm com.apple.SpringBoard.notificationCenterLinen
Notre postinst est terminé.
Voilà ce que ça donne (la commande pour demander un respring est en bleu) :
#!/bin/sh
chmod 777 /System/Library/CoreServices/SpringBoard.app
cd /System/Library/CoreServices/SpringBoard.app
mv BulletinListLinen1@2x.png BulletinListLinen@2x.png
mv BulletinListLinen1.png BulletinListLinen.png
chmod 777 /var/mobile/Library/Caches
cd /var/mobile/Library/Caches
rm com.apple.SpringBoard.notificationCenterLinen
declare -a cydia
cydia=($CYDIA)[/color]
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
exit 0
prerm
prerm s'exécute avant la suppression du paquet.
Nous allons donc l'utiliser pour :
-> Renommer les fichiers du thème avec leur nom initial
Cela donne : cd /System/Library/CoreServices/SpringBoard.app
mv BulletinListLinen@2x.png BulletinListLinen1@2x.png
mv BulletinListLinen.png BulletinListLinen1.png
Notre prerm est terminé.
Il ressemble à ceci :
#!/bin/sh
cd /System/Library/CoreServices/SpringBoard.app
mv BulletinListLinen@2x.png BulletinListLinen1@2x.png
mv BulletinListLinen.png BulletinListLinen1.png
exit 0
postrm
postrm s'exécute dès que le paquet a été désinstallé.
Nous devons donc :
-> Renommer les fichiers originaux qui étaient sous forme de sauvegarde avec leurs noms initiaux
-> Supprimer le fichier cache créé pour le fond d'écran de notre thème (cette mise en cache est spécifique au fond d'écran du centre de notifications, pas pour les icônes par exemple)
-> Remettre les droits initiaux
-> Demander à Cydia de faire un respring pour appliquer la modification
Le fichier postrm est terminé !
Cela donne donc :
#!/bin/sh
cd /System/Library/CoreServices/SpringBoard.app
mv sauvegarde@2x.png BulletinListLinen@2x.png
mv sauvegarde.png BulletinListLinen.png
chmod 755 /System/Library/CoreServices/SpringBoard.app
cd /var/mobile/Library/Caches
rm com.apple.SpringBoard.notificationCenterLinen
chmod 755 /var/mobile/Library/Caches
declare -a cydia
cydia=($CYDIA)
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
exit 0
Et voilà, vérifiez bien que les fichiers (control et les scripts) ont les permissions 0755 dans un logiciel comme WinSCP (en faisant clic droit puis Propriétés).
Maintenant, ouvrez MobileTerminal et tapez les commandes suivantes :
su
votre mot de passe (alpine par défaut)
dpkg -b nomDuDossierDeVotreTheme
Ensuite installez le .deb créé avec iFile puis regardez les messages pour voir s'il n'y a pas d'erreur (ça m'arrive très souvent ) !
Voici le paquet décompressé pour que vous puissiez analyser le tout !
___________
/ CONCLUSION \____________________________________________________________________________________________
\________________________________________________________________________________________________________/
Voilà, en espérant que ce tutoriel en ait aidé plus d'un, j'ajouterai des modifications si j'en vois la nécessité, mais officiellement c'est terminé
@+
(N'hésitez pas à signaler des fautes ou autre chose dérangeante !)
Dernière modification par iSeven (11-07-2012 17:14:38)
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
Vraiment interessant comme tutoriel. Continue
iPhone 4S 32Go iOS 5.1.1 Jailbreak avec Absinthe
iPod Touch 32Go iOS 5.1.1 Jailbreak avec Absinthe
Macbook Pro 13" fin 2011 sous OS X 10.6
Et aussi:
Netbook sous Fedora
Serveur Dell sous Debian
Hors ligne
@Neo : Merci pour le lien et évidemment tu peux modifier la forme
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
Voilà qui est fait, j'espère que cette mise en page ne te dérangera pas !
Tu as bien structuré ton tuto, j'ai essayé de le faire ressortir...
Si ça ne convient pas fais-moi signe !
Au fait, j'épingle !
PS : il faudrait peut-être avertir concernant les risques encourus si ces manipulations sont faites de manières hasardeuses...
C'est niquel merci
Ouais je ferai ça quand j'aurai le temps, et si j'en ai un peu plus, je ferai peut être un "vrai" tuto sur les scripts.
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
Salut, on ne peut pas simplement remplacer à l'arrache les images unes par unes ?
Expert microsoudure me contacter par mail ou directement sur mon site
Hors ligne
Salut, on ne peut pas simplement remplacer à l'arrache les images unes par unes ?
Yop,
Oui bien sûr mais si un jour tu veux virer les images pour remettre le thème original ou en mettre un autre, tu vas trouver ça chiant
Là le but c'est d'automatiser tout le processus avec les scripts
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
Décidément, je viens de m'inscrire sur ce forum et grâce à toi j'en apprends des choses, moi qui me demandait comment forcer un respring après l'install d'un tweak via Cydia ^^
Encore une fois merci
Hors ligne