Ajouter des options dans Settings.apk et changer le layout
Préambule
Ce guide vous permet d'ajouter des options et de changer le layout du fichier Settings.apk de votre ROM.
Chaque partie dispose d'un niveau de difficulté ; 5 étoiles étant le plus complexe.
Pré-requis
- ApkTool et Java
- Un éditeur de texte performant comme Notepad++ pour Windows et Geany pour Linux.
- Zipsigner sur votre appareil Android
Note ADB : si vous êtes sous Linux, lancez à CHAQUE FOIS votre programme (ApkTool et Notepadd++ avec ROOT/SUDO)
Décompilation de Settings.apk
Difficulté : ★★☆☆☆1/ Ouvrez une invite de commandes dans le répertoire où apktool.jar est stocké.
2/ Récupérez le fichier apk depuis votre appareil. Soit vous transférez le fichier via AirDroid ou en USB classique soit vous passez par une commande ADB :
Code:
adb pull /system/app/Settings.apk
3/ Idem pour le framework et installez-les :
Code:
adb pull /system/framework/framework-res.apk
Puis :
Code:
java -jar apktool.jar if framework-res.apk
4/ Décompilez le fichier Settings.apk :
Code:
java -jar apktool.jar d -s Settings.apk
Editez les "Strings" de votre Settings.apk
Difficulté : ★★☆☆☆1/ Avec votre gestionnaire de fichiers PC, allez dans le répertoire où Settings.apk a été décompilé.
2/ Recherchez et ouvez le fichier suivant via Notepad++ : res/xml/settings_headers.xml
3/ Maintenant, vous trouvez l'ent-ête que vous voulez éditer. Par exemple, on va changer le "Options de développement/Developer Settings" en "Déconseillé aux noobs".
Pour cela, il faut modifier cette référence string dans ce code :
Code:
<header android:icon="@drawable/ic_settings_development" android:id="@id/development_settings" android:title="@string/development_settings_title" android:fragment="com.android.settings.DevelopmentSettings" />
Le android:title correspond à ce qu'on veut modifier donc ouvrez votre fichier Strings.xml (toujours avec Notepad++ les .xml) pour le Français. Si vous le trouvez pas, ouvrez celui par défaut.
Faites un CTRL+F en recherchant development_settings_title
Code:
<string name="development_settings_title">Developer options</string>
Entre les > et < faites vos modifications. Mettez "Déconseillé aux noobs" comme on avait dit par exemple, mais vous pouvez laisser libre court à votre imagination
Code:
<string name="development_settings_title">Déconseillé au noobs</string>
4/ Sauvegardez et recompilez le fichier Settings.apk.
Editez les icônes des options de Paramètres
Difficulté : ★★★☆☆1/ Allez dans le dossier où vous avez décompiler le Settings.apk
2/ Ouvrez le fichier res/xml/settings_headers.xml avec Notepad++
3/ Ici, on va modifier le "Options de développement/Development Settings" pour avoir l'icône "ic_settings_advanced" (inclus dans les ROMs basés CyanogenMod uniquement)
4/ Recherchez le header que vous voulez éditer, soit celui-ci :
Code:
<header android:icon="@drawable/ic_settings_development" android:id="@id/development_settings" android:title="@string/development_settings_title" android:fragment="com.android.settings.DevelopmentSettings" />
5/ Editez l'emplacement de android:icon vers l'icône que vous voulez. Les icônes se trouvent dans différentes dossiers drawable comme le hdpi, mdi, ldpi, xhdpi, etc...
Dans notre exemplen on veut mettre l'icône de "ic_settings_advanced" donc voici ce qu'on doit mettre :
Code:
<header android:icon="@drawable/ic_settings_advanced" android:id="@id/development_settings" android:title="@string/development_settings_title" android:fragment="com.android.settings.DevelopmentSettings" />
6/ Si vous ne voulez pas ajouter d'icônes, il faut maintenant sauvegarder puis recompiler.
7/ Pour ajouter des icônes :
Pour avoir des icônes qui conviennent bien en terme de dimensions, regardez ce fichier de Google : Android_Design_Icons_20120814
a/ Recherchez l'icône que vous voulez ajouter. Assurez-vous que cela colle avec la résolution d'icône de votre écran (regardez les icônes "ic_settings" actuels de l'apk utilisé)
b/ Copiez-le dans le bon dossier (hdpi, xhdpi, ldpi....)
c/ Nommez-le de cette manière : "ic_settings_nom_voulu".
d/ Modifiez la référence le fichier xml pour pointer sur votre icône : @drawable/ic_settings_nom_voulu
e/ Recompilez
Ajouter des options dans les en-têtes des paramètres
Difficulté : ★★★★☆Note : le fait d'ajouter des paramères permet par exemple d'ouvrir Goomanager pour des recherches de mises à jour et facilement depuis le menu "A propos de l'appareil" et "Options de développement".
1/ Ouvrez le fichier settings_headers.xml
2/ Localisez l'endroit où vous voulez ajouter une option puis ajoutez une nouvelle ligne :
Code:
<header android:icon="@drawable/ic_settings_name" android:id="@id/id" android:title="@string/title">
<intent android:targetPackage="pkgName" android:action="android.intent.action.MAIN" android:targetClass="pkgName.Activity" />
</header>
3/ Quoi modifier :
- Modifiez le android:icon pour l'icône de votre choix (cf partie ci-dessus)
- Changez le android:targetPackage pour le nom de package de l'application que vous voulez ouvrir. Ceci se trouve dans le fichier AndroidManifest.xml de l'application en question. (1ère ligne)
- Changez le android:targetClass pour le nom de package, suivi de l'activité que vous voulez ouvrir. Idem, regardez dans le AndroidManifest de l'application souhaité.
- Changez le android:id pour un id que vous pouvez ajouter dans values/ids.xml (ou supprimez si vous voulez).
4/ Recompilez
Ajouter des séparateurs dans les Paramètres
Difficulté : ★★★☆☆Ajoutez sur l'écran principal des paramètres :
1/ Ouvrez votre settings_headers.xml
2/ Localisez l'endroit où vous voulez ajouter votre séparateur.
3/ Ajoutez cette ligne :
Code:
<header android:id="@id/id" android:title="@string/title" />
Ce qu'il faut modifier :
- Le android:id par celui que vous avez mis dans values/ids.xml (ou supprimez si vous l'aviez supprimé précédemment)
- Le android:title pour le titre de votre Strings.xml
4/ Si c'est tout ce que vous voulez faire, vous pouvez recompiler.
Pour ajouter ces sous-menus :
1/ Ouvrez le sous-menu que vous voulez pour éditer les xml (il est assez simple de repérer lequel est-ce)
2/ Localisez l'endroit où vous voulez ajouter un séparateur.
3/ Ajoutez le code suivant : (au début de l'endroit où vous voulez avoir le séparateur)
Code:
<PreferenceScreen android:title="@string/title" android:key="key">
Juste avant le séparateur :
Code:
</PreferenceScreen>
A changer :
- Le android:title pour le titre de votre Strings.xml
- Changez la "key" par ce que vous voulez.
4/ Recompilez.
Réordonner les Paramètres
Difficulté : ★★☆☆☆1/ Ouvrez soit le settings_headers.xml soit un sous-menu, le principe étant le même.
2/ Coupez/Collez les différentes options dans l'ordre de votre choix.
3/ Recompilez.
Ajoutez des options dans les sous-menus
Difficulté : ★★★☆☆Vous voulez ajouter un menu "Crédits" dans le menu "A propos de l'appareil" ? Voilà ce qu'il faut faire :
1/ Ouvrez votre sous-menu xml (device_info_settings.xml c'est celui pour "A propos de l'appareil" pour info)
2/ Recherchez l'endroit voulu pour votre nouvelle option et ajoutez une nouvelle ligne.
3/ Copiez/collez ce code :
Code:
<Preference android:title="@string/title" android:key="key" android:summary="@string/summary" style="?android:preferenceInformationStyle" />
A changer :
- Le android:title pour le titre que vous aviez ajouter dans values/strings.xml
- Le android:key pour ce que vous voulez
- Le android:summary pour le texte souhaité le plus long que vous avez ajouté dans values/strings.xml
4/ Recompilez.
Bonus : Forcer le menu "Options de développement" affiché par défaut sous JB 4.2
Difficulté : ★★☆☆☆1/ Ouvrez le settings_headers.xml
2/ Recherchez ce code :
Code:
<header android:icon="@drawable/ic_settings_development" android:id="@id/development_settings" android:title="@string/development_settings_title" android:fragment="com.android.settings.DevelopmentSettings" />
3/ Changez le id de "development_settings" en "development_settings_force" :
Code:
<header android:icon="@drawable/ic_settings_development" android:id="@id/development_settings_force" android:title="@string/development_settings_title" android:fragment="com.android.settings.DevelopmentSettings" />
4/ Ouvrez le fichier values/ids.xml
5/ Ajoutez la ligne suivante :
Code:
<item type="id" name="development_settings_force">false</item>
6/ Recompilez.
Dernière étape : Recompiler
Difficulté : ★★☆☆☆1/ Ouvrez une invite de commande toujours dans le répertoire où il y a apktool.jar
2/ Tapez cette commande :
Code:
java -jar apktool.jar b Settings
3/ Placez le nouveau fichier Settings.apk (mais non signé) dans votre appareil :
Code:
adb push Settings/dist/Settings.apk /sdcard/
4/ Sur votre appareil Android, ouvrez l'application Zipsigner et sélectionnez le fichier Settings.apk via le bouton in/out.
5/ Sélectionnez "platform" dans le menu déroulant.
6/ Appuyez sur "Sign" pour signer l'apk
7/ Une fois fait, lancez les codes suivants dans l'invite de commandes de votre PC (certaines personnes devront peut-être lancer "adb root" au préalable).
Code:
adb remount
Code:
adb shell cp /system/app/Settings.apk /system/app/Settings.bak
Code:
adb shell cp /sdcard/Settings-signed.apk /system/app/Settings.apk
8/ Redémarrez le téléphone.
9/ Dernière étape ultra important : Enjoy !
Autres infos
Source
[Comment uploader et partager un fichier?] - [Vous êtes développeur ou cuisto?]
Dernière édition par primokorn le Mer 24 Juil 2013 - 10:23, édité 1 fois