Comparación entre Corona, Phonegap, Titanium


Soy un desarrollador web y quiero mover mis productos web a iPhone. Uno de los productos es como Google Maps: mostrar mapa en la pantalla del teléfono, puede arrastrar o cambiar el tamaño del mapa y ver alguna información que agregamos al mapa.

Sé que hay algunas tecnologías que te permiten usar HTML, CSS y Javascript para desarrollar aplicaciones nativas para iPhone. He identificado algunos:

¿Hay otros productos similares? ¿Cuáles son las diferencias entre ellos? ¿Cuál debo elegir?

Author: Community, 2009-09-27

14 answers

Me registré en stackoverflow solo con el propósito de comentar la respuesta más votada en la parte superior. Lo malo es que stackoverflow no permite que los nuevos miembros publiquen comentarios. Así que tengo que hacer que este comentario parezca más una respuesta.

La respuesta de Rory Blyth contiene algunos puntos válidos sobre los dos frameworks móviles de javascript. Sin embargo, sus puntos clave son incorrectos. La verdad es que Titanio y PhoneGap son más similares que diferentes. Ambos exponen las funciones del teléfono móvil a través de un conjunto de API de javascript, y la lógica de la aplicación (html, css, javascript) se ejecuta dentro de un control WebView nativo.

  1. PhoneGap no es solo un envoltorio nativo de una aplicación web. A través de las API javascript de PhoneGap, la "aplicación web" tiene acceso a las funciones del teléfono móvil como Geolocalización, Cámara Acelerómetro, Contactos, Base de datos, Sistema de archivos, etc. Básicamente cualquier función que el SDK de teléfono móvil proporciona puede ser "puente" al mundo javascript. Por otra parte, un la aplicación web normal que se ejecuta en el navegador web móvil no tiene acceso a la mayoría de estas funciones (la seguridad es la razón principal). Por lo tanto, una aplicación PhoneGap es más una aplicación móvil que una aplicación web. Ciertamente puede usar PhoneGap para envolver una aplicación web que no usa ninguna API de PhoneGap en absoluto, pero eso no es para lo que se creó PhoneGap.

  2. Titanium NO compila su código html, css o javascript en "bits nativos". Se empaquetan como recursos para el paquete ejecutable, al igual que un archivo de imagen incrustado. Cuando la aplicación se ejecuta, estos recursos se cargan en un control UIWebView y se ejecutan allí (como javascript, no bits nativos, por supuesto). No existe tal cosa como un compilador de javascript a código nativo (o a objective-c). Esto se hace de la misma manera en PhoneGap también. Desde el punto de vista arquitectónico, estos dos marcos son muy similares.

Ahora, son diferentes? Sí. En primer lugar, el titanio parece ser más rico en características que PhoneGap por puente más funciones de teléfono móvil a javascript. Lo más notable es que PhoneGap no expone muchos (si es que hay alguno) componentes nativos de la interfaz de usuario a javascript. Titanium, por otro lado, tiene una API de interfaz de USUARIO integral que se puede llamar en javascript para crear y controlar todo tipo de controles de interfaz de usuario nativos. Utilizando estas API de interfaz de usuario, una aplicación Titanium puede parecer más "nativa" que una aplicación PhoneGap. En segundo lugar, PhoneGap soporta más plataformas de telefonía móvil que Titanium. Las API de PhoneGap son más genéricas y se pueden usar en diferentes plataformas como iPhone, Android, Blackberry, Symbian, etc. Titanium se dirige principalmente a iPhone y Android, al menos por ahora. Algunas de sus API son específicas de la plataforma (como las API de la interfaz de usuario del iPhone). El uso de estas API reducirá la capacidad multiplataforma de su aplicación.

Entonces, si tu preocupación por tu aplicación es hacerla más "nativa", Titanium es una mejor opción. Si quieres poder "portar" tu app a otra plataforma más fácilmente, PhoneGap será mejor.

Actualizado 8/13/2010: Enlace a la respuesta de un empleado de Titanium a la pregunta de Mickey.

Actualizado 12/04/2010: Decidí darle a este post una revisión anual para mantener su información actualizada. Muchas cosas tienen cambios en un año que hicieron que parte de la información en el post inicial fuera obsoleta.

