Tengo lo que creo que es una configuración bastante estándar de una aplicación web existente y me gustaría obtener consejos sobre cómo adaptarla mejor para crear versiones nativas a través de PhoneGap, de forma tal que podemos seguir desarrollando la aplicación web y actualizar las versiones generadas por el teléfono con un mínimo de reproceso.problemas de ruta portando la aplicación web a phonegap
Soy un usuario de PhoneGap. He buscado e intentado varias sugerencias de StackOverflow, etc. sin suerte, al menos para mi configuración.
La aplicación se desarrolla en GWT y consta de:
recursos estáticos en una carpeta compartida para toda la aplicación
/estáticos/con imágenes, fuentes, css. El css define algunas familias de fuentes, haciendo referencia a los archivos de fuentes en/fonts
Nos referimos a estos recursos estáticos de archivos html y código JavaScript usando rutas absolutas .
recursos estáticos en un número de subcarpetas (por módulos de GWT FYI)
tal como/LoginGadget, que tendrán GWT generan HTML, JavaScript y, a veces subcarpetas con CSS y CSS-imágenes.
GWT-RPC
Estos son, básicamente, los servlets, donde GWT se encarga de serialización, etc, y se accede desde nuestro código de cliente a través de las XHR bajo las sábanas
PhoneGap Build
he comenzado a mirar crear una aplicación empaquetada usando PhoneGap y encontrar algunos problemas donde necesito asesoramiento (ejemplo de Android).
He creado/assets/www y puse un archivo index.html allí y lo ejecuté. he copiado una versión de nuestro/estática/carpeta y nuestra carpeta/LoginGadget virtud de que "raíz" de ver, y lo comenzó usando
super.loadUrl("file:///android_asset/www/index.html");
que trabaja.
En todos nuestros archivos html y Javascript generados por GWT tenemos referencias a recursos estáticos usando rutas absolutas (ej. "/ Static/....") y relativas (por ejemplo, de un LoginGadget Javascript, podría hacer referencia a "css/some.css ").
Las rutas relativas funcionan, ya que residen "debajo" de la carpeta donde se encuentran los html/js que las hacen referencia.
Problema 1
Sin embargo, las referencias a rutas absolutas fallan, a pesar de PhoneGap partir diciendo:
DroidGap: url=file:///android_asset/www/index.html baseUrl=file:///android_asset/www/
Me espera una referencia a "/static/images/file.png" de decir índice. html para ser anexado a "baseUrl" para dar file: ///android_asset/www/static/images/file.png y por lo tanto funcionar, ya que es donde se encuentra el archivo.
He tenido que modificar index.html para usar "static/image/file.png" para que funcione. Pero tendría que recompilar toda nuestra aplicación GWT con una configuración diferente para modificar todas las referencias a los recursos, y las referencias de otros archivos en subcarpetas a "/ static /" no funcionarán si se modifican para ser solo "estáticas"/".
¿Cómo puedo obtener referencias absolutas de ruta a "map" en/assets/www o similar? (Véase más abajo, he mirado en el uso de la etiqueta "base" ....)
Problema 2
Las RPC GWT hacen la solicitud XHR al servidor los html/js era servido de. Esto funciona muy bien ya que la aplicación no tiene el nombre del servidor host codificado, y de hecho está implementado en muchos appendio appids/dominios para probar, etc.
Aquí los archivos html/js son "servidos" desde file: /// por lo tanto, necesito especificar el servidor de alguna manera.
Intenté especificar con la etiqueta "base" como está documentado, pero cualquier referencia que tengo en mi html/js a un recurso que no especifica "file: //" parece estar hecha al servidor especificado en "base" ... por lo tanto, ya no estoy cargando mis recursos locales y básicamente tengo una aplicación web servida desde mi servidor.
Quieres
Lo que me gustaría hacer, es ser capaz de tomar la (bastante grande) compilado y probado aplicación desde la guerra de mi WAB-aplicación (/ estático y todas mis carpetas/GWT-Module) sin tocar y copiarlos en/assets/www en mi aplicación PhoneGap y luego agregar un poco de placa de caldera o código de inicio y ejecutar como está.
suena como una de las grandes demandas, pero creo que si pudiera especificar adecuadamente dos cosas: Ruta a
archivo para usarlo como "raíz" de rutas absolutas para las solicitudes de recursos que no especifican un HTTP/protocolo https (u otros protocolos ..... que ya veo son manejados en DroidGap.java)
servidor (protocolo, nombre de host, puerto) a utilizar para cualquier XHR solicita
¡Entonces todo saldría a la luz!
Pensé que esta sería una configuración "estándar" y ya estaba cubierta. Tal vez lo es y me estoy perdiendo algo.
Comentarios? sugerencias?
Gracias de antemano por cualquier ayuda.
ten cuidado con las fuentes de aduana. No todos los navegadores lo admiten bien. P.ej. WP7 no. – Loda
Hago este tipo de desarrollo con frecuencia. No estoy seguro de por qué alguna vez usaría rutas absolutas. Use rutas relativas solo como el punto de phonegap para compilar para dispositivos múltiples. –