Astuce Thème Android avec la structure de superposition de ressources d'exécution

Peu de gens le savent et Google en fait rarement la publicité, mais le système d’exploitation Android est doté d’un cadre thématique intégré depuis quelques années maintenant. C'est ce qu'on appelle le cadre de recouvrement des ressources d'exécution, RRO, et réduit considérablement les efforts nécessaires pour créer des thèmes personnalisés pour votre téléphone..

Avec RRO, vous pouvez créer rapidement des thèmes qui peuvent changer l'apparence de presque toutes les applications installées sur un appareil Android. Étant donné que les composants de l'interface utilisateur d'Android, notamment la barre de navigation, la barre d'état, le panneau de notifications et le panneau de paramètres rapides, appartiennent eux-mêmes à une application, vous pouvez également modifier leur apparence. Et le meilleur dans tout ça, c'est que vous n'avez pas à écrire de code Java, que ce soit.

Quel est le piège, vous demandez? Eh bien, le cadre ne peut être utilisé que par des applications privilégiées. Plus spécifiquement, par les applications installées dans un emplacement accessible uniquement par l'utilisateur root ou par quelqu'un qui crée une ROM personnalisée.

Dans cette astuce, je vais vous montrer comment utiliser le cadre pour créer un thème simple qui modifie l'apparence du plateau des paramètres rapides..

Conditions préalables

Pour pouvoir suivre, vous aurez besoin des éléments suivants:

  • un émulateur Android exécutant Android Marshmallow ou une version ultérieure
  • la dernière version du SDK Android

Si vous n'avez jamais utilisé le SDK Android à partir de la ligne de commande et que vous n'êtes pas familiarisé avec le micrologiciel Android, la lecture des didacticiels suivants serait une bonne idée:

Qu'est-ce que RRO fait vraiment?

Bien que la logique commerciale d'une application Android soit écrite en Java ou en Kotlin, son interface utilisateur est principalement créée à l'aide de fichiers XML. Une application Android bien écrite disposera de ressources XML distinctes qui définissent ses dispositions, ses couleurs, ses chaînes et ses attributs. Comme son nom l'indique, RRO Framework vous permet de superposer ces ressources XML avec vos propres ressources XML personnalisées. Cela ne se limite toutefois pas aux ressources XML. Il vous permet également de changer les polices et les tiroirs d'une application..

Une application qui utilise la structure RRO ne contient généralement pas de code Java. Il est composé uniquement de fichiers XML et, si nécessaire, de polices et d'images. Néanmoins, comme toutes les applications Android, il doit s'agir d'un APK valide et signé..

1. Créer un nouveau projet

Nous n'aurons pas besoin d'Android Studio pour créer un projet utilisant le framework RRO. Pour le moment, tout ce dont vous avez besoin est un nouveau répertoire de projet et un répertoire. AndroidManifest.xml fichier. Vous êtes libre de les créer avec un explorateur de fichiers ou un terminal.

mkdir MyOverlays && cd MyOverlays touch AndroidManifest.xml

Le fichier manifeste doit contenir le nom du package de votre application et le nom du package de l'application pour laquelle vous créez des superpositions. Parce que nous voulons changer l'apparence du plateau des réglages rapides aujourd'hui, nous devons utiliser com.android.systemui comme nom du paquet cible.

   

À ce stade, nous sommes prêts à commencer à thématiser le plateau des paramètres rapides et tous les autres composants de l'interface utilisateur du système Android..

2. Créer un thème

Pour superposer une ressource de l'application cible, votre application doit avoir une ressource portant le même nom. Par exemple, si vous souhaitez modifier les couleurs de l’application cible, vous devrez généralement superposer ses couleurs. couleurs.xml déposer avec le vôtre couleurs.xml fichier.

Pour vous faciliter la tâche, l'infrastructure RRO ne s'attend pas à ce que la superposition soit complète et capable de gérer tous les détails présents dans la ressource d'origine. En d'autres termes, votre incrustation doit uniquement contenir les détails que vous souhaitez modifier..

Pour clarifier les choses, supposons que nous voulions changer la couleur d’arrière-plan du plateau des réglages rapides en passant du bleu-gris par défaut à un orange foncé. La valeur de la couleur est spécifiée dans le res / values ​​/ colors.xml fichier de l'application d'interface utilisateur système. Si vous êtes curieux de connaître son contenu, vous pouvez consulter le fichier sur le dépôt officiel Android Git.

Pour changer la couleur, vous devez maintenant créer un res / values ​​/ colors.xml déposer dans votre projet.