El mayor cambio vino del titanio. A principios de este año, Appcelerator lanzó Titanium 1.0, que se apartó drásticamente de su anterior versiones desde el punto de vista arquitectónico. En 1.0, el control UIWebView ya no está en uso. En su lugar, llama a las API de Titanio para cualquier función de interfaz de usuario. Este cambio significa un par de cosas:

  1. La interfaz de usuario de la aplicación se convierte en completamente nativa. No hay más interfaz de usuario web en su aplicación ya que las API nativas de Titanium toman el control de todas sus necesidades de interfaz de usuario. Titanium merece mucho crédito por ser pionero en la frontera de la "Interfaz de usuario nativa Multiplataforma". Da a los programadores que prefieren la apariencia de interfaz de usuario nativa, pero no les gusta el lenguaje de programación oficial una alternativa.

  2. No podrá usar HTML o CSS en su aplicación, ya que la vista web se ha ido. (Nota: todavía puede crear vista web en titanio. Pero hay pocas características de titanio que puede aprovechar en la vista web.) Titanium Q&A: ¿Qué pasó con HTML & CSS?

  3. No podrá utilizar bibliotecas JS populares, como jQuery, que asumen la existencia de un objeto DOM. Continúa utilice JavaScript como su lenguaje de codificación. Pero esa es prácticamente la única tecnología web que puede utilizar si llega a Titanium 1.0 como programador web.

Titanium video: Qué hay de nuevo en Titanium 1.0.

Ahora, Titanium 1.0 compila su JavaScript en "bits nativos"? No. Appcelerator finalmente se aclaró este problema con este blog para desarrolladores: Titanium Guides Project: JS Environment. Los programadores somos personas más genuinas que los de la Departamento de marketing, ¿no? :-)

Pase a PhoneGap. No hay muchas cosas nuevas que decir sobre PhoneGap. Mi percepción es que el desarrollo de PhoneGap no fue muy activo hasta que IBM saltó a bordo a finales de este año. Algunas personas incluso argumentaron que IBM está contribuyendo más código a PhoneGap que Nitobi. Siendo eso cierto o no, es bueno saber que PhoneGap está siendo desarrollado activo.

PhoneGap continúa basándose en tecnologías web, a saber, HTML, CSS y JavaScript. No parece que PhoneGap tenga ningún plan para unir las características nativas de la interfaz de usuario a JavaScript como lo está haciendo Titanium. Si bien la interfaz de usuario web todavía está a la zaga de la interfaz de usuario nativa en rendimiento y apariencia nativa, esta brecha se está cerrando rápidamente. Hay dos tendencias en las tecnologías web que garantizan una característica brillante para la interfaz de usuario web móvil en términos de rendimiento:

  1. Motor JavaScript pasando de un intérprete a una máquina virtual. JavaScript es JIT compilado en código nativo para más rápido ejecución. Motor Safari JS: SquirrelFish Extreme

  2. Procesamiento de páginas web pasando de depender de la CPU a usar la aceleración de GPU. Las tareas gráficas intensivas, como la transición de página y la animación 3D, se vuelven mucho más suaves con la ayuda de la aceleración de hardware. Composición acelerada por GPU en Chrome

Estas mejoras que se originan en los navegadores de escritorio se están entregando a los navegadores móviles rápidamente. De hecho, desde iOS 3.2 y Android 2.0, el control de vista web móvil se ha vuelto mucho más eficiente y compatible con HTML5. El futuro de la web móvil es tan prometedor que ha atraído a un niño grande a la ciudad: jQuery ha anunciado recientemente su marco web móvil. Con jQuery Mobile que proporciona gadgets de interfaz de usuario, y PhoneGap que proporciona funciones de teléfono, ambos combinados crean una plataforma web móvil perfecta en mi opinión.

También debería mencionar Sencha Touch como otro marco de gadgets de interfaz web móvil. Sencha La versión táctil 1.0 fue lanzada recientemente bajo un modelo de licencia dual que incluye GPLv3. Sencha Touch funciona bien con PhoneGap al igual que jQuery Mobile.

Si eres un programador GWT (como yo), quizás quieras echar un vistazo a GWT Mobile, un proyecto de código abierto para crear aplicaciones web móviles con GWT. Incluye un envoltorio PhoneGap GWT que permite el uso de PhoneGap en GWT.

 368
Author: DennisJZH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-12 14:04:02

