[TUTO] Décompilation / Modif / Recompilation des APK et JAR

Alors, pour apprendre comment faire, c'est ici !
Image
Image
#1

[TUTO] Décompilation / Modif / Recompilation des APK et JAR

Messagepar okaryn » 22 Mai 2011, 18:02

Avertissements d'usage:
- ce tutoriel s'adresse à des personnes sachant ce qu'elles vont faire, une mauvaise manipulation peut rentre inutilisable votre téléphone donc...
- si vous n'avez pas la combinaison de touches pour passer en mode Download... c'est à vos risques et péril
- une modification des fichiers du système est une opération toujours délicate, soyez attentifs et ne vous précipitez pas
- si vous deviez reflasher une ROM suite à une mauvaise manipulation, pensez donc à faire une sauvegarde par Titanium Backup par exemple (voir le tuto de franck_29)

En cas de bricage de votre téléphone, personne en dehors de vous ne pourra en être tenu pour responsable.



0 - Présentation


Vous trouverez ici de quoi aller plus loin dans la création/modification de thèmes, en apprenant comment décompiler, modifier puis recompiler les fichiers APK et JAR pour par exemple ajouter de nouvelles icônes, modifier le menu d'extinction, ajouter l'effet CRT sous Gingerbread, ajouter des lockscreens, etc...

Les modifications ne fonctionnent qu'avec des ROM déodexées, n'essayez pas sur des ROM officielles.

Ce tutoriel, avec les suivants, sont le résultat de mes recherches actuelles sur le sujet, ils vont donc commencer petits, puis s'étendre de plus en plus, avec mes informations mais aussi les vôtres, donc partagez aussi vos connaissances ;)

Avant toute chose, je vous recommande les sujets suivants, pour avoir les bases :

Comment se faire son thème (quel que soit votre firmware) de Scoony

Le Bar Des Customeurs/ Le Sujet Des Questions/Réponses (sujet collaboratif)

Comment réaliser son update.zip post flash

Créer soi même sa propre CUSTOM ROM


1 - Prérequis


Avant de vous lancer dans cette aventure, vous devrez télécharger et installer les logiciels suivants :

7Zip : Téléchargez la version correspondant à votre système d'exploitation. Cela vous permettra de décompresser les fichiers RAR qui sont utilisés ici. Attention : certains utilisateurs ont rencontrés des soucis avec WinRAR. Aussi, je vous conseille de bien utiliser 7Zip (merci Filougarou)

NotePad++ : Il vous permettra d'éditer les fichiers texte au format Unix.

Java Development Kit (JDK) : Cliquez sur "Download JDK". Choisissez votre système d'exploitation puis Installez le avec les options par défaut.

APK Manager : Cet outils vous permettra de décompiler et recompiler des fichiers APK


2 - Décompiler et recompiler un APK


Grâce à APK Manager, vous pourrez décompiler des APK, pour modifier les fichiers XML afin par exemple de rajouter un menu extinction plus complet, ajouter plus d’icônes pour la batterie, etc...

Vous devez maitriser ceci avant d'aller plus loin !

Une fois décompressé, voici le contenu du dossier :

Image

Nous allons essayer de décompiler l'apk suivant : framework-res.apk.

Commencez par copier framework-res.apk dans le dossier place-apk-here-for-modding d'APK Manager.

Lancez ensuite APK Manager, à l'aide du programme "Script.bat", pour avoir le menu suivant :

Image


2a - Mémoire allouée à Java


La première chose à faire, c'est d'augmenter la mémoire allouée à Java (Heap Size), car sinon vous risquez d'avoir des erreurs lors de la recompilation. Par défaut, cette valeur est de 64 megabytes

Tapez "20" pour accéder au menu "Set Max Memory Size (Only use if getting stuck at decompiling/compiling)", puis saisissez une valeur au moins égale à 512 . Si vous disposez d'un PC avec minimum 2Go de mémoire, saisissez alors 1024.

Une fois validé, vous verrez apparaitre en haut de l'écran le nombre saisi à droite de "Heap Size".


2b - Choisir un projet


Maintenant, nous devons indiquer à APK Manager sur quel fichier APK nous désirons travailler.

Saisissez le menu "22", pour choisir "Set current project". A l'écran vous aurez la liste des APK disponibles pour modification, vous devriez voir la même chose que ceci :

Image

Saisissez donc "1" pour choisir "framework-res.apk"

Comme pour la mémoire, vous pouvez vérifier votre choix en regardant en haut du menu : à droite de "Current-App" s'affiche maintenant "framework-res.apk".


2c - Décompilation


Voici venu le moment crucial : la décompilation !

Rien de plus simple : saisissez le menu "9" pour "Decompile apk".

Au bout de quelques secondes, vous retournerez au menu.


2d - Modification


