web-dev-qa-db-fra.com

comment activer l'inspecteur de débogage/application à distance de WebKit à l'aide de WebView?

J'ai besoin d'inspecter l'exécution de javascript (widget Webview) dans une application Android, lors du débogage; via le SDK et un câble USB et/ou http/websockets; à partir de l'ordinateur destop (par exemple, chrome fonctionnant sur le bureau).

Les sources de Webkit incluent une implémentation DebuggerServer (platform_external_webkit\Source\WebKit\Android\wds\DebugServer.cpp) accessible au niveau cpp et liée si l'indicateur WDS est activé (au moment de la construction?)

Source\WebKit\Android\jni\WebCoreFrameBridge.cpp: #if ENABLE (WDS) Source\WebKit\Android\jni\WebCoreFrameBridge.cpp: WDS :: serveur () -> addFrame (cadre);

Le port par défaut pour le serveur est 9999

Les sources montrent que tout est mis en œuvre (au niveau Cpp) pour activer la fonctionnalité, mais je n’ai trouvé aucune référence à la recherche sur le Web d’expériences utilisant le débogage en direct au niveau javascript dans des périphériques adroid automatisant l’interface d’inspecteur de webkit.

1.- La fonctionnalité est-elle présente, sous forme binaire, s'exécutant sur des appareils Android réels? (La distribution de webkit par adroid a-t-elle été construite sans le drapeau WDS activé? :-()

2.- La fonctionnalité de débogage distant peut-elle être activée/utilisée à partir de javascript ou d'une application (au niveau de Java), par exemple. au démarrage de l'application?

3.- S'il est possible d'activer la fonction inspecteur/débogueur webkit, comment permettre l'interaction à partir d'une application distante? (par exemple, depuis une autre application javascript utilisant des websockets ou chrome sur des ordinateurs de bureau).

Certains paragraphes expliquant les mécanismes tels que https://developers.google.com/chrome-developer-tools/docs/remote-debugging#remote seraient sympas!

merci d'avance pour toute information ou référence sur ce sujet. Je considère important d'activer le débogage à distance (dans l'appareil) au niveau javascript pour permettre le développement moderne d'applications HTML5 et une expérience de débogage optimisée.

à la vôtre, Ale.

13
aleReimondo

Pour Android> = 4.4 (KitKat)

Voir Débogage à distance sur Android avec Chrome

Pour Android <4.4 (versions inférieures)

Utilisez un très bon outil open source: weinre . Voir this video pour obtenir de l'aide pour l'utiliser. Si vous maîtrisez grunt, vous pouvez utiliser grunt-weinre

Pour un aperçu rapide:

  1. installer weinre en utilisant npm
  2. Faites la configuration dans votre gruntfile.
  3. Exécutez la tâche weinre grunt. 
  4. Utilisez ce script pour injecter le code cible weinre dans votre page Web.
  1. Ouvrez http: // localhost: 8082 dans votre navigateur et vous trouverez les périphériques qui exécutent le script ci-dessus. Vous pouvez déboguer tous ces périphériques.

REMARQUE: si vous souhaitez déboguer webview/browser sur votre appareil mobile, vous devez remplacer localhost par l'adresse IP de votre ordinateur qui fonctionne, weinre. Et oui, tous les appareils doivent être sur le même réseau.

7
vinesh
5
Jan

Vous pouvez effectuer un débogage à distance ciblant le navigateur Android avec le projet weinre . Ou utilisez Débogage à distance de Chrome avec le navigateur Chrome pour Android. Autant que je sache, vous ne pouvez pas cibler directement une WebView, mais le navigateur Android devrait vous rapprocher.

3
David Chandler

Pre KitKat jsHyBugger fonctionne bien (version d'essai et licence annuelle pour utilisateur unique 29 €)

(Je n'ai aucun lien avec les développeurs/j'ai acheté une licence)

0
Bob

Cela ne peut pas être fait, car le code d’arrière-plan du débogueur n’est pas là. Le code source auquel vous faites référence est une copie de la source Webkit dans Android, mais il n'est pas compilé dans les versions d'Android. 

0
Jan