Estoy transfiriendo mi aplicación de iOS a Android: ¿qué necesito saber? [cerrado]

15

¿Qué trampas debo evitar?

  • ¿Qué paradigmas del lenguaje Java entienden los desarrolladores de Objective-C de manera consistente? Aprendí a programar en Java, pero he trabajado en nada más que Objective-C durante años.
  • ¿En qué se diferencian los patrones de diseño entre Android e iOS?
  • Si ha realizado la transición usted mismo, ¿qué partes de Android lo confundieron o le tomó más tiempo aprender de lo que debería?
  • ¿Es Eclipse el mejor OS X IDE para Android?

Para el registro, mi aplicación está muy ligada a UIKit y Foundation, por lo que la palabra "portabilidad" puede ser incorrecta; De hecho, lo reescribiré por completo para Android. Sin reutilización de código. Además, estoy haciendo esto para aprender Android, así que prefiero fallar en el puerto y aprender Android que tomar un atajo.


Como un poco de antecedentes, esta pregunta fue provocada por los tipos de preguntas que veo en Stackoverflow. Con frecuencia puedes decir cuál era el trasfondo de alguien (C # o Java) por los errores tontos que cometen cuando intentan escribir Obj-C. Me gustaría evitar el tipo de errores que hacen que los desarrolladores de Java pongan los ojos en blanco y digan: "Desarrolladores tontos de Objective-C, ¿nunca aprenderán?"

kubi
fuente
2
Is Eclipse the best OS X IDE for Android?Sí, ADT no funcionó bien en netbeans la última vez que lo intenté. Eclipse es el IDE recomendado.
Keyo
@ Keyo: ¿Eh? Cuando lo probé en Netbeans hace un año y medio, funcionó bastante bien. ¿Seguramente durante ese tiempo habría mejorado?
TheLQ
En respuesta al comentario como respuesta de @Nassign: Ciertamente habría obtenido muchas más respuestas si hubiera publicado en Stackoverflow, pero al navegar por los Programadores parece que hay muchos de estos tipos de preguntas que se están migrando aquí. Si fuera más apropiado para ese foro, puedo preguntarlo allí.
kubi
Creo que obtendría más respuesta si lo coloca en stackoverflow.
Nassign
1
@kubi Este es un buen lugar para preguntar esto y se ajusta al propósito de este sitio: espero que obtenga algunas respuestas, estoy interesado.

Respuestas:

11

Estoy transfiriendo una aplicación de iOS a Android, es la aplicación de otra persona con la que estoy trabajando para hacer el puerto, pero no obstante.

En primer lugar, diría que a las bases de usuarios se les han enseñado formas drásticamente diferentes de interactuar con sus dispositivos. Mucho de esto proviene del diseño real de las aplicaciones, así como de las formas en que funcionan los dispositivos.

Algunas cosas generales:

  • Landscape es bastante necesario en dispositivos Android
  • Las aplicaciones de Android tienden a seguir ejecutándose cuando no se usan activamente, por lo que debe pensar en esto para problemas de red, gps, etc.
  • Segmentación del dispositivo, hay toneladas de dispositivos Android y resoluciones de pantalla, aquí es donde los diseños relativos y las imágenes de nueve parches son muy útiles.

Uno grande en el que muchas personas no piensan inicialmente Your UI can not be exactly the same on both devices, seguro que puede ser similar, pero portar una interfaz de usuario de iPhone a un dispositivo Android no funcionará muy bien.

Algunos motivos:

  • Menús contextuales largos
  • Popups de menú
  • Segmentación del dispositivo que causa diferentes resoluciones y relaciones de aspecto
  • No son los mismos controles para trabajar

El back-end realmente no es un gran problema ya que la mayor parte es solo implementar la mayor parte de lo que estaba trabajando en Java y el SDK de Android. Mis mayores problemas provienen de lo que el Usuario espera y el comportamiento y las diferencias de la interfaz de usuario, a veces es mejor y otras es peor. Realmente solo depende de lo que esté haciendo tu aplicación.

EDITAR

Me acabo de dar cuenta de que no respondí las partes reales de tus preguntas, así que aquí va (mi mejor oportunidad al menos)

No diría que hay grandes paradigmas de lenguaje que los desarrolladores de Obj-C no entienden, diría que Java es probablemente más simple de obtener lo que quiero que haga desde una perspectiva OOP. (Debo decir que solo trabajo realmente con .NET y Java y solo conozco suficiente Obj-C para salir adelante).

Definitivamente usaría Eclipse, me cansé de usar IntellijIdea por un tiempo y me dio muchos problemas para intentar hacer ciertas cosas.

msarchet
fuente
Cuando dices "Se requiere paisaje", ¿te refieres además del retrato? Mi aplicación solo hace algunas cosas en segundo plano en iOS, ¿tengo que dejar de ejecutar explícitamente en segundo plano si no necesito hacer nada en segundo plano?
kubi
@kubi sí, además de vertical, porque un buen conjunto de dispositivos tiene teclados de hardware que lo colocan en posición horizontal cuando se usa. En el fondo es el hecho de que la aplicación sigue ejecutándose cuando un usuario cambia de aplicación.
msarchet
+1 (o más): "portar una interfaz de usuario de iPhone a un dispositivo Android no funcionará muy bien". Eso es cierto: de hecho, la interfaz de usuario puede ser bastante diferente, ya que la lib disponible es diferente.
Dan Rosenstark
IntelliJ Idea funciona muy bien para el desarrollo de Android para mí. Quiéralo.
Alexander Babaev
3

[Esta respuesta es una especie de divagación o diatriba. Iba a eliminarlo, pero pensé que podría ser interesante: hágamelo saber a través de comentarios si debería eliminarlo y lo haré].

No trabajo en Android, pero sí en Java e iOS (con Obj-C). Lo único que es realmente diferente sobre el desarrollo de Java es cuánto puede ayudar un IDE (las personas le dirán que no use un IDE, que es una visión totalmente diferente de lo mismo: pocas personas aconsejan esto con Java, sin embargo) . XCode generalmente no puede detectar CORRECTAMENTE los errores de sintaxis más simples (debido a la estructura del lenguaje, creo). En Java, por otro lado, el IDE puede hacer que te muevas mucho más rápido de lo que estarías sin él. También puede hacer cosas realmente geniales, como programar el cliente que llama y ENTONCES escribir el método. En Eclipse, por ejemplo, si escribo

blah.doIt(firstObj, secondObj);

y firstObjy secondObjson Stringlos casos, el IDE me dará la opción de hacer un método con el sig "public void doit (String firstObj, Cadena secondObj)." Eso es realmente genial, y solo la punta del iceberg: el IDE es tu amigo. He oído que IntelliJ podría ser aún más genial (aunque en mis pruebas no lo ha sido).

¿Hay alguna trampa en esta respuesta? Quizás lo sea: pensar que el IDE juega el mismo papel en Obj-C y Java. En Java, el IDE puede hacer cosas que serían increíblemente difíciles de hacer usted mismo. La refactorización automática, debido a la forma en que Java es, es 100 veces más potente que la de XCode. Esto significa que puede posponer algunas preguntas de diseño hasta más tarde.

Dan Rosenstark
fuente
Gran parte de mi pensamiento sobre esto ha cambiado gracias a AppCode. Es impresionante. Aún así, no puede diferenciar entre cosas con el mismo nombre, pero definitivamente hace mucho trabajo por usted.
Dan Rosenstark