org - recorrer jsonarray java
Objective-C y Android (13)
Acabo de terminar un proyecto relativamente grande para el Android, y me queda un sabor amargo en la boca con el conocimiento de que nunca se ejecutará en uno de los teléfonos más omnipresentes de este lado del sistema solar (el de ese pequeño frutal club).
Entonces, para mi próximo proyecto, quiero escribirlo de una manera que haga que la mayoría de los componentes sean fácilmente transportables entre las plataformas de iPhone y Android. La forma en que estoy pensando en hacer esto es codificando la mayor parte en Objective-C, y luego agregando las partes específicas de la plataforma en más Objective-C y Java respectivamente. En el lado de Android, esto requerirá el uso del NDK.
Mi conocimiento de C es bueno, pero mi conocimiento de Objective-C es cercano a cero, y no tengo ningún deseo de aprender C ++. ¿Qué tan cuerdo es el enfoque anterior, y hay uno mejor? ¿Hay alguna manera de poder codificar en Java y seguir llegando al mercado de iPhone no hackeado? ¿Y qué tan probable es que las personas que conozco (usuarios de iPhone) tengan un teléfono con Android el año que viene?
Aquí hay una charla de la conferencia mobile @ scale en la que dos equipos (dropbox y orquesta) utilizaron enfoques similares. Dropbox usó C ++ para crear libdropbox y Orchestra (buzón) usó Objective-c para crear libmailbox.
Nuevamente, escribieron sus interfaces en el lenguaje nativo de la plataforma y usaron sus libretas multiplataforma para la lógica y los datos básicos.
Beneficios clave que saqué: el buzón pasó de ios a android en 5 semanas porque solo estaba creando el código de UI. Dropbox puede realizar una prueba beta de los cambios en la funcionalidad principal que se encuentran en la biblioteca compartida con implementaciones de Android beta donde es más fácil realizar implementaciones masivas a escala para las versiones beta.
El SDK de Apportable es un enfoque de Objective-C que se escribe una vez y se implementa tanto en IOS como en Android. Se compilará de forma cruzada un proyecto IOS Xcode en ejecución en un SDK de Android.
Vea here aplicaciones de muestra que se ejecutan en ambas plataformas en minutos después de la descarga.
El tiempo de ejecución de Objective-C aún no se ha portado a Android. No debería ser demasiado trabajo, pero aun así, sin un conocimiento práctico del idioma, dudo que te sea fácil portarlo.
Lo que estás tratando de hacer es difícil para una aplicación genérica, pero debería ser posible para los juegos, si eliges desarrollar el juego en C simple (que es compatible con el NDK de Android y el iPhone). Tendría que escribir un código de cola para pasar los eventos de entrada de los entornos Obj-C y Java a su código C, pero eso no debería ser un gran problema. Objective-C le permite llamar directamente a su código C y hay muchos proyectos de ejemplo que hacen exactamente esto para Android.
Hablando de esto desde un ángulo diferente ... Sé que dijiste que querías intentar mantenerte con Java, pero si conoces C #, entonces podrías usar el marco MonoTouch para el iPhone. Mono es esencialmente una implementación de código abierto de la pila .Net. El equipo de Mono está trabajando para llevar Mono a Android, por lo que básicamente podría escribir una biblioteca de C # compartida para su lógica empresarial y tener diferentes Vistas / Controladores por plataforma. Todo esto estaría en C # por supuesto y es un poco más caro, pero resuelve el problema de escribir todo en diferentes idiomas.
Creo que se llama MonoTouch en el iPhone y MonoDroid en Android.
Me doy cuenta de que esto puede ser un poco tarde, pero parece que la industria va en la dirección de las aplicaciones web en estos días para lograr la portabilidad de las aplicaciones. Es decir, incrustar un navegador web en su "aplicación nativa de esqueleto" y escribir javascript, css y html para Android, iOS y otras plataformas de teléfonos inteligentes importantes.
Hay herramientas que te ayudan con esto. Es posible que desee revisar PhoneGap y Sencha Touch , pero hay muchos más. Tenga en cuenta que este enfoque puede no ser ideal para aplicaciones intensivas en tiempo real / animación.
Mi conjetura, que no tiene experiencia para respaldarlo, es que probablemente pueda escribir Obj-C con el NDK de Google de alguna manera, dado que GCC existe para ARM, es de código abierto, tiene un compilador de Obj-C y un tiempo de ejecución básico de Obj-C (que si es que ya no es probable, podría ser hackeado para trabajar en una nueva arquitectura), etc.
Eso también podría ser mucho trabajo para un beneficio cuestionable.
Y, por supuesto, "Obj-C" (sin las clases NS
) significa algo muy diferente a "Cocoa", que es lo que la mayoría de la gente realmente quiere decir cuando dice "Obj-C". Es posible que pueda reutilizar algo de GNUstep para algunos, pero ... Honestamente, lo dudo. Suena otra vez como mucho trabajo.
Entonces, sí, creo que es posible. También es mucho trabajo y no creo que valga la pena.
Teniendo en cuenta lo que ha dicho, si estuviera intentando esto, me sentiría tentado a escribir la mayor parte de su lógica central en C, y luego lo envolvería con dos GUI para cada plataforma.
No estoy seguro de Android, pero con el iPhone básicamente puedes escribir directamente en C siempre que lo encierres en las clases de Objective-C.
No he intentado esto ni he terminado de ver la conversación todavía, pero hay una charla de Google Tech sobre el desarrollo de aplicaciones para iPhone utilizando Java en YouTube que parece bastante prometedora.
Objective-C sin Cocoa no es tan útil y no lo acercará mucho a tener un código base de iPhone que funcione. Probablemente sea mejor que escriba su núcleo en C con Core Foundation y use Java o Objective-C para las partes específicas de la plataforma. Apple ha obtenido una gran cantidad de Core Foundation como CF-Lite, y no tiene costo alguno con Cocoa en OS X (es decir, puede usar muchas clases de CF indistintamente con sus homólogos de Cocoa).
Otros han dicho básicamente esto, pero me gustaría hacerlo más explícito. Tu mejor apuesta es probablemente escribir:
- Modelos de datos multiplataforma y lógica central, utilizando:
- Código de interfaz solo para iPhone, utilizando Cocoa Touch (Obj-C)
- Código de interfaz solo para Android, sin embargo lo hacen para Android.
Eso es lo más cerca que puedes llegar; cualquier intento de escribir código de interfaz multiplataforma sin duda resultará en una aplicación mediocre en ambas plataformas. Pero hacer que todo el resto de su código sea portátil y simplemente envolver una interfaz específica para el dispositivo se realiza todo el tiempo y ha sido excelente para algunos desarrolladores de iPhone.
Retroceda y piense en lo que, al final, lógicamente podrá compartir.
Los modelos de interfaz de usuario son bastante diferentes, los componentes son diferentes. Al final, lo que podría compartir es clases de objetos de datos, posiblemente algunos algoritmos. Ni siquiera es como si realmente pudieras terminar compartiendo código de red como en los viejos tiempos porque no estás usando directamente sockets, estás usando bibliotecas HTTP.
Entonces, ¿todo el esfuerzo que está poniendo en esto realmente encontrará una recompensa al final? Me parece que el resultado final será un desorden frágil que es difícil de actualizar, y es mediocre en ambas plataformas en lugar de ser grandioso en cualquiera de las dos.
¿Por qué estás escribiendo aplicaciones? ¿Para que la vida sea más fácil para usted o sus usuarios?
Si puede esperar hasta fines de este año (cantidad de tiempo exacta desconocida), Adobe tendrá AIR para Android y un compilador para iPhone. Por lo tanto, puede escribir una aplicación en AIR para Android y usar la mayor parte del mismo código para compilar en el iPhone.
http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/
Incluso si no puede esperar, visite: http://www.insideria.com/2008/12/actionscript-to-cocoa---protot.html donde explica las similitudes entre ActionScript y Cocoa.
También revise: http://labs.adobe.com/technologies/air2/ para la versión de AIR capaz de usar la pantalla táctil.
Por lo tanto, pronto podrá escribir una vez e implementar en Android y iPhone utilizando ActionScript 3.
XMLVM es un proyecto que es capaz de traducir (algunas) aplicaciones de Android al iPhone. Para más información, visite http://xmlvm.org/android/