PhoneGap/AngularJS: Dev Workflow mit der „PhoneGap Developer App“ und dem $log Service

Die relativ neue PhoneGap Developer App von Adobe hat meinen Workflow in Sachen PhoneGap gerade quasi revolutioniert :-))

Spätestens dann, wenn man plattformspezifische Feature wie die File API oder das Cordova-SQLitePlugin verwendet, kommt man mit dem Debugging im Browser nicht weiter. Der Weg über den Emulator und xCode oder Eclipse dauert mir ehrlich gesagt zu lange (Compilieren, Coden, Complieren, Debuggen, …).

Wie so oft, bin ich durch Zufall auf die „PhoneGap Developer App“ gestoßen, die folgendes verspricht:

Develop locally then see the changes instantly on your mobile device.
– No need to re-sign, re-compile, or reinstall your app to test your code.
– Access to the device APIs that aren’t available in web browsers.

Zum schnellen Ausprobieren: App auf dem Smartphone installieren und ab ins Terminal:

$ npm install phonegap -g
$ phonegap create myApp
$ cd myApp
$ phonegap serve
listening on 192.168.178.46:3000

…funktioniert super. Was fehlt sind die beim Debugging sehr geschätzten console.log()-Ausgaben. Und genau hier kommt der AngualrJS $log Service ins Spiel:

// app.js

/**
 * Logging with the AngularJS $log Service
 *
 * Methods:
 *   log();     Write a log message
 *   info();    Write an information message
 *   warn();    Write a warning message
 *   error();   Write an error message
 *   debug();   Write a debug message
 *
 * @usage $log.debug('debug message...');
 * @see   https://docs.angularjs.org/api/ng/service/$log
 */
myApp.config(function($provide) {
  $provide.decorator('$log', function($delegate, $sniffer) {

    // Saving the original behavior
    var _log = $delegate.log;

    $delegate.log = function(message) {
      alert(message);
    };

    $delegate.error = function(message) {
      alert(message);
    };

    $delegate.debug = function(message) {
      alert(message);
    };

    return $delegate;
  });
})

Per alert() werden nun alle Log-Infos direkt in der App ausgegeben. Ich muss zwar zugeben, dass ein Alert bei weitem nicht so aussagekräftig ist wie die Console im Browser, xCode oder einer Androiden-Werkstatt wie dem ADT Plugin für Eclipse aber um herauszufinden, wo es gerade hängt, ist es eine prima fixe Sache…

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


12 + = 19