De lo que he reunido, aquí hay algunas diferencias entre los dos:

  • PhoneGap genera básicamente envoltorios nativos para lo que todavía son aplicaciones web. Escupe un proyecto WhateverYourPlatformIs, lo construyes e implementas. Si estamos hablando del iPhone (que es donde paso mi tiempo), no parece muy diferente de crear un lanzador de aplicaciones web (un acceso directo que tiene su propio icono de trampolín, por lo que puede lanzarlo como (como) una aplicación nativa). El "app" en sí sigue siendo html / js / etc., y se ejecuta dentro de un control de navegador alojado. Lo que PhoneGap proporciona más allá de eso es un puente entre JavaScript y las API de dispositivos nativas. Por lo tanto, se escribe JavaScript contra las API de PhoneGap, y PhoneGap entonces hace la llamada nativa correspondiente apropiada. En ese sentido, es diferente de implementar una aplicación web antigua.

  • Titanium source se compila a bits nativos. Es decir, su html / js / etc. no están simplemente unidos a un proyecto y luego alojados dentro de un control de navegador web, se convierten en aplicaciones nativas. Esto significa, por ejemplo, que la interfaz de tu app estará compuesta por componentes de interfaz de usuario nativos. Hay formas de obtener una apariencia nativa sin tener una aplicación nativa, pero... bien... qué pesadilla que suele ser.

Los dos son similares en que escribes todas tus cosas usando tecnologías web típicas (html/js/css / bla, bla, bla), y que obtienes acceso a funcionalidad a través de api JavaScript personalizadas.

Pero, de nuevo, PhoneGap aplicaciones(PhonGapps? No sé... ¿es un nombre estúpido? Es más fácil decirlo - sé que mucho) comenzar sus vidas como aplicaciones web y terminar sus vidas como aplicaciones web. En el iPhone, su html / js / etc. se acaba de ejecutar dentro de un control UIWebView, y las API de JavaScript de PhoneGap sus llamadas js se enrutan a las API nativas.

Las aplicaciones Titanium se convierten en aplicaciones nativas, solo se desarrollan utilizando tecnología de desarrollo web.

¿Qué hace esto realmente significa ?

  1. Una aplicación Titanium se verácomo una aplicación "real" porque, en última instancia, es una aplicación "real".

  2. Una aplicación PhoneGap se verá como una aplicación web alojada en un control del navegador porque, en última instancia, es una aplicación web alojada en un control del navegador.

¿Cuál es el adecuado para usted?

  • Si quieres escribir aplicaciones nativas usando habilidades de desarrollo web, Titanium es tu mejor opción apostar.

  • Si desea escribir una aplicación utilizando habilidades de desarrollo web que pueda implementar de manera realista en múltiples plataformas (iPhone, Android, Blackberry y cualquier otra cosa que decidan incluir), y si desea acceder a un subconjunto de características nativas de la plataforma (GPS, acelerómetro, etc.) a través de una API JavaScript unificada, PhoneGap es probablemente lo que quieres.

Podrías estar preguntando: ¿Por qué querría escribir una PhoneGapp (he decidido usar el nombre) en lugar de una web aplicación que está alojado en la web? ¿No puedo seguir accediendo a algunas funciones nativas del dispositivo de esa manera, pero también tener la conveniencia de una verdadera implementación web en lugar de obligar al usuario a descargar mi aplicación "nativa" e instalarla?

La respuesta es: Porque puedes enviar tu PhoneGapp a la App Store y cobrarla. También obtienes ese icono de lanzador, lo que hace que sea más difícil para el usuario olvidarse de su aplicación (soy mucho más probable que se olvide de un marcador que de un icono de aplicación).

Usted podría ciertamente cobran por el acceso a su aplicación web alojada en la web, pero ¿cuántas personas realmente van a pasar por el proceso para hacer eso? Con la App Store, elijo una aplicación, toque el botón "Comprar", ingrese una contraseña y listo. Se instala. Segundos después, lo estoy usando. Si tuviera que usar la interfaz de transacción web móvil única de otra persona, lo que probablemente significa tener que tocar mi nombre, dirección, número de teléfono, número CC y otras cosas que no quiero tocar, es casi seguro que no pasaría por consigo. Además, confío en Apple-estoy seguro de que Steve Jobs no va a registrar mi información y luego cobrar un montón de suscripciones a revistas traviesas a mi CC por diversión.

De todos modos, excepto por el hecho de que la tecnología de desarrollo web está involucrada, PhoneGap y Titanium son muy diferentes, hasta el punto de ser solo superficialmente comparables.

