Tutoriel : comment créer un thème Android
Vous rêvez de pouvoir apporter vos propres modifications de couleur ou d’images à votre rom actuel ? Vous avez effectué des recherches pour pouvoir y arriver mais lorsque vous apporter la modification sur votre appareil tout va mal. Voici un petit guide qui va vous apporter les grandes lignes pour réussir à créer votre thème sur Android, avec dans la foulée des tutos pour déodexer une ROM Android, décompilation, recompilation et modification d'une APK et enfin la création d'un VRTheme.
Avertissement
Cette procédure comporte des risques, si vous ne suivez pas la procédure comme il faut, vous pouvez vous retrouver avec un téléphone ou une tablette inutilisable. Ni AndroidPIT ni moi-même ne pourront être tenus responsables de quelconques dommages. Effectuez toujours une sauvegarde avant toutes modifications sur votre appareil !
Ce guide va s’effectuer en plusieurs points, n’hésitez pas à le relire plusieurs fois dans sa totalité ou point par point, pour bien en comprendre les subtilités.
Mais avant tout, pour pouvoir réaliser facilement vos modifications, il vous faudra une rom déodexée.
Petit rappel (Merci à Joe) :
Une rom dite “Odex” est une rom dans laquelle les applications et frameworks (.apk ou .jar) ont été optimisées pour la ROM et ses propres frameworks. La partie "code" de l'application (classes.dex et autres) a été extraite de l'application et est optimisée pour démarrer rapidement avec la machine virtuelle Dalvik.
Cependant, le fait d'avoir des fichiers .odex répartit le contenu d'une application sur deux fichiers (.apk/.jar et .odex), ce qui empêche les développeurs et modeurs de décompiler et modifier les applications facilement.
D’où l’intérêt pour eux de modifier une rom de sorte à ce que les fichiers .odex soient directement intégrés à l'application : les fichiers .odex sont alors au format .dex dans le .apk ou .jar, et la rom est dite “deodexée”.
Le deodexing permet ainsi de modifier plus simplement une application (et plus généralement l’interface d’une rom custom).
Du point de vue de l’utilisateur, rien ne change, mis à part le changement d’apparence de certaines applications.
- Donc si vous avez une ROM odexée, vous allez avoir vos applications avec l'extension .apk et des fichiers correspondants en .odex.
- Les ROMs déodexées n'ont pas de fichiers .odex.
- Si vous êtes sur une ROM stock ou opérateur (ROM originale ou mise à jour), elle est odexée.
Maintenant que le petit rappel a été fait, nous allons pouvoir nous attaquer aux choses sérieuses.
Prérequis :
Pour pouvoir suivre tous les points qui vont être abordés, il vous faudra :
- Un appareil Android Rooté (voir section appareil ou le forum)
- Un Recovery custom installé (voir section appareil ou le forum)
- Un éditeur de code source : Notepad++ que vous pouvez télécharger sur Notepad++ Home
- Un script pour déodexer votre rom (si vous êtes en stock) : j’utilise deodexer-4.4.x
- Les logiciels de compression winrar et 7zip.
Avec ceci nous allons pouvoir traiter les premiers points. Donc commençons !
Effectuez toujours un Nandroid Backup avant toute modification sur votre appareil, pour sauvegarder votre Rom actuelle allez sur l’onglet "Backup and restore" puis “backup” dans le custom recovery.
Déodexer une rom stock Android :
Une fois que vous avez téléchargé deodexer-4.4.x, décompressez-le sur votre bureau.
Attention, il faut savoir que le script ne fonctionnera pas si il se trouve dans un dossier dont le titre comporte des espaces. Par exemple si le titre du dossier se nomme “outil de déodexage” cela ne fonctionnera pas. Il faudra qu’il se nomme “outil-de-déodexage”.
Maintenant qu’il est décompressé, ouvrez le dossier. Vous devriez retrouver cela :
- Connectez votre appareil avec son cordon usb d’origine à votre PC.
- Double cliquez sur “deoall.bat” pour lancer le script.
- Tapez 1 puis Entrée
Le script est en train de récupérer votre rom entièrement. Soyez donc patient, très patient...
Une fois qu’il a terminé vous vous retrouvez de nouveau comme ceci :
Si vous retournez dans le dossier ou vous avez décompressé déodexer-4.4.x, dans le dossier “Rom” vous retrouvez la totalité de votre rom.
- Maintenant choisissez l’option 2 puis Entrer
Comme je suis sous une rom KitKat je choisi l’option 19 (pour savoir sous qu’elle version vous êtes allez dans “réglages/paramètres” => ”à propos du téléphone” => ”Version Android”)
- Choisissez à présent l’option 3 pour lancer le déodexage, soyez de nouveau extrêmement patient.
Vous remarquerez maintenant que vous avez 3 dossiers supplémentaires. Dans ces dossiers se trouvent vos .apk déodexés.
Maintenant nous allons les zipaligner (grace à cela nous allons, sans rentrer dans les détails, améliorer le lancement des .apk sans trop consommer de ram)
- Choisissez donc l’option 4
- Une fois terminé choisissez l’option 5 pour choisir le degrès de compression des .apk.
Si vous avez un appareil de dernière génération tapez 9, si par contre vous avez un appareil plus ancien tapez 5.
Une fois toutes les étapes terminée, vous retrouvez à nouveau 3 dossiers nouvellement créés. C’est dans ces 3 dossiers que vous retrouvez tous vos .apk déodexées et zipalignées près à être installée sur votre appareil.
Bonne installation !
Pardon ? Comment faits-vous pour installer tout ça sur votre appareil ?
- Soit vous prenez une .apk à la fois et vous le mettez dans le dossier adéquate avec les bonnes permissions.
- Soit vous créer un dossier .zip avec les .apk dedans que vous flashez depuis le recovery custom sur votre appareil.
Comment créer ce dossier zip ? Vous êtes gourmand !
Commencez par récupérer ce dossier qui vous servira de base. Puis renommé-le en utilisant par exemple le numéro de build de votre rom et ajoutez “déodexé-zipaligné”. Ce qui pourrait donner 23.0.A.93_déodexé-zippaligné.
Dans ce dossier, dans ‘system’, vous retrouvez 3 dossiers :
- app
- framework
- priv-app
Faite un copier/coller des apk se trouvant dans les dossiers zipaligned_ dans chaque dossier approprié (par exemple les apk se trouvant dans zipaligned_app vont se retrouver dans le dossier app)
S’y trouve également un dossier Meta.Inf, dans lequel se trouve les éléments qui vont permettre l'installation des APKs sur votre appareil. Vous pouvez également récupérer un META-INF dans une rom custom approprié à votre appareil.
Double cliquez sur le Meta-Inf et allez jusqu'à “/com/google/android” vous retrouvez 2 fichiers.
- Le Update-binary est essentiel pour que cela fonctionne sur votre appareil (il vous faudra dans tous les cas en récupérer un sur une rom custom adaptée à votre appareil, car pour l’instant je ne peux vous expliquer comment le créer)
- Le Updater-script est celui qui va donner les informations au recovery custom pour que les choses s’effectue (installer, supprimer, etc.)
Il vous faudra donc trouvez un update-binary adéquate, mais pour le udapter-script vous pouvez récupérer celui qui se trouve dans le dossier idoine.
Une fois que vous l’avez récupéré sur votre bureau, ouvrez le avec Notepad++
- Vous retrouvez cela :
Il y a des choses que vous pouvez personnaliser, mais attention de ne pas mettre de caractères spéciaux ni d’accents. Tout ce qui est encadré en rouge peut être modifié sans apporté de risque au flash.
Une fois votre updater-script modifié, faites un clic droit sur votre .zip puis aller sur 7zip puis ouvrir.
Double cliquez sur le META-INF, puis /com/google/android pour retrouver les 2 fichiers.
Supprimez l’Updater-script et collez celui que vous avez modifié. Puis supprimez l’extention .txt en faisant un clic droit dessus et choisissez “Renommer”.
Il ne vous reste plus qu’à placer le .zip sur votre mémoire interne ou votre sd card et à le flasher depuis le recovery custom. (Pensez bien à réaliser un nandroid backup avant le flash de votre zip)
- Install zip
- choose zip from /sd card
- Allez sur la .zip de votre rom et validez
Une fois terminé, revenez sur Reboot system now et validez, votre mobile va redémarrer automatiquement.
Le redémarrage après le flash peut être assez long, soyez patient.
Décompilation Recompilation d’un fichier .apk
Maintenant que vous avez une rom déodexée, vous allez pouvoir plus facilement modifier vos .apk. Mais pour arriver à les modifier correctement, il faudra passer par la case compilation/décompilation.
La décompilation va nous permettre de décrypter les fichiers se trouvant dans l’apk et ainsi vous permettre de modifier les images ou encore les fichiers .xml.
Prérequis :
Pour arriver à décompliller un .apk on utilise en générale un outil appelé “apktool”. Ici je vais vous faire télécharger un outil qui utilise apktool et qui vous permettra de décompiller et de pouvoir faire bien plus encore. Commencez donc par télécharger Tickle my Android 9.2.2 (en bas du premier post, "Download Tickle my Android".
Une fois celui-ci téléchargé, décompressez le et placez le à la racine de votre disque dur.
Voici ce que vous retrouvez à l’intérieur :
- 6 dossiers de travail nommés -WorkArea
- 1 dossier tool_files, vous ne vous en occuperez pas
- 1 dossier user_files, vous y retrouverez beaucoup de choses : les bootanimations, des icônes, des polices de caractères, les log de vos recompilations ...etc
- Le script Tickle my Android
Double cliquez sur “Tickle my Android” pour lancer le script
Choisissez le "Theming Menu" (tapez 2 et Entrée)
Raccordez votre appareil à votre PC en utilisant le cordon USB d'origine.
Choisissez "Pull Files From Device" pour récupérer des .APKs depuis votre appareil.
Nous allons récupérer le "Framework-res.apk" car nous allons avoir besoin de l'installer sur le PC pour qu'ApkTool puisse décompiler correctement vos apk comme le systemUI. Donc tapez 1 pour récupérer le "framework". Vous pouvez en profiter pour récupérer de suite le systemUI ainsi que le "twframwork-res.apk"
- Vous allez retrouver les .apk dans le dossier “_in” du “_WorkArea1”
Puis choisissez "Install Framework on PC" (tapez 3 et Entrer)
Si vous êtes sur un appareil Xperia de Sony, il vous faudra également installer le "SemcGenericUxpRes.apk".
Une fois les framework installés sur votre PC vous allez pouvoir commencer la décompilation de vos .APKs.
Revenez dans le "Theming menu".
Choisissez "Decompile Files" (tapez 5 et Entrée).
Choisissez le "framework_res.apk".
Tapez "Y" à la question puis "Entrée"
La décompilation est lancée.
Une fois la décompilation terminée, vous la retrouverez dans le dossier "_working".
Maintenant que vous avez réussi vos décompilations vous pouvez modifier correctement vos .png ou encore les fichiers .XML.
Modification des fichiers APK
Prérequis :
- Il vous faudra Notepad++
- Il vous faudra également un logiciel de retouche de photo comme Gimp, Photoshop....
- Un explorateur de fichiers sur votre appareil comme ES Explorateur de Fichiers, Root Explorer....
Vous avez certainement voulu au moins une fois modifier les png dans vos apk pour les rendre à votre goût. En faisant des recherches vous avez certainement pu lire qu'il était très simple de réaliser cela en ouvrant l'apk avec winrar et de coller dedans vos png. Cela fonctionne si vous avez gardé les bonnes proportions de votre image. Mais vous avez certainement du aussi rencontrez des problèmes si vous avez essayé de modifier les images nommées ***.9.png. Ou encore vous avez voulu modifier la couleur de certains textes, lors de l'ouverture du fichier .XML, le résultat étant illisible
Comment fait-on, vous allez me dire !
Et bien vous avez rendu cela possible lors de la décompilation de votre .apk.
Par exemple pour les images .9.png, si on ouvre notre dossier drawable-xhdpi sans être décompilé, nous voyons ça :
Maintenant le même dossier mais cette fois-ci décompilé :
Remarquez vous une différence ? Non ? Je vous invite à lire "Utilisation d'images 9-patch dans Android" pour une meilleure comphréhension.
Voyons un fichier XML compilé :
Difficile à lire et à modifier, n'est ce pas ?
Voyons ce même fichier décompilé :
Beaucoup plus simple à lire pour réaliser ce que l'on veut faire
Nous allons donc commencer par modifier un fichier XML. N'oubliez pas que je vous donnes les indications pour vous aider à la comphéhension pour apporter les modifications, je ne rentrerais pas dans de grande bidouille.
Nous allons voir comment modifier la couleur de l'heure et de la date dans la barre de notification.
Une fois votre systemUI décompilé, allez dans le dossier "res".
Puis dans "layout".
Recherchez "status_bar.xml"
Ouvrez le "status_bar.xml" avec Notepad++.
Je veux modifier l'apparence de l'heure, donc je recherche les lignes avec inscrit "textAppearance" (utilisez la fonction "recherche" [ctrl+f]) et je trouve la ligne
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="start|center" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:paddingStart="6.0dip" />
Et que vois-je dans cette ligne :
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
Ici on me dit que pour visualiser les infos de "TextAppearance.StatusBar.Clock" il faut aller dans le fichier "style".
=> "J'ai cherché partout dans "layout" mais impossible de trouver ce fichier style".
Il faut maintenant aller dans le dossier "values".
Vous trouvez le fichier "styles.xml".
Ouvrez le fichier "styles.xml" avec notepad++ et recherchez "TextAppearance.StatusBar.Clock".
Voilà ce que vous pourriez retrouver :
<style name="TextAppearance.StatusBar.Clock" parent="@android:style/TextAppearance.StatusBar.Icon">
<item name="android:textSize">16.0dip</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">@android:color/white</item>
Pour modifier la couleur du texte nous allons regarder la ligne "android:textColor">@android:color/white". La couleur indiquée est bien le blanc (white en anglais). Nous allons la modifier par la couleur rouge.
Nous allons donc intégrer le code héxadécimal de la couleur rouge. Vous pouvez aller sur proftnj.com pour avoir le code héxadécimal des couleurs. Nous trouvons donc le code "FF0000" pour la couleur Rouge. Si on l'intègre à notre ligne, elle devrait ressembler à :
android:textColor">#FF0000
Mais dans cette ligne il nous manque le code de transparence de la couleur, que l'on indique devant le code héxadécimal. Par exemple : 00 est pour 100% de transparence, 3F pour 75% de transparence, 7F pour 50% de transparence, BF pour 25% de tansparence. Ce qui nous donne :
- #00FF0000 - rouge avec 100% de transparence
- #3FFF0000 - rouge avec 75% de transparence
- #7FFF0000 - rouge avec 50% de transparence
- #BFFF0000 - rouge avec 25% de transparence
Notre ligne au final doit ressembler à :
<item name="android:textColor">#00FF0000</item>
Ce qui donne au final :
Vous pouvez effectuer la même procédure pour l'heure et la date dans la barre de notification étendue. Petit indice il faut regarder dans "status_bar_expanded.xml"
Vous retrouverez sur XDA developers des indications des xml qu'il faut modifier suivant ce que vous voulez réaliser.
Et la vous me dite : "t'es gentil mais je fais comment pour tester ?"
Pour visualiser les modifications sur votre appareil il vous faudra recompiler votre fichier en .apk. Pour cela lancez le script Tickle my Android, choisissez le "menu theming" puis l'option 16 (Recompile files). Choisissez le systemUI.
Il vous demande comment effectuer la signature de votre apk, prenez l'option 2, signature originale.
Une fois la recompilation terminée, vous retrouverez le "systemUI.apk" dans le dossier "_out"
Placez votre .apk sur la mémoire interne de votre appareil puis placez le dans le dossier /system/priv-app, en lui donnant les bonnes permissions, en utilisant votre explorateur de fichiers.
Vous en avez plein la tête ? J'espère que non car on à pas fini !
Passons au .png et .9.png. Pour les .png rien de compliqué, vous remplacez l'image que vous voulez en lui donnant les mêmes dimensions et le même nom. Pour un .9.png c'est un peu plus compliqué. Si vous avez regardé le lien que je vous ai donné plus haut, vous avez pu appercevoir qu'il y a un coutour de 1 pixel autour de l'image avec certaines partie en noir. Il ne faut donc surtout pas modifier ce contour. Si vous ouvrez votre image dans votre éditeur de photo vous pouvez visualiser quelque chose comme ça :
Une fois que vous avez modifié vos images, recompilez votre apk et installez-le sur votre appareil pour visualiser vos modifications. (N'oubliez pas de faire une sauvegarde).
Vous avez maintenant les bases pour créer votre thème.
Nous allons voir comment créer un VRthème pour flasher très facilement vos modifications sur vos appareils.
Création d'un VRthème :
Le VRThème c'est un .zip où vous allez placer vos images et vos fichiers modifiés. Pas de prise de tête à remettre la totalité du contenue du dossier d'origine. Pour cela commencez par télécharger le dossier "Base-VRTheme-.zip" pour vous aider à la construction.
Une fois le dossier de base téléchargé, décompressez-le. Vous vous retrouvez avec un dossier dans lequel se trouve plusieurs dossiers.
Le dossier vrtheme est important : c'est dans celui-ci que vous mettrez vos images et fichiers modifiés. Il faudra suivre l'arborecence que vous retrouvez pour les .APKs. Par exemple si vous voulez modifier des images dans le systemUI, allez dans /vrtheme/system/priv-app/systemUI/res/.
Là vous créez le dossier où se situe l'image à modifier et vous collez dedans votre image modifiée.
Si vous avez apporté des modifications mais une fois recompilé, impossible de récupérer le fichier modifié. Vous pouvez mettre directement vos apk dans /system.
Vous créez le dossier de réception et vous y mettez vos apk. Par exemple vous voulez mettre le framework_res.apk, créez le dossier framework dans lequel vous y mettez votre .APKs.
Pour vous aider à mieux comprendre, je vous mets à disposition un vrthème que j'ai réalisé pour le Galaxy Note 3.
Le voici en vidéo :
Une fois que vous avez apporté toutes vos modifications, il vous faut compresser le thème en .zip.
Ouvrez votre dossier VRThème et sélectionnez tous les dossiers.
Faite un clic droit sur votre sélection et allez sur "ajouter à l'archive".
Choisissez le format "zip" puis cliquez sur "ok".
Voilà vous avez votre dossier zippé.
N'oubliez pas de modifier le update-binary dans le dossier META-INF. Il faut le remplacer par l'update-binary adapté à votre appareil comme je vous l'ai expliqué dans la partie où vous déodexez votre rom. Vous pouvez également personnaliser l'Updater-script. Vous pouvez flasher directement votre zip depuis le custom recovery. Et surtout n'oubliez pas de réaliser une sauvegarde avant le flash de votre .zip !
J'espère que ce petit guide va vous aidez à mieux comprendre comment créer votre thème en toute simplicité. Des questions ? N'hésitez-pas !
Résultat... Prendre un launcher ça prend 2 mn mdr 😁
Je n'ai pas assez de mains pour applaudir comme il se doit un si magnifique tutoriel.
J'ai vu que je n'aurais pas de réels problèmes en ce qui concerne les .png et les .9.png
ainsi que pour les fichiers .xml
Mais pour le reste des manipulations je me sens très, très, très, larguée. C'est surtout que j'ai la trouille de me tromper.
Quoi qu'il en soit merci encore pour ce beau tuto. Je me lancerais lorsque je serais un peu plus aguerrie.
le mien tourne tres bien sur le 4.4.4 j attrnd juste la vrai version de lolipop 5.0
super tuto bravo a nos dev
La vache Sébastien...bravo! Super tutoriel!
Merci :D
Whaoouu bravo pour le tuto , pour la boutade :
Mufti j'y suis arrivé après 1550 heures ,lol
Et chapeau bas a celui qui a fait ce tuto. Un RTT offert !
Tuto super détaillé mais vache il faut vraiment en vouloir pour modifier une ROM juste pour des couleurs ! Du coup on peut encore dire chapeau bas à ceux qui les customisent depuis des années...