Créer votre propre Thème pour votre android, c'est facile ;)

Modifié le dimanche, 24 juin 2012 15:18 par Phyrax — Catégorisé en: Android, Android - Personnalisation

Vous aussi vous êtes impressionné par les jolies thèmes des roms de cyano, vous aussi vous tournez sur une rom android sans rosy/sense... mais vous ne savez pas comment vous y prendre? Alors, je vais vous expliquer ;)

Suivez le guide :p

Pour commencer, je vais décomposer le tuto en deux parties... la partie simple (qui vous permettra de faire 80% du thème si vous faites un thème foncé (mais 100% des thèmes clairs :p) :

Il s'agit de la modification des images du thème.

Puis en second, je vais vous parler du plus dur : la modification des couleurs des textes :p

Pensez bien a bien lire le tuto avant de commencer a faire n'importe quoi :p

et si quelque chose vous semble confus n'hésitez pas à lire le topic de création de thème du forum (créé par zaraki): ICI

Le Grand 1 facile :

Pensez a gardez un milieu de travail PROPRE !!!

Non je ne vous parle pas de nettoyer votre bureau, de faire les poussières et de virer la bouteille de coca ou le vieux paquet de tuc a moitié entamé, mais bien de penser à travailler proprement, se faire un dossier "source" a part, où vous stockerez vos images et un dossier "ThemeMOD" (par exemple) où vous modifierez vos apk et quand vous aurez fini. Vous virerez l'inutile pour le transformer en update.zip.

Ne pas travailler directement dans la pour laquelle vous faites le thème. Et gardez votre dossier source organisé, avec une arborescence identique à celle d'une rom (c'est le plus simple même si ça oblige à faire pleins de clics)



Changer des images dans un fichier APK :

Extraire le fichier APK :

Il faut déjà savoir qu'un fichier APK n est rien d'autre qu'un simple fichier ZIP. Pour winrar, il suffit de l'ouvrir puis de l'extraire... Pour les autres, j'avoue que je ne sais pas comment ça se passe, mais dans tous les cas simplement renommer le fichier en .zip au lieu du .apk permet d'extraire le fichier avec n'importe quel logiciel de décompression.

Pensez a extraire l'apk dans un dossier a son nom.

Importer les images dans le dossier extrait :

Voici l'étape fondamentale pour faire un thème : le remplacement des images (qui bien-sur ne peut pas se faire directement, d'où l'étape d'avant et l'étape suivante ;) ) Alors là c'est encore aussi simple... il suffit de faire un copier coller des images préalablement choisit dans le dossier de l'apk extraite.

Si vous voulez modifier des images, c'est possible aussi, il suffit de sortir gimp et de modifier les images avec, et hop le tour est joué (je ne vais pas vous apprendre a vous servir d'un logiciel de retouche d'images, je ne sais déjà pas m'en servir moi-même)

Refaire le fichier apk a partir du dossier modifié

Alors là c'est le plus dur :p

Vous reprenez un logiciel tel que 7zip, et vous compressez le dossier en .zip (bien-sur la méthode de compression optimale est la meilleure puisque la place est limitée sur le téléphone ^^) et renommez le .zip en .apk

Puis vous le signez avec ceci pour cela : -->vous extrayez le zip que je vien de vous faire téléchargé à la racine de votre dossier de travail -->vous lancez un cmd (sous linux, il faudra faire des recherches, je tourne sous windows désolé...) -->vous tapez :

java -jar signapk.jar testkey.x509.pem testkey.pk8 nom_de_votre_zip_sans_espace.zip nom_de_votre_apk_maintenant_signee.zip

et hop maintenant vous avez votre bel apk modifié... mais a quoi cela sert-il? qu'estce qu'on en fait maintenant ? et d'ailleurs c'est bien beau tout ça mais qu'est ce que je modifit moi? c'est trop abstrait ça !

Pas de paniques, je vais vous parlé plus concrètement de se que vous pouvez modifié

bien-sur, je ne vais pas vous faire une liste exostive de tout les fichiers et qu'estce qu'ils font, ça serait trop long et vous ne liriez pas tout...

mais pour simplifié, il y a deux composants principaux dans une rom (du point de vu thème !) : -->le framework-res.apk -->le launcher.apk

Voici a peu près les fichiers que j'ai identifié là dedans

