Nous utilisons les cookies sur ce site pour améliorer votre expérience utilisateur. OK
15 min de lecture 85 partages 9 Commentaires

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.

LV1A3278
Comment créer un thème sur Android. © AndroidPIT

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 :

deodexer1

déodexer-4.4.x, l'outil pour déodéxer une ROM stock. / © ANDROIDPIT

  • Connectez votre appareil avec son cordon usb d’origine à votre PC.
  • Double cliquez sur “deoall.bat” pour lancer le script.

deodexer2

Script déodexer-4.4.x / © ANDROIDPIT

  • 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 :

deodexer2

Script déodexer-4.4.x / © ANDROIDPIT

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.

deodexer6

Dossier /system / © ANDROIDPIT

  • 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”)

deodexer3

Choisissez la version de l'API correspondant à votre appareil Android. / © ANDROIDPIT

  • Choisissez à présent l’option 3 pour lancer le déodexage, soyez de nouveau extrêmement patient.

deodexer5

La déodexation est en cours ! / © ANDROIDPIT

Vous remarquerez maintenant que vous avez 3 dossiers supplémentaires. Dans ces dossiers se trouvent vos .apk déodexés.

deodexer7

Les dossiers contenant les APKs déodexées. / © ANDROIDPIT

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

deodexer8

Zipalignation en cours... / © ANDROIDPIT

  • 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.

deodexer10

Le niveau de compression dépend de votre appareil. / © ANDROIDPIT

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.

deodexer9

Les APKs, zipalignées se retrouvent dans les dossiers correspondants. / © ANDROIDPIT

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 :

deodexer11

Dossiers à remplir / © ANDROIDPIT

  • 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 :

deodexer12

Le Updater-script. / © ANDROIDPIT

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.

deodexer13

Modification du Updater-script : attention à ne pas tout changer... / © ANDROIDPIT

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”.

deodexer20

Renommez l'Updater-script pour retirer l'extension .txt. / © ANDROIDPIT

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

Tickle my android

Le script Tickle my Android. / © ANDROIDPIT

Choisissez le "Theming Menu" (tapez 2 et Entrée)

Tickle my android personnalisation

Le menu Personnalisation, / © ANDROIDPIT

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.

Tickle my android recuperation sur appareil

"Pull files from device" permet d'extraire les fichiers APK du smartphone Android. / © ANDROIDPIT

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
Tickle my android personnalisation
Install framework on PC. / © ANDROIDPIT

Puis choisissez "Install Framework on PC" (tapez 3 et Entrer)

Tickle my android installer res sur pc
Installation des fichiers -res sur le PC. / © ANDROIDPIT

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".

Tickle my android personnalisation
Décompilation des fichiers.  / © ANDROIDPIT

Choisissez "Decompile Files" (tapez 5 et Entrée).

Tickle my android decompilattion
Choisissez votre .apk. / © ANDROIDPIT

Choisissez le "framework_res.apk".

tickle my android decompilation framework res
Acceptez d'écraser les fichiers existants. / © ANDROIDPIT

Tapez "Y" à la question puis "Entrée"

La décompilation est lancée.

tickle my android decompilation framework res en cour

Décompilation en cour / © ANDROIDPIT

Une fois la décompilation terminée, vous la retrouverez dans le dossier "_working".

tickle my android decompilation framework res dossier working
Dossier _working / © ANDROIDPIT

Bravo ! vous avez décompilé votre premier fichier .APKs.

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....
ES Explorateur de Fichiers Install on Google Play Root Explorer Install on Google Play

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 :

drawable xhdpi compile
Drawable-xhdpi compilé / © ANDROIDPIT

Maintenant le même dossier mais cette fois-ci décompilé :

drawable xhdpi decompile
Drawable-xhdpi décompilé / © ANDROIDPIT

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é :

fichier XML compile
Fichier XML compilé.  / © ANDROIDPIT

Difficile à lire et à modifier, n'est ce pas ?

Voyons ce même fichier décompilé :

fichier XML decompile
Le même fichier XML, décompilé. / © ANDROIDPIT

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".

SystemUI res
SystemUI, ouvert. / © undefined

Puis dans "layout". 

SystemUI res layout
Dossier layout / © ANDROIDPIT

Recherchez "status_bar.xml"

SystemUI res layout syatus bar
status_bar.xml / © ANDROIDPIT

Ouvrez le "status_bar.xml" avec Notepad++.

status bar notepd
Status_bar.xml dans Notepad++ : les choses sérieuses commencent ! / © ANDROIDPIT

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".

values
Dossier values. / © ANDROIDPIT

Vous trouvez le fichier "styles.xml".

values styles
Fichier styles.xml. / © ANDROIDPIT

Ouvrez le fichier "styles.xml" avec notepad++ et recherchez "TextAppearance.StatusBar.Clock".

styles notepd recherche
Recherche dans Notepad++. / © ANDROIDPIT

Voilà ce que vous pourriez retrouver :

styles notepd
TextAppearance.StatusBar.Clock dans Notepad++. / © ANDROIDPIT

<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 :

Mofication couleur heure status bar
Le début de votre premier thème sur Android ! / © ANDROIDPIT

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"

Mofication couleur heure status bar expanded
status_bar_expanded, modifié. / © ANDROIDPIT

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.

Tickle my android personnalisation
Recompilation sur Tickle My Android. / © ANDROIDPIT

Il vous demande comment effectuer la signature de votre apk, prenez l'option 2, signature originale. 

signature originale
Signature de l'apk. / © ANDROIDPIT

Une fois la recompilation terminée, vous retrouverez le "systemUI.apk" dans le dossier "_out"

dossier out systemUI
Dossier _out. / © ANDROIDPIT

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.

systemUI permissions
Permissions apk. / © ANDROIDPIT

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 : 

Image 9 bordures
Attention à la bordure de 1 pixel : ne la modifiez surtout pas ! / © ANDROIDPIT

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.

VRTheme
VRThème / © ANDROIDPIT

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/.

VRTheme system
/vrtheme/system / © ANDROIDPIT

Là vous créez le dossier où se situe l'image à modifier et vous collez dedans votre image modifiée. 

VRTheme system systemui res
/systemUI/res... / © ANDROIDPIT

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.

VRTheme System apk
/system. / © ANDROIDPIT

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.

vrtheme selection
Sélection des dossiers. / © ANDROIDPIT

Faite un clic droit sur votre sélection et allez sur "ajouter à l'archive".

vrtheme selection ajouter
Ajouter à l'archivele thème. / © undefined

Choisissez le format "zip" puis cliquez sur "ok".

vrtheme selection ajouter formatzip
Format de l'archive. / © ANDROIDPIT

Voilà vous avez votre dossier zippé.

vrtheme formatzip
VRThème compressé. / © ANDROIDPIT

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 !

85 partages

9 Commentaires

Ecrire un nouveau commentaire :

Nous utilisons les cookies sur ce site pour améliorer votre expérience utilisateur. Plus d'informations

J'ai compris