Le résultat de la décompilation se trouve dans le répertoire "projects\framework-res.apk". C'est à partir de là que vous effectuerez vos modifications XML.

Attention : Ne modifiez jamais des images à ce moment, sinon vous pourrez avoir des mauvaises surprises à la recompilation. Effectuez simplement les remplacements d'icones en dézippant l'APK, puis en faisant un copier/coller des fichiers. Voir le tutoriel de Scoony. A ce stade, effectuez simplement les ajouts d'images (obligatoire pour la recompilation).

Si vous devez modifier des fichiers XML, il faut savoir que dans beaucoup vous trouverez des nombres hexadécimaux qui permettent d'identifier de façon unique les lignes. Si vous ajouter des lignes, vous devrez faire coïncider ces nombres de façon à poursuivre la numérotation sans trou ni doublons. Dans l'exemple pour avoir un menu d'extinction étendu, vous verrez cela en détail...


2e - Recompilation


Pour l'instant, nous n'allons rien modifier, mais nous allons quand même recompiler l'APK pour l'exemple.

Rien de plus simple pour cela, il suffit de choisir "11" pour le menu "Compile apk".

Au bout de quelques secondes, APK Manager va vous poser la question "Is this a system apk (y/n)", saisissez "y" s'il s'agit d'un APK qui doit se placer dans le répertoire "system" de votre téléphone.

Juste ensuite, vous aurez droit à la question suivante :

Image

Cela permet de ne remplacer que les fichiers modifiés, et d'éviter ainsi des erreurs inutiles. Répondez "y".

APK Manager va créer une copie du contenu original dans le répertoire "keep". Vous devrez aller dans ce répertoire pour supprimer tous les fichiers modifiés, et donc d'y laisser tous ceux qui sont à reprendre de l'APK d'origine.
Si vous avez modifié un fichier XML, quel qu’il soit, vous devrez également supprimer le fichier "keep\resources.arsc", car APK Manager va le regénérer automatiquement en tenant compte de vos modifications.

Une fois les suppression effectuées, revenez sur APK Manager, puis appuyez sur n'importe quelle touche.

Voilà, votre APK est maintenant recompilé, et se trouve dans le répertoire "place-apk-here-for-modding", préfixé du mot "unsigned" car il n'a pas encore été signé :

Image


2f - Signature


Nous y sommes presque, il faut maintenant signer l'APK avant de pouvoir le réutiliser.

Choisissez simplement "12" pour le menu "Sign apk".

Le fichier "unsignedframework-res.apk", va être signé puis renommer en "signedframework-res.apk". Vous n'aurez plus qu'à le renommer en "framework-res.apk" pour l'installer sur votre téléphone.


2g - Astuces


Une fois recompilé, le répertoire "projects\framework-res.apk" existe toujours, vous pourrez donc y revenir dessus ensuite, sans avoir à décompiler à nouveau l'APK. Il vous suffira juste de choisir le projet "framework-res.apk", puis de recompiler l'APK.

Cela vous permet de tester plusieurs modifications rapidement.

Attention : si vous installez manuellement les fichiers modifiés (par ADB, USB, peut importe...), vous devez vider le dalvick-cache, sinon vous aurez des F.C.


3 - Décompiler et recompiler un JAR


En plus des APK, vous devrez parfois décompiler les fichiers JAR pour y apporter des modifications. Malheureusement APK Manager ne gère pas cela. Il vous faudra donc le faire à la main.


2a - Préparation


Créez-vous un répertoire sur votre disque, et placez-y les fichiers smali.jar et baksmali.jar que vous pourrez télécharger sur le site de Google Android.

Attention : Ces fichiers sont versionnés, au moment où j'écris ces lignes, vous téléchargerez les fichiers "smali-1.2.6.jar" et "baksmali-1.2.6.jar". Les lignes de commandes dans la suite de ce tutoriel seront à adapter si jamais les noms ont changés.

Ces 2 fichiers vont être utilisés par Java pour décompiler et recompiler les JAR.

Ensuite, placez votre fichier JAR dans ce même répertoire, par exemple "framework.jar"

Ouvrez une fenêtre DOS, puis allez dans le répertoire où vous avez placé les 3 fichiers précédents.

Si vous avez déjà un sous-répertoire "[b]out" ou un fichier "classes.dex", supprimez les.[/b]

Vous devriez donc avoir quelque chose comme ça :

Image


2b - Décompilation


Dans la fenêtre DOS, saisissez la ligne de commande suivante :

Code : Tout sélectionner
java -Xmx512m -jar baksmali-1.2.6.jar framework.jar


S'il n'y a pas d'erreur, tout sera décompilé dans le sous-répertoire "out"


2c - Recompilation


Une fois vos modifications effectuée, saisissez la ligne de commande suivante :

Code : Tout sélectionner
java -Xmx512m -jar smali-1.2.6.jar out -o classes.dex


