Aller au contenu

[TUTO] Décompiler, traduire , compiler et signer une apk.


Recommended Posts

Ce tuto pour vous relater la méthode que j'ai utilisée pour traduire mms.apk dans un autre topic.

Évidemment, votre mobile doit être rooté.

Vous devez avoir une machine java installée sur votre machine (JRE 1.6).

Pour décompiler et compiler l'apk on utilisera apktool

Pour signer l'application compilée sign+

Préparatifs :

1/ Apktool

Télécharger et installer apktool sur cette page :

http://code.google.c.../downloads/list

Vous devez télécharger apktool 1.4.3 et l'archive qui correspond à votre système.

Décompressez tout dans un même dossier.

2/ Sign+

Télécharger et installer dans un autre dossier le logiciel pour signer les applis

http://forum.xda-dev...ad.php?t=997180

3/ Framework

Sur votre mobile par exemple avec Root Browser Lite

Récupérer le fichier de votre téléphone

framework-res.apk

dans

/system/framework

copier le dans le dossier apktool

en ligne de commande dans le dossier apktool on installe le framework avec cette commande :

apktool if framework-res.apk

Décompiler :

1/ Copier l'appli à décompiler dans le même dossier qu'apktool, exemple mms.apk

2/ en ligne de commande taper :

apktool decode mms.apk 

apktool affichera :

I: Baksmaling...
testI: Loading resource table...
I: Loaded.
I: Loading resource table from file: C:\Users\Fred\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...

3/ Un dossier a été créé avec le nom de l'appli, il contient le code décompilé.

Traduire :

Pour la traduction il faut un éditeur xml ou tout simplement le bloc-notes

Dans mms/res on trouve un dossier

values  

et autant de dossiers que de langues installées ex pour la france.

values-fr

Dans chaque dossier se trouve des fichiers xml avec les traductions. Pour traduire une appli, créez un dossier dossier

valuez-fr

et copiez-y tous les fichiers xml avec des chaînes à traduire.

On ne traduit que le texte entre les balises sans toucher au reste, par exemple :

<string name="app_label">Messages</string>

<string name="new_message">Nouveau message</string>

Compilation/Signature :

1/ Une fois que les traductions sont faites, il faut recompiler l'application.

apktool build mms mms2.apk

mms : nom du dossier

mms2.apk nom de l'apk à créer

2/ Signature de l'application :

Exécuter sign+ en administrateur

Parcourir, sélectionner le nouvel apk puis "signer les fichiers"

3/ Installation dans le téléphone

Copier votre appli ex

mms2.apk

dans

/system/apk

puis changer les permissions rw-r-r

Si vous travaillez sur une appli déjà installé, prenez soin de la renommer ex: mm.apkb

4/ Enfin redémarrer le launcheur.

Modifié par cybertaf62
  • Like 4
Lien vers le commentaire
Partager sur d’autres sites

Quand tu parle de l'invite de commande c'est bien sous windows?

Car quand je rentre la ligne pour installer le framework ,ca me dit que java n'est pas reconnu en tant que commande interne.

:)

ps: est ce important d'extraire les archives dans un dossier nommé apktool ou bien le nom de ce dossier n'a pas d'importance.

Ne faut il pas installer le sdk car visiblement il me manque un truc.

Merci

Modifié par MNK
Lien vers le commentaire
Partager sur d’autres sites

Quand tu parle de l'invite de commande c'est bien sous windows?

Oui mais sous Linux ça marche aussi.

ps: est ce important d'extraire les archives dans un dossier nommé apktool ou bien le nom de ce dossier n'a pas d'importance.

Le nom du dossier n'a pas d'importance,

ca me dit que java n'est pas reconnu en tant que commande interne

mais effectivement il faut un java installé sur ta machine.

Ton dossier doit contenir ceci :

15/05/2011  17:23		 5 445 617 aapt.exe
03/09/2010  18:13				69 apktool.bat
08/12/2011  03:38		 3 090 514 apktool.jar
26/04/2012  01:38		 3 307 699 framework-res.apk

Modifié par cybertaf62
Lien vers le commentaire
Partager sur d’autres sites

C'est un problème de variable d'environnement, ton Seven ne trouve pas java :