Odio las aplicaciones web, por cierto, y si lees las reseñas de iTunes App Store, los usuarios son bastante buenos para detectarlas. No voy a dar ningún nombre, pero tengo un par de " aplicaciones" en mi teléfono que se ven y se ejecutan como basura, y es porque son aplicaciones web que se alojan dentro de instancias UIWebView. Si quisiera usar una aplicación web, abriría Safari y, ya sabes, navegaría a una. Compré un iPhone porque quiero cosas que son iPhone-y. No tengo ningún problema con el uso, por ejemplo, una aplicación web de Google elegante dentro de Safari, pero me sentiría engañado si Google acaba de colar un marcador en el trampolín mediante la presentación de una aplicación web como una nativa.

Tengo que irme ahora. Mi novia tiene que podrías-por-favor-dejar-de-usar-esa-computadora-por-tres-segundos mirar su cara.

 193
Author: Rory Blyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-04 03:49:06

Estoy tomando un curso de desarrollo de Android/iPhone y pasamos 8 semanas con Titanium (no a tiempo completo) (La versión era Titanium 1.4.2 y el tiempo era alrededor de noviembre de 2010). Aquí está mi experiencia.

IPhone Android dual targetting

Aunque las guías de la API afirman que la funcionalidad está disponible tanto para Android como para iPhone, este no es el caso. Muchas de las cosas simplemente no funcionan en una de las plataformas. Algunas cosas funcionan de manera diferente.

Muchas de las personas en la clase ha hecho aplicaciones de iPhone, y no pueden hacer que funcionen en Android sin reescrituras importantes. Desarrollé una simple aplicación para niños llamada Animap (ver android market / Appstore en Suecia) y comencé a desarrollar bajo Windows. Una vez que el objetivo de Android estaba trabajando abrí el proyecto en OS X. No muestra ningún material de compilación para iPhone, solo para Android. Necesita iniciar un proyecto de doble destino bajo OS X. (Ok, copié los archivos relevantes a un nuevo proyecto). Siguiente problema - las animaciones no funciona en iPhone (funcionan en Android). Los eventos de desplazamiento no funcionan igual en el iPhone. (es decir, en Android se obtiene el evento intocable cuando el usuario deja de desplazarse y libera su dedo de la pantalla, esto no sucede en el iPhone).

Dado que esto no se menciona en algún lugar, básicamente necesita hacer programación de prueba y error en una plataforma primero, luego en la otra plataforma. Por ensayo y error me refiero a que tomará unos dos días para obtener una aplicación tan simple como Animap trabajando en la otra plataforma. También tendrá que tener if (android) entonces... o si(iphone)... por todo tu código...

Descargar y configurar

Debe seguir las instrucciones al pie de la letra. No intente usar java 64 bit. No compilará la aplicación de demostración KitchenSink 1.4.0. (1.3 funciona bien!) Debe poner los archivos directamente en la unidad C, ya que los nombres de ruta largos harán que el programa externo no reciba todos los parámetros de la línea de comandos si llegan a largo. (Multa para programas pequeños aunque) 1/3 de las veces, la cadena de herramientas simplemente se detiene y debe presionar 'launch' nuevamente. Entonces probablemente funcionará... muy poco fiable. El simulador no se encuentra en el inicio y entonces usted debe simplemente matar de adb.exe con Ctrl + Alt + Supr y reintentar.

Conexión de red

En una red wifi a veces pierde la conexión en vivo y Titanium se bloquea en usted (la interfaz de compilación/implementación) Si no tiene una conexión a Internet que funcione, no se iniciará ya que no puede iniciar sesión tú a sus servidores.

API

CSS, HTML y jQuery es una brisa en comparación con esto. Titanium se asemeja a cualquier otra API GUI antigua, y necesita establecer algunas propiedades para cada botón / campo / etc. Obtener un campo incorrecto es simplemente fácil, recordando todas las propiedades que se deben establecer? ¿Se escribe con mayúsculas en el lugar correcto? (ya que esto no es captado por el compilador, pero será visto como un error de tiempo de ejecución si tiene la suerte de probar esa parte)

En Las cosas de titanio simplemente se rompen cuando agrega otra vista encima de un control o hace clic en otro lugar en la interfaz gráfica de usuario.

Documentación

Varias páginas de API llevan el símbolo de Android, pero solo devolverán un null cuando intentes crear el control. No están simplemente disponibles en la plataforma Android a pesar de los símbolos. A veces se menciona que Android no es compatible con un método en particular, pero entonces falta toda la API.