mkdir -p res / values ​​TouchRes / values ​​/ colors.xml

À l'intérieur de couleurs.xml fichier, pour changer la couleur de fond du plateau, nous devons cibler une couleur nommée system_primary_color. Par conséquent, ajoutez le fichier XML suivant au fichier:

  # FFBF360C  

Il convient de noter que le XML ci-dessus n'est pas différent du XML que vous utiliseriez lors de la création d'applications normales avec Android Studio..

Notre thème simple est prêt! Si vous voulez, vous pouvez ajouter plus  balises dans le fichier pour changer les autres couleurs de l'interface utilisateur du système.

3. Générer un APK

Nous allons maintenant utiliser Android Asset Packaging Tool, aapt en bref, qui fait partie du SDK Android, convertir notre projet simple en un fichier APK pouvant être utilisé par la plateforme Android..

Pour générer l'APK, vous devez simplement pointer aapt au fichier manifeste, le res répertoire et la plate-forme cible android.jar fichier. Bien sûr, vous devez également spécifier le nom que vous voulez donner au fichier APK.

paquet aapt -M AndroidManifest.xml -S res / \ -I ~ / Android / Sdk / plates-formes / android-23 / android.jar \ -F myoverlays.apk.u

Dans la commande ci-dessus, vous pouvez voir que j'ai choisi de nommer le fichier APK myoverlays.apk.u. En effet, notre APK est actuellement à la fois non signé et non aligné..

Pour le signer, vous devez utiliser le Jarsigner outil. Pour le moment, je vous suggère de le signer avec le magasin de clés de débogage Android par défaut. 

jarsigner -keystore ~ ​​/ .android / debug.keystore \ myoverlays.apk.u androiddebugkey

Enfin, vous devez aligner et optimiser le APK en utilisant le zipalign outil. En tant qu'entrées, l'outil attend les noms des fichiers APK non alignés et alignés, ainsi qu'un nombre spécifiant les limites de l'alignement. À partir de 2017, le nombre ne peut être autre que 4.

zipalign 4 myoverlays.apk.u myoverlays.apk

4. Installez l'APK

Pour installer un APK qui utilise le framework RRO, vous devez simplement le placer à l’intérieur du / system / vendor / overlay annuaire. Le répertoire, par défaut, appartient à un système de fichiers en lecture seule et est uniquement accessible à l'utilisateur root. Si vous êtes un développeur de ROM personnalisé ou avez enraciné votre appareil Android, l'installation de l'APK ne devrait pas poser de problèmes..

Dans cette astuce, cependant, je vais vous montrer comment installer l'APK sur un émulateur. De cette façon, vous pouvez tester la superposition sans mettre en péril votre téléphone..

Commencez par lancer un émulateur dans le mode de système de fichiers en écriture en utilisant le émulateur outil de ligne de commande.

émulateur -avd Nexus_5X_API_23 -writable-system

Vous pouvez maintenant utiliser le adb outil pour obtenir les privilèges root sur l'émulateur, si vous ne les avez pas déjà.

adb root

Ensuite, remontez le /système système de fichiers en écriture, encore une fois en utilisant adb.

adb remount

le / system / vendor / overlay Le répertoire n'existe pas sur l'émulateur. Vous devez le créer vous-même manuellement. Le moyen le plus simple de le faire est de démarrer un shell sur l'émulateur..

shell adb mkdir -p / system / vendor / sortie de superposition

Enfin, poussez l'APK dans le répertoire en utilisant adb.

adb push myoverlays.apk / system / vendor / overlay

Attendez quelques secondes qu'Android détecte et installe l'APK, puis redémarrez l'émulateur pour que le thème prenne effet..

Après le redémarrage, si vous ouvrez le panneau des paramètres rapides, vous devriez pouvoir voir le thème en action..

Conclusion

Dans cette astuce, vous avez appris à utiliser le framework Runtime Resource Overlay pour créer des thèmes pour Android. Même si le thème que nous avons créé était extrêmement simple, vous pouvez appliquer les compétences que vous avez acquises aujourd'hui pour créer des thèmes beaucoup plus complexes. Par exemple, vous pouvez superposer le strings.xml fichier pour changer les étiquettes des éléments de l'interface utilisateur affichée par une application. De même, vous pouvez superposer le dimens.xml fichier pour changer la taille des éléments d'interface utilisateur d'une application.

La documentation sur le cadre RRO est très rare. Néanmoins, vous pouvez en apprendre beaucoup en examinant le code source de la plate-forme Android..

Pendant que vous êtes ici, consultez certains de nos autres articles sur le développement Android.!