Dans le framework :



->Dans \framework-res\res\drawable\ : ->la barre de notification : statusbar_background.png ->la barre qu'on fait glissé pour voir les notifications : status_bar_close_on.9.png ->le wallpaper par défaut : default_wallpaper.jpg ->divers boutons : tout se qui commence par "btn_" (les miniatures suffisent à trouvé lequel c'est ->les emoticones : tout se qui commence par "emo_im" ->les icones dans les barres de menu : "ic_menu_" ->le fond des pop up (donc pour modifié le lockscreen et toutes les autres fenêtres d'information) : ->popup_full_dark.9.png ->popup_top_dark.9.png ->popup_center_dark.9.png ->popup_bottom_dark.9.png ->les icones dans la barre de notification : tout se qui commence par : "stat_" ->les icones en général : "ic_" (là c'est vague mais vous trouverez pas mal de truck trop divers, c'est pour ça que c'est a la fin de la liste ^^)

Dans le launcher :

->\launcher\res\drawable ->les wallpaper : "wallpaper_" ->les miniature des wallpaper : "wallpaper_..._small.jpg" ->le fond du launcher : "pattern_carbon_fiber_dark.png" ->le reste c'est divers icones non modifié

->\launcher\res\drawable-port\ et .\drawable-land ->l'icone du launcher a l'état normal : tray_handle_normal.png ->l'icone du launcher quand il est sélectionné (avec le trackpad en général) : tray_handle_selected.png ->l'icone du launcher quand vos mettez votre doigt dessus ou que vous appuyé sur le trackpad après l'avoir sélectionné : tray_handle_pressed.png ->la barre du launcher quand vous supprimé une icone du bureau, que vous la déplacé ou que vous y mettiez une : delete_handle.png et delete_handle_normal.png ->l'image sur la barre du launcher : "ic_" (en fonction des situations) ->le fond du widget de recherche (il me semble) : "search_bg.9.png"

Attention aux images .9.png :

En effet pour pouvoir remplacer une de ces images il vous faut parfois les passer dans eclipse (j'en ai eu besion qu'une fois mais il faut verifié quand même quand vous les modifié ^^), un tuto est disponible sur XDA

Avec ça, vous pouvez obtenir des truks comme ça :

thème blanc

thème blanc

theme militaire

theme militaire

thème blanc-bleu

thème blanc-bleu








































On aime ou on n'aime pas... là n'est pas la question mais là on voit que l'on peut modifié vraiment déjà tout android, on a plu de limites :p