KitchenSink

La aplicación de demostración. Lo hice mencione que no compila si lo pone en su carpeta de proyecto Eclipse porque la ruta se vuelve demasiado larga? Debe colocarse en su unidad C en la carpeta raíz. Actualmente uso un enlace symbolik (mklink / J ...)

Métodos no documentados

Probablemente debes usar cosas como etiqueta.setText ('Hello World') para cambiar una etiqueta confiable pero esto no está documentado en absoluto.

Depuración

Titanium.API.info ('Las impresiones son la única manera de depurar');

Edición

Las APIs no están disponibles en ningún buen formato, por lo que no puede obtener una finalización de código ordinaria con ayuda, etc. en Eclipse. Aptana por favor ayuda!

Hardware

Parece que el compilador/herramientas no son multiproceso por lo que un equipo rápido con un disco duro rápido es una necesidad, ya que debe hacer mucho ensayo y error. ¿Mencioné la mala documentación? Usted debe probar todo allí, ya que no se puede confiar en él!

Algunas cosas positivas

  • Código abierto
  • De anterior proyectos Que me he prometido a mí mismo nunca volver a utilizar el código cerrado, ya que no se puede simplemente arreglar las cosas con solo tirar horas y mano de obra en él. Importante cuando llega tarde al proyecto y necesita entregar para una fecha límite difícil. Esto es de código abierto y he sido capaz de ver por qué la cadena de herramientas se rompe y realmente arreglarlo también.

  • Bugdatabase

  • También está abierto. Simplemente puede ver que no está solo y hacer una solución alternativa en lugar de otras 4 horas gastadas en prueba y error.

  • Comunidad

  • Parece estar activo en sus foros.

Errores

  • Titanium 1.4 no es threadsafe . Eso significa que si haces uso de subprocesos (usa la propiedad url: en una llamada CreateWindow) y programas como los subprocesos están funcionando y envían eventos con datos de ida y vuelta, te encuentras con un montón de cosas muy, muy extrañas: controladores perdidos, ventanas perdidas, demasiados eventos, muy pocos eventos, etc. sucesivamente. Todo esto es dependiente en el momento, poner las filas de código en un orden diferente podría bloquear o curar su aplicación. Agregar una ventana en otro archivo.js rompe tu aplicación.ejecución js... Esto también elimina las estructuras de datos internas en Titanium, ya que a veces pueden actualizar las estructuras de datos internas en paralell, sobrescribiendo un valor que acaba de cambiar con otra cosa.

Muchos de los problemas que he tenido con Titanium provienen de mi experiencia en sistemas en tiempo real como OSE que admiten cientos de hilos, eventos y paso de mensajes. Se supone que esto funciona en Titanium 1.4, pero simplemente no lo hace de manera confiable.

  • Javascript (que es nuevo para mí) muere silenciosamente en errores de tiempo de ejecución. Esto también significa que los errores pequeños y comunes, como escribir mal un nombre de variable o leer un puntero nulo no se bloquean cuando debería, por lo que puede depurarlo. En su lugar, partes de su programa simplemente dejan de funcionar, por ejemplo, un eventhandler, porque ha extraviado/escrito incorrectamente un carácter.

  • Entonces tenemos errores más simples en Titanium, como algunos parámetros que no funcionan en las funciones (que es bastante común en la plataforma Android al menos).

  • Velocidad del ciclo de depuración de prueba y error Habiendo ejecutado Titnium Developer en varias computadoras, noté que el cuello de botella es el disco duro. Una unidad SSD en una computadora portátil hace que el ciclo de compilación sea aproximadamente 3-5 veces más rápido que en una unidad de 4200 rpm. En un escritorio, tener unidades duales en RAID 1 (modo de rayas) hace que la compilación sea aproximadamente un 25 por ciento más rápida que en una sola unidad con una CPU algo más rápida y también supera a la unidad SSD portátil.

Resumen

  • De los comentarios en este hilo parece haber una lucha por el número de plataformas de una herramienta como esta puede entregar aplicaciones para. El número de API parece ser el punto de venta clave.

Esto brilla mucho cuando empiezas a usarlo. Si nos fijamos en el bugtracker abierto se ve que el número de errores sigue aumentando más rápido que el número de errores corregidos. Esto suele ser una señal de que los desarrolladores siguen agregando más funcionalidad, en lugar de concentrarse en reducir el número de errores.

