2012-01-24 23 views
5

Mi problema está relacionado con PhoneGap y el desarrollo de Android usando el plugin Eclipse Applaud. Descargué e instalé el complemento Applaud con éxito. Puedo crear un nuevo proyecto usando el asistente Applaud (a través del icono de la barra de herramientas de Eclipse), y la demostración se ejecuta correctamente en el dispositivo. Sin embargo, cuando sobrescribo los archivos HTML existentes html & js (only main.js, not phonegap.js), luego lo compilo en el dispositivo, la funcionalidad no funciona bien (botón hace clic/actualizar uu/etc), pero los comandos PhoneGap como (device.version/device.platform/etc) no parece funcionar.Applaud y Phonegap en Android

He intentado conectar esto en el evento onDeviceReady y asegurarme de que la biblioteca .jar está incluida, pero sigo teniendo el mismo problema. Así que supongo que mi pregunta es; Al crear una solución PhoneGap utilizando Applaud, ¿Eclipse necesita compilar y biblioteca, como PhoneGap? y si es así, ¿cómo podría alguien hacer tales cosas?

registro de errores:

01-24 14:59:44.567: W/KeyCharacterMap(5453): No keyboard for id 131074 

01-24 14:59:44.567: W/KeyCharacterMap(5453): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

01-24 14:59:59.917: I/Web Console(5453): Failed to run constructor: TypeError: object is not a function at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Web Console(5453): Failed to run constructor: TypeError: Cannot read property 'capture' of undefined at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Database(5453): sqlite returned: error code = 14, msg = cannot open file at source line 25467 

01-24 15:00:00.057: D/dalvikvm(5453): GC_CONCURRENT freed 1185K, 55% free 3188K/6983K, external 2630K/2814K, paused 2ms+3ms 
+0

¿Agregaste el complemento al archivo plugins.xml? – ghostCoder

+0

¿se está disparando el evento onDeviceReady? – ghostCoder

+0

Sí, también el archivo de complemento está en root/res/plugins.xml. He registrado el dispositivo durante la ejecución y parece que obtengo el siguiente resultado: I/Web Console (4894): Error al ejecutar el constructor: TypeError : object no es una función en file: ///android_asset/www/resources/js/phonegap-1.3.0.js: 210I/Web Console (5109): Error al ejecutar el constructor: TypeError: no se puede leer la propiedad 'capture' de indefinido en el archivo: ///android_asset/www/resources/js/phonegap-1.3.0.js: 210 I/Base de datos (5109): sqlite devuelto: código de error = 14, msg = no se puede abrir el archivo en la línea fuente 25467 – JohnHodkinson

Respuesta

3

Así que estoy de vuelta y de alguna manera he resuelto el problema que tuve (muy probablemente por suerte). Cuando comencé este proyecto, pensé que el mejor enfoque sería hacer que esta aplicación fuera lo más modular posible; cada funcionalidad (solicitudes web, lectura/escritura de archivos, etc.) debe estar separada la una de la otra. Por lo tanto, creé muchos archivos js separados, cada uno etiquetado con el nombre apropiado (red, dispositivo, idioma, etc.), y luego los incluí en mi página index.html, que luego se ejecuta en phonegap.

En algunos de estos archivos, que tomó el siguiente enfoque:

var Device = { 
    // Returns the Device Name as a string. 
    Name: function() { 
     return window.device.name; 
    } 
}; 

Como resultado, podría entonces acceder a esta funcionalidad utilizando el operador punto (que yo prefiero). Sin embargo, al hacerlo, se obtuvieron muchos archivos que dependen uno del otro, lo que dificulta el seguimiento de mi problema. Después de pasar algún tiempo comentando y deshaciendo la funcionalidad, parece usar una combinación del enfoque anterior (operador de punto) y mi mala elección de convenciones de nomenclatura. La implementación anterior de Device.Name() parecía (no del todo segura sobre por qué/cómo) un conflicto con las bibliotecas de PhoneGap, lo que resulta en errores js en el dispositivo.

Después de cambiar el nombre anterior de "Dispositivo" a "Auricular", mi problema desapareció. Una solución simple y tal vez obvia para una tarde dolorosa.

+0

Escucha, acabo de tener el mismo problema. Cuando importa un proyecto o crea uno nuevo, la etiqueta del script para cargar el japón de teléfono se aprueba. Solo en caso de que no lo necesites. Solo tienes que descomentar esa línea. –

+0

phonegap.js define un objeto Device con propiedades específicas del dispositivo; entrará en conflicto con su objeto anterior y probablemente no funcione. –

1

voy a responder a su pregunta, pero no creo que es su problema:

Sea o no el asistente aplauden sólo utiliza phonegap.jar o reconstruye su componentes depende de cómo se utiliza el asistente de creación de proyectos.

Si utiliza su "Phonegap incorporado" o apunta a una versión oficial descargada ("Ingrese la ruta a PhoneGap instalado"), solo apuntará al phonegap.jar de esa versión. Si apunta a un directorio con una versión descomprimida de Github PhoneGap, no se utilizará phonegap.jar y las fuentes Java de PhoneGap se integrarán en su proyecto. Esto facilita la depuración de la implementación de PhoneGap.

En cuanto a su problema, es probable que tenga algún problema con su archivo index.html, como una falta de ortografía de phonegap {...}. Js. Como dice ghostCoder en los comentarios, es posible que deba compartir su código para obtener ayuda sobre él.

Cuestiones relacionadas