EDIT :
J'ai trouvé :D :D :D :D ! Après 2 jours de recherches sur Google.
En fait, c'est le PATH (le chemin) qui n'est pas indiqué !
Donc même si vous avez installé la toute dernière version de Java dlamorkitukiroxtou, ça ne fonctionnera pas puisque Windows ne sait pas où aller chercher Java !
Pour remédier à cela :
Clic-droit sur "Ordinateur" (ou "Poste de travail", selon les versions de Windows)
Clic-gauche sur "Propriétés"
Dans la colonne de gauche, clic-gauche sur "Paramètres système avancés"
Une fenêtre s'ouvre, allez dans l'onglet "Paramètres système avancés" (eh oui, encore), normalement vous y êtes déjà
Clic-gauche sur le bouton "Variables d'environnement..."
Dans la partie "Variables système" > chercher dans la liste "Path", clic-gauche dessus
Clic-gauche sur le bouton "Modifier..."
A la fin, rajoutez ;C:\Program Files (x86)\Java\jre6\bin\ (n'oubliez pas le point-virgule au début et vous modifiez bien sûr le chemin avec le votre, suivant où vous avez installé Java)
Clic-gauche sur "Ok"
Clic-gauche sur "Ok"
Clic-gauche sur "Ok"

Et voilà, ça fonctionne, de rien :D !

J'ai trouvé ce code ici

Modifié par cybertaf62
Lien vers le commentaire
Partager sur d’autres sites

Salut

j'ai modifié la variable d'environnement avec le chemin d'installation de java rien y fait ca fonctionne toujours pas.

Comme je suis sous Windows 7 X 64 le chemin vers program files doit s'appeller autrement mais je vais chercher .

Merci pour ce tuyau :)

:)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

sous Windows 7 x64 il y a Program Files (Programmes pour les programmes en 64 bits) et Program Files (x86) pour les programmes en 32 bits.

Modifié par Tilt56
Lien vers le commentaire
Partager sur d’autres sites

Oui je sais.

Mais ca ne fonctionne pas .

Comme ma version Windows 7 est une version unattend ca vient peut etre de la .

Je vais en installer une officielle sous virtual box et refaire un essai.

Comme je fais parti des rare privilegiés a travailler aujourd'hui ^^ je verrais ca demain.

Merci

ps:le chemin pour java est=>;C:\PROGRA~2\Java\jre6\bin

et ça fonctionne .

merci

Modifié par MNK
Lien vers le commentaire
Partager sur d’autres sites

J'ai une erreur quand j'essaie de recompiler l'application avec les fichiers modifié mais pas avec les fichier original. :(

Quoi comme erreur ?

si tu as mis des caractères spéciaux genre des accents il faut encadrer ta chaîne de guillemets

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Moi j'ai un gros soucis, j'ai le SDK d'installer, le JDK, et je JRE6, j'ai modifier les vrialbes, mais même avec ça les 3 ne marchent pas : enfin, quand dans apktools je lance la commande bat elle se ferme directement. Je précise bien que dans le fichier il se trouve juste aapt.exe ; apktools.bat; apktools.jar et framework-res.apk

Lien vers le commentaire
Partager sur d’autres sites

en y regardant de plus pres je m'en suis apperçu, vous savez, les parametres style ICS, j'ai voulu le traduire, c'est fait, mais il faut recompiler et signer, et apktool ne veux pas compiler.

Il me met :

xception in thread "main" brut.androlib.AndrolibException: brut.directory.Path

tExist: apktool.yml

at brut.androlib.Androlib.readMetaFile(Androlib.java:142)

at brut.androlib.Androlib.build(Androlib.java:159)

at brut.androlib.Androlib.build(Androlib.java:154)

at brut.apktool.Main.cmdBuild(Main.java:182)

at brut.apktool.Main.main(Main.java:67)

aused by: brut.directory.PathNotExist: apktool.yml

at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java

03)

at brut.androlib.Androlib.readMetaFile(Androlib.java:138)

... 4 more

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...
  • 7 months later...

détérage de topic mon amour .... ^^

Je tente une modif simple du framework-res.apk, modif qui porte sur le fichier bools.xml pour activer la rotation auto du lockscreen.

En suivant scrupuleusement les étapes de la premiere page, apres modif du fichier, au moment de faire le rebuild:

1 - j'ai un warning "W: Could not find sources"

2 - le fichier n'a pas la même taille que l'original

est ce grave docteur ?

si non, comment dois-je faire pour replacer mon nouveau fichier dans le systeme ? est-ce possible a chaud avec un explorateur de fichier root ? ou est ce que je dois faire un zip flashable ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...