Como consultor que intenta entregar aplicaciones bastante simples a multiplataformas para un cliente, no estoy seguro de que esto sea realmente más rápido que desarrollar aplicaciones nativas en dos plataformas. Esto se debe al hecho de que cuando estás al día eres rápido con el titanio, pero de repente miras hacia abajo y te encuentras en un agujero tan profundo usted no sabe cuántas horas se deben pasar para una solución. Simplemente NO puede prometer una cierta funcionalidad para un cierto plazo/tiempo/costo.

Acerca de mí: He estado usando Python durante dos años con wxPython. (esa GUI es discreta, pero nunca se rompe así. Puede ser que yo no haya entendido el modelo de threading utilizado por Javascript y Titanium, pero no estoy solo de acuerdo con sus foros de discusión abiertos, los objetos GUI de repente están usando el contexto incorrecto/no actualizando..???) antes de eso tengo experiencia en programación C y ASM para dispositivos móviles.

[edit-parte añadida con errores y no es seguro hilo] [Editar - ahora después de haber trabajado con él durante un mes+, sobre todo en PC, pero algunos en OS X también. Añadido doble targetting para iPhone y Android. Se ha añadido la velocidad del ciclo de depuración de prueba y error.]

 62
Author: user288299,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-11 12:54:24

El Corona SDK (Ansca Mobile) utiliza Lua como su lenguaje de codificación. Véase lua.org para más información sobre Lua.

Si bien planeamos agregar más integración web y elementos de interfaz de usuario nativa, nuestro enfoque tenderá a ser en aplicaciones con uso intensivo de gráficos, como el desarrollo de juegos, en lugar de las tecnologías basadas en la web. En otras palabras, no imaginamos que las personas escriban aplicaciones Corona completamente en Javascript / HTML / CSS.

 25
Author: Evan Kirchhoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-11 23:30:33

He estado trabajando con Titanio durante más de una semana y siento que tengo una buena sensación sobre su debilidad.

1)Si usted espera que utilice el mismo código en varias plataformas buena suerte! Verá algo como backgroundGradient y se sorprenderá hasta que descubra que la versión de Android no lo admite. A continuación, tiene que volver a utilizar una imagen de degradado, también podría utilizarlo para ambas versiones para hacer el código más fácil derecho?

2) Un montón de comportamientos extraños, en el titanio android sdk necesita entender lo que es una ventana "pesada" solo para que el botón atrás funcione, o incluso mejor seguimiento de eventos de orientación. Así no es como la plataforma Android realmente es, es solo cómo Titanium trata de hacer que su API funcione.

3) Su arrojado en la oscuridad, Las cosas se estrellarán y usted tiene que empezar a comentar el código y luego cuando lo encuentre, nunca lo use. Hay ciertos errores obvios, como la orientación y los porcentajes en Android que han sido un problema durante más de seis meses.

4) Error .... hay muchos errores y serán reportados, se sentarán durante meses, se arreglarán en unos pocos días. Me sorprende que incluso estén planeando lanzar un sdk móvil Black Berry cuando hay tantos otros problemas con Android.

5) Titanium Iphone versus Titanium Android los motores javascript son completamente diferentes. En la versión de Android puede descargar archivos javascript remotos, incluir y usar bibliotecas como mootools, jquery, etc. Estaba en el cielo cuando descubrí esto. porque no tenía que seguir compilando mi aplicación para Android. El proceso de instalación de Android apk toma tanto tiempo! Iphone nada de eso es posible, también la versión para iphone tiene un motor javascript mucho más rápido.

Si se mantiene alejado de muchas de las partes de la interfaz de usuario nativa, es decir, en su lugar use setInterval para detectar cambios de orientación, quedarse con imágenes degradadas, olvidarse del botón atrás, construir sus propias animaciones, olvidar el encabezado de la ventana, las barras de herramientas y el panel de control. Realmente puedes hacer una api que funcione en ambos que no requiere de mucha reescritura. Pero en ese momento es tan lento como una aplicación web.

Entonces, ¿vale la pena? Después de todo el dolor, vale la pena cada minuto. Puede abstraer la lógica y simplemente construir una interfaz de usuario diferente para cada uno en lugar de si elseing en todas partes. El titanio le permite realizar aplicaciones fluidas, que se sienten rápidas. Pierdes las poderosas habilidades de diseño de cada plataforma, pero si piensas simple, las cosas se pueden hacer en un solo idioma.