Bien-sur, là les widget ont été modifié, et les icônes aussi mais ça, ça se passe dans les dossiers apk des applications pour les icônes (je ne peut pas vous dire quel sera le nom du fichier de l'icône... mais suffit d'affiché les miniature sur votre OS pour voir laquelle est celle a modifié... et pour les Widgets inclut de base, ça se passe dans settings et music.

Reconstruire notre Rom

Pour reconstruire votre ROM, il suffit simplement de la compresser au format ZIP , puis de signer le fichier obtenu

- Voyons tout d abord une structure simple pour mettre a jour les fichiers que vous avez modifié

Pour créer un fichier update.zip, nous devons avoir deux répertoires en racine : Un répertoire "system" Et un ensemble de répertoire sous-répertoire : "META-INF\com\google\android"

Dans le répertoire "system" créer deux répertoire, un répertoire "app», contenant les applications APK que vous avez modifiez, et un répertoire "framework", contenant le fichier "framework-res.apk" et le fichier "services.jar" que vous avez créé.

Dans le répertoire "android" (situé dans "META-INF\com\google\»), créer un fichier "update-script" (SANS EXTENSION), et ajoutez y ceci :

copy_dir PACKAGE:system SYSTEM:

Cette commande est se que va faire votre téléphone lorsque vous lui direz "apply update.zip", votre téléphone va simplement copier le contenu du répertoire system de votre fichier update.zip que vous avez créer et le placé dans la partition system du téléphone.

Compressez les répertoires "META-INF" et "system" dans un fichier zip nommer update.zip

Vous reprenez un logiciel telque 7zip, et vous compressez le dossier en .zip (bien-sur la méthode de compression optimale est la meilleure puisque la place est limitée sur le téléphone ^^)

Puis vous le signez avec ceci pour cela : -->vous extrayez le zip que je vien de vous faire téléchargé à la racine de votre dossier de travail -->vous lancez un cmd (sous linux, il faudra faire des recherches, je tourne sous windows désolé...) -->vous tapez :

java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update_signee.zip

Et maintenant la partie dure !

Je ne l'ai jamais faite personnellement alors je fait un copier coller du tuto du forum fait par zaraki (que je remercie parce qu'il m'a transmit son savoir généreusement :p)

Pour cela, il vous faut :

Avoir installé le le SDK et Eclipse, Avoir la machine Java d installé sur son système,

Notepad++ Un éditeur hexadecimal Smali et BakSmali

Editer un fichier XML :

Il est impossible de lire un fichier XML contenu dans les APK Android, pour cela il faut l ouvrir avec un éditeur hexadécimal.

Un tuto sur XDA est disponible pour "décrypter" ce fichier : forum XDA

Pour ce qui nous intéresse ce sont juste de trouver les couleurs. La seul que je modifie pour le moment (et dont je sois sur), c'est pour la couleur des notifications.

Pour la changer, éditer le fichier "/framework/framework-res.apk/res/layout/status_bar.xml" avec un éditeur hexadécimal, rechercher la valeur hexadécimal "00 00 1C" remplacer les 6 caractères suivant par une valeur de couleur en hexadécimal ( Dispo ICI )

Editer un fichier .dex :

C est ici que les choses ce compliques

Pour changer la couleur de l horloge et de la date dans la barre de notifications il faut éditer le fichier "/framework/services.jar" .

Pour cela, ouvrir le fichier services.jar avec votre outil de décompression (ATTENTION L OUVRIRE PAS LE DECOMPRESSER).

Extraire le fichier Class.dex dans un répertoire contenant les fichiers Smali.jar et BakSmali.jar (il est conseiller de le faire dans le répertoire Tools du SDK).

Ouvrir une invite de commande MS-DOS depuis ce répertoire (touche Shift+clic droit pour avoir l invite de commande ouverte dans le répertoire courant).

Taper la commande suivant :

java -jar baksmali.jar -o classout/ classes.dex

Un nouveau répertoire va être créé, "classout", aller dans : "classout/com/android/server/status".

Pour éditer la couleur de l horloge:



Avec Notepad++ éditer le fichier "StatusBarIcon.smali". Recherchez "setTextColor", vous trouverez à peu prés ca :

    .line 46 
    const/high16 v6, -0x100 

    invoke-virtual {v4, v6}, Landroid/widget/TextView;->setTextColor(I)V

La ligne "const/high16 v6, -0x100" correspond a la couleur noir, pour l avoir en blanc, remplacez la par "const v6, -0x1" Enregistrer la modification et quitter l éditeur

Pour éditer la couleur de la date dans la barre de notification:



Avec Notepad++, éditer le fichier "StatusBarService.smali" Recherchez "mDateView:Lcom/Android/server/status/DateView", vous devez trouvez ceux ci :

    iput-object v7, p0, Lcom/android/server/status/StatusBarService;->mDateView:Lcom/android/server/status/DateView; 

    .line 275 

Remplacer le par :

    iput-object v7, p0, Lcom/android/server/status/StatusBarService;->mDateView:Lcom/android/server/status/DateView; 
    const v8, 0xffffffff 
    
    invoke-virtual {v7, v8}, Landroid/widget/TextView;->setTextColor(I)V 

    .line 275

Voila nous avons fini d éditer les fichiers contenus dans le fichier class.dex :D Rendons lui ca vrai forme

Toujours dans notre fenêtre de commandes MS-DOS (situer dans le répertoire ou est le fichier Baksmali.jar et le répertoire classout)

Taper la commande suivante :

java -Xmx512M -jar smali.jar classout/ -o new-classes.dex

Vous obtenez un fichier new-class.dex . Renommez le en class.dex (prenez soin de supprimer ce lui qui vous a permis d extraire le répertoire classout précédemment) Dans vous utilitaire de décompression (toujours ouvert depuis le début de cette modification sur le fichier services.jar) supprimer le fichier class.dex et ajouter le nouveau class.dex, fermer votre utilitaire de décompression. Voila nous avons modifié la couleur de l horloge et de la date dans la barre de notification