Toujours s'il n'y a pas d'erreur, cela va vous créer un nouveau fichier "classes.dex".

A l'aide de 7-Zip, ouvrez le fichier "framework.jar" (clic droit dessus, 7-Zip, puis Ouvrir) :

Image

Supprimez dans l'archive JAR le fichier "classes.dex", pour le remplacer ensuite par le fichier "classes.dex" qui se trouve dans votre répertoire (faîtes un simple glisser/déposer avec la souris).

Et voilà, votre nouveau "framework.jar" est disponible !

Attention : si vous installez manuellement les fichiers modifiés (par ADB, USB, peut importe...), vous devez vider le dalvick-cache, sinon vous aurez des F.C.


4 - Recommandations


- Assurez-vous d'avoir toujours accès au mode download par les touches du téléphone. en cas de soucis, cela sera votre seul recours !

- Jouer avec les APK et JAR n'est pas sans risque. Effectuez toujours une sauvegarde de vos applications et paramètres avant.

- Une mauvaise recompilation peut bloquer votre téléphone : reboot non stop au logo samsung, reboot sans raison, pas de signal capté, etc...

- N'utilisez jamais le notepad de Windows pour modifier vos fichiers, ils seront illisibles ensuite. Prenez toujours Notepad++


5 - Travaux pratiques


Dans les tutoriels qui suivront, vous trouverez différentes informations pour réaliser des modifications. N'hésitez pas à participer si vous voulez proposer/corriger/améliorer ce qui sera déjà écrit :D

Voici ce que vous pourrez trouver :

* Ajouter l'effet CRT sous GingerBread

* Modifier le menu d'extinction pour ajouter les options Reboot, Recovery et Download (màj le 25/05/2011)

* Ajouter des lockscreens à sa custom ROM
Dernière édition par okaryn le 02 Juin 2011, 12:44, édité 9 fois.
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#2

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar okaryn » 22 Mai 2011, 18:02

-- Réservé --
Dernière édition par okaryn le 02 Juin 2011, 12:41, édité 5 fois.
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#3

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar okaryn » 22 Mai 2011, 18:03

-- Réservé --
Dernière édition par okaryn le 02 Juin 2011, 12:41, édité 13 fois.
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#4

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar okaryn » 22 Mai 2011, 18:04

-- Réservé --
Dernière édition par okaryn le 02 Juin 2011, 12:42, édité 15 fois.
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#5

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar okaryn » 22 Mai 2011, 18:05

[Réservé pour d'autres cas pratiques]
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#6

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar okaryn » 22 Mai 2011, 18:06

[Réservé pour d'autres cas pratiques]
okaryn
Andro-bavard
 
Message(s) : 510
Inscription : 26 Déc 2010, 14:38

#7

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar bejda » 22 Mai 2011, 18:50

Hop,je me place un petit marque-page... ;)
I9505 jfltexx
Bouygues
Multi-boot:
_Echoe V20 Touchwiz NC9 4.4.2
_Nameless Rom 4.4.2
_SOKP 4.4.2
_MIUI 4.3.7 Android 4.2.2
_SlimKat weekly 4.4.2
Image
Avatar de l’utilisateur
bejda
Andro-tribun
 
Message(s) : 5324
Inscription : 19 Jan 2011, 20:47

#8

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar Snowgoons » 22 Mai 2011, 22:11

Ah bien comme tuto, j'attends la suite des applications !
Galaxy Nexus - ICS 4.0.4
Avatar de l’utilisateur
Snowgoons
Andro-bavard
 
Message(s) : 371
Inscription : 09 Déc 2010, 16:15
Localisation : 45 & 90

#9

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar myrmey » 23 Mai 2011, 02:14

Juste pour dire BRAVO !

Sent from my GT-I9000 using Tapatalk
ORANGE OPEN ILLIMITÉ
[N4][Android 4.4]
[KERNEL]STOCK

ImageJe veux ce bootanimation !
Image<< lien >>
Avatar de l’utilisateur
myrmey
Ancien du Staff
Ancien du Staff
 
Message(s) : 2128
Inscription : 02 Sep 2010, 12:32

#10

Re: [TUTO] Edition avancées des thèmes (décompil, modif & co

Messagepar dickHead » 23 Mai 2011, 11:24

Un tuto très complet et précis ! Un grand merci :)
Les sujets intéressants quand on débute :
----->Les réponses aux questions les plus fréquentes
----->Petit lexique utile
----->[Check-list]Le flash pour les nuls
Téléphone : SGS 5
Firmware : Il est d'origine... Pour le moment :)

Béta Séries
Avatar de l’utilisateur
dickHead
Ancien du Staff
Ancien du Staff
 
Message(s) : 2963
Inscription : 15 Sep 2010, 11:19
Localisation : Esvres

Suivant

Retour vers [SGS] Tutoriels

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)