¿Por qué no una aplicación web? En nivel de entrada de mercado teléfonos Android su horriblemente lento para generar una vista web y consume una gran cantidad de memoria que podría estar utilizando para hacer lógica más compleja.

 18
Author: Gorilla3D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-22 21:51:46

Aquí hay un análisis más reciente y profundo de Appcelerator y PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

Y aquí hay aún más detalles sobre cómo difieren programáticamente: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript

 10
Author: Tony Lukasavage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-25 19:27:26

Mapkit nativo es compatible con Titanium

 9
Author: jhaynie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-01 05:52:35

Hacer que los widgets de HTML5 parezcan widgets de iphone es una cosa, pero hacer que funcionen igual de bien es otra cosa por completo. El rendimiento de las animaciones html5 (incluso transiciones de vista simple), el desplazamiento de listas largas, la capacidad de respuesta a los gestos se siente pegajoso y desigual. Un usuario de iPhone notará la diferencia.

También hay algunas diferencias en los tipos de gestos que son compatibles con diferentes dispositivos que se traduce en código específico de la plataforma y problemas de usabilidad, así.

Me quedaré con las aplicaciones nativas por ahora, supongo.

 8
Author: user158678,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-17 03:11:56

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) es muy similar en enfoque a PhoneGap, pero es el único framework con:

  1. un patrón de Controlador de Vista de modelo (como la mayoría de los frameworks web proporcionan)
  2. un Gestor Relacional de Objetos
  3. soporte para todos los teléfonos inteligentes populares (incluido Windows Phone 7)
  4. un servicio de desarrollo alojado (no solo una compilación alojada): http://rhohub.com
  5. un depurador completo y un emulador sin SDK en el RhoStudio IDE
  6. soporte para datos sincronizados sin conexión
 7
Author: Adam Blum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-10 21:29:05

Para cualquier persona interesada en Titanium debo decir que no tienen una muy buena documentación algunas clases, propiedades, métodos faltan. Pero mucho está "documentado" en su aplicación de muestra the KitchenSink, por lo que no es TAN malo.

 6
Author: gyozo kudor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-07 08:35:48

Mi comprensión de PhoneGap es que proporcionan API de Javascript a gran parte de las API de iPhone.

Titanium parece más fácil para un desarrollador web. Es un simple archivo XML para crear una aplicación TabView básica y luego todo en el área de contenido es controlado por HTML / JS. También sé que Titanium proporciona acceso javascript a algunos de los frameworks (particularmente acceso a la información de ubicación, la identificación del teléfono, etc.).

ACTUALIZACIÓN: Titanium agregó API de mapas en versión 0.8 de su framework.

 5
Author: Jackson Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-06 05:54:11

Usted debe aprender objective c y aplicaciones nativas del programa. No confíes en estas cosas que crees que harán la vida más fácil. Apple se ha asegurado de que la forma más fácil es usar sus herramientas y lenguaje nativos. Para sus 100 líneas de javascript puedo hacer lo mismo en 3 líneas de código o sin código en absoluto dependiendo del elemento. Mira algunos tutoriales - si entiendes javascript entonces objective c no es difícil. Las soluciones alternativas son miserables y Apple puede desconectarte en cualquier momento que lo desee.

 3
Author: TouchGameDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-14 04:30:41

De las soluciones que mencionaste, ninguna parece darte acceso directo al framework MapKit introducido en OS 3.0.

Como los widgets HTML de Google Maps no son tan buenos como MapKit (vea Google Latitude para un ejemplo), probablemente sea mejor desarrollar una aplicación nativa Cocoa touch, o elegir una solución que pueda extender para agregar la integración de MapKit. PhoneGap es extensible de esta manera (es de código abierto por lo que es por defecto), y algunas de las otras soluciones podrían ser así.

editar: Titanium ahora tiene soporte para MapKit

 3
Author: rpetrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-31 19:55:10

He intentado corona. Era bueno hasta que descubrí que no es compatible con la transmisión de audio mp3. Así que me detuve justo ahí. Creo que si realmente quiero ser un desarrollador de aplicaciones de Iphone debería aprender obj c. Todo lo que quería hacer una aplicación que tiene una lista de estaciones de radio y haga clic en ellos comienza a jugar.

 1
Author: netmastan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-29 03:17:52