Ich habe, was ich denke, ist eine ziemlich Standard-Setup einer bestehenden Web-App und würde gerne beraten, wie Sie es am besten für die Erstellung nativer Versionen über PhoneGap in einer Weise anpassen Wir können die Web-App weiter entwickeln und die phonegap-generierten Versionen mit minimaler Überarbeitung aktualisieren.Pfad Probleme Portierung Web-App zu Phonegap
Ich bin ein PhoneGap-Neuling. Ich habe gesucht und verschiedene Vorschläge von StackOverflow usw. ausprobiert, ohne Glück, zumindest für mein Setup.
Die App ist in GWT entwickelt und besteht aus:
statische Ressourcen in einem gemeinsamen Ordner für alle des App
/static/mit Bildern, Schriften, CSS. Die CSS definieren einige Schriftfamilien, die Schriftartdateien in/Fonts referenzieren
Wir beziehen uns auf diese statischen Ressourcen von HTML-Dateien und JavaScript-Code mit absoluten Pfade.
statische Ressourcen in einer Reihe von Unterordnern (von GWT Module FYI)
wie/LoginGadget, die GWT haben generierten HTML, Javascript und manchmal Unterordner mit CSS und CSS-Bilder.
GWT-RPCs
Diese sind im Allgemeinen Servlets, wo GWT Pflege der Serialisierung usw. nimmt, und sind von unserem Client-Code über XHRs unter die Decke bauen
PhoneGap
ich auf der Suche begonnen haben Zugriff auf Erstellen Sie eine gepackte App mit PhoneGap und stoßen Sie auf einige Probleme, bei denen ich einen Rat brauche (Beispiel Android).
Ich habe erstellt/Vermögenswerte/www und legte eine index.html-Datei in dort und habe es in Gang gebracht. kopiert ich eine Version unseres/static/Ordner und unsere/LoginGadget Ordner unter diesem „root“ zu sehen, und begann es
super.loadUrl("file:///android_asset/www/index.html");
verwendet, die funktioniert.
In allen von GWT generierten HTML- und Javascript-Dateien haben wir Verweise auf statische Ressourcen sowohl mit absoluten (zB "/ static/....") als auch relativen Pfaden (zB von einem LoginGadget-Javascript, es könnte auf "css/some.css ").
Die relativen Pfade funktionieren, da sie "unter" dem Ordner liegen, in dem die html/js, auf die sie verweisen, liegen.
Problem 1
jedoch Verweise auf absolute Pfade versagen trotz PhoneGap mit den Worten beginnen:
DroidGap: url=file:///android_asset/www/index.html baseUrl=file:///android_asset/www/
ich erwartet hatte von einem Verweis auf "/static/images/file.png", sagen Index. html an die "baseUrl" angehängt werden, um file: ///android_asset/www/static/images/file.png zu geben und damit zu arbeiten, da dort die Datei liegt.
Ich musste index.html ändern, um "static/image/file.png" zu verwenden, damit es funktioniert. Aber ich würde alle unsere GWT-App mit einer anderen Konfiguration neu kompilieren müssen, um alle Verweise auf Ressourcen zu ändern, und Verweise von anderen Dateien in Unterordnern zurück auf "/ static /" funktionieren nicht, wenn sie nur "statisch" geändert werden/".
Wie kann ich absolute Pfadreferenzen zu "map" zu/assets/www oder ähnlichem bekommen?
(Siehe unten, ich habe bei Verwendung der "Basis" tag .... sah)Problem 2
Die GWT RPCs machen auf dem Server die html/js die XHR Anfrage von serviert wurde. Das funktioniert gut, da die App nicht den Host-Server-Namen hart-codiert hat, und tatsächlich auf vielen verschiedenen appengine-appids/domains zum Testen usw. eingesetzt wird.
Hier werden die html/js-Dateien "bedient" file: /// Daher muss ich den Server irgendwie angeben.
Ich habe versucht, mit dem "Basis" -Tag wie dokumentiert, aber dann eine Referenz, die ich in meiner html/js zu einer Ressource, die keine Angabe "file: //" angegeben scheint auf den Server in angegeben angegeben "base" ..... damit lade ich meine lokalen Ressourcen nicht mehr auf und habe grundsätzlich eine Web-App von meinem Server aus bedient.
WollenWas würde ich tun, ist es, die (ziemlich groß) zu ergreifen, um der Lage sein, kompiliert und getestet App von meinem wab-App-Krieg (/ statisch und alle meine/GWT-Modul Ordner) unangetastet und kopiere sie in/acces/www auf meiner PhoneGap App und füge dann etwas Kesselplatte oder Startcode hinzu und laufe so wie es ist.
Klingt wie eine große Bitte, aber ich denke, wenn ich richtig zwei Dinge geben könnte:
Dateipfad zu verwenden, als „root“ für absolute Pfade für Ressourcenanforderungen, die/keine http angeben https-Protokoll (oder andere Protokolle ..... die ich bereits in DroidGap.java behandelt werden sehen)
Server (Protokoll, Host-Name, Port) für jede XHR verwenden fordert
Dann würde alles in der Wäsche herauskommen!
Ich dachte, das wäre ein "Standard" Setup und bereits abgedeckt. Vielleicht ist es und ich verpasse gerade etwas.
Kommentare? Vorschläge?
Vielen Dank im Voraus für jede Hilfe.
aufpassen mit den Zollschriften. Nicht alle Browser unterstützen es gut. Z.B. WP7 nicht. – Loda
Ich mache diese Art der Entwicklung häufig. Nicht sicher, warum du jemals absolute Pfade benutzen würdest. Verwenden Sie nur relative Pfade, da der Punkt von phonegap für mehrere Geräte erstellt werden soll. –