Facebook a rendu open source Stetho, une librairie permettant de faire du debug d'applications Android en utilisant les Chrome DevTools.
Jusqu'à présent, cela n'était possible que pour les applications web ou utilisant des WebViews. Stetho offre donc maintenant la possibilité de faire également du debug d'applications natives.
Pour l'utiliser, les développeurs doivent instrumenter leur code depuis la classe Application
avec la méthode initialize
qui démarre un serveur HTTP WebSocket :
Stetho.initialize(Stetho.newInitializerBuilder(context)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(context))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
.build());
Il est ensuite possible de sélectionner l'appareil utilisé depuis la page DevTools Devices (chrome://inspect/#devices) et d'utiliser les outils de debug disponibles dans Chrome, incluant notamment l'inspection de bases de données et l'analyse de l'utilisation du réseau. Stetho propose également un script en ligne de commande appelé dumpapp
et une manière d'instrumenter tout composant custom pour combler les lacunes de dumpsys .
Selon les commentaires du code, Stetho implémente une "version limitée du protocole Chrome Debugger WebSocket" (qui utilise JSON-RPC 2.0) pour communiquer avec Chrome.
Nous avons demandé à Josh Guilfoyle, développeur chez Facebook et travaillant sur Stetho, quelles sont les prochaines fonctionnalités que l'on peut s'attendre à voir :
La fonctionnalité principale actuellement dans le pipeline est l'inspection de l'UI qui permet aux développeurs de voir et éditer les hiérarchies d'éléments de l'UI depuis l'interface des DevTools. Nous travaillons aussi sur de nombreuses fonctionnalités plus petites comme l'inspection des données des
SharedPreferences
, l'affichage de fichiers et les traces d'événements sous forme de timeline.Nous sommes également impatients de présenter un set plus puissant de plugins en ligne de commande pour aggréger des données réseau, analyser l'utilisation des tâches de fond, et dumper la heap Java d'une application.