Je porte mon application d'iOS vers Android: que dois-je savoir? [fermé]

15

Quels pièges devrais-je éviter?

  • Quels paradigmes de langage Java les développeurs Objective-C comprennent-ils systématiquement? J'ai appris à programmer en Java, mais je ne travaille plus qu'en Objective-C depuis des années.
  • En quoi les modèles de conception sont-ils différents entre Android et iOS?
  • Si vous avez fait la transition vous-même, quelles parties d'Android vous ont troublé ou vous ont pris plus de temps pour apprendre qu'il n'aurait dû?
  • Eclipse est-il le meilleur IDE OS X pour Android?

Pour mémoire, mon application est très fortement liée à UIKit et Foundation, donc le mot "portage" peut être un terme impropre; Je vais en fait la réécrire complètement pour Android. Pas de réutilisation de code. De plus, je fais cela pour apprendre Android, donc je préfère échouer au port et apprendre Android plutôt que de prendre un raccourci.


En guise de contexte, cette question a été provoquée par les types de questions que je vois sur Stackoverflow. Souvent, vous pouvez dire quel était le profil de quelqu'un (C # ou Java) par quelles erreurs stupides ils font quand ils essaient d'écrire Obj-C. Je voudrais éviter le genre d'erreurs qui poussent les développeurs Java à lever les yeux au ciel et à dire: "Les développeurs Silly Objective-C, n'apprendront-ils jamais?"

kubi
la source
2
Is Eclipse the best OS X IDE for Android?Oui, ADT n'a pas bien fonctionné sur les netbeans la dernière fois que j'ai essayé. Eclipse est l'IDE recommandé.
Keyo
@Keyo: Eh? Lorsque je l'ai essayé sur Netbeans il y a un an et demi, cela a plutôt bien fonctionné. Sûrement au cours de cette période, cela aurait pu aller mieux?
TheLQ
En réponse au commentaire en tant que réponse de @ Nassign: j'aurais certainement obtenu beaucoup plus de réponses si j'avais posté sur Stackoverflow, mais en parcourant les programmeurs, il semble qu'il y ait beaucoup de ces types de questions qui migrent ici. S'il serait plus approprié pour ce forum, je peux le demander là-bas.
kubi
Je pense que vous obtiendrez plus de réponses si vous le placez dans stackoverflow.
Nassign
1
@kubi C'est un bon endroit pour poser cette question et correspond à l'objectif de ce site: j'espère que vous obtenez des réponses, je suis intéressé moi-même.

Réponses:

11

Je porte une application d'iOS vers Android, c'est l'application de quelqu'un d'autre avec laquelle je travaille pour faire le port, mais néanmoins.

Tout d'abord, je dirais que les bases d'utilisateurs ont appris des façons radicalement différentes d'interagir avec leurs appareils. Cela provient en grande partie de la conception réelle des applications ainsi que du fonctionnement des appareils.

Quelques choses générales:

  • Le paysage est à peu près requis sur les appareils Android
  • Les applications Android ont tendance à continuer de fonctionner lorsqu'elles ne sont pas activement utilisées, vous devez donc y penser pour les problèmes de réseau, les gps, etc.
  • Segmentation des appareils, il y a des tonnes d'appareils Android et des résolutions d'écran, c'est là que les dispositions relatives et les images à neuf patchs sont très pratiques.

Un gros problème auquel beaucoup de gens ne pensent pas au départ Your UI can not be exactly the same on both devices, bien sûr, il peut être similaire, mais le portage d'une interface utilisateur iPhone vers un appareil Android ne fonctionnera pas très bien.

Certaines raisons:

  • Menus contextuels longs
  • Popups de menu
  • Segmentation de l'appareil entraînant des résolutions et des rapports d'aspect différents
  • Pas les mêmes contrôles avec lesquels travailler

Le back-end n'est vraiment pas un gros problème car la plupart d'entre eux implémentent simplement la majeure partie de ce que vous travailliez avec Java et le SDK Android. Mes plus gros problèmes proviennent de ce que l'utilisateur attend et du comportement et des différences de l'interface utilisateur, parfois c'est mieux et parfois c'est pire. Cela dépend vraiment de ce que fait votre application.

ÉDITER

Je viens de réaliser que je n'ai pas répondu aux parties réelles de vos questions, alors voici (mon meilleur coup au moins)

Je ne dirais pas qu'il existe de grands paradigmes de langage que les développeurs Obj-C comprennent mal, je dirais que Java est probablement plus simple pour obtenir ce que je veux qu'il fasse du point de vue de la POO. (Je dois dire que je ne travaille vraiment qu'avec .NET et Java et que je ne connais que suffisamment Obj-C pour m'en sortir).

J'utiliserais certainement Eclipse, j'ai fatigué d'utiliser IntellijIdea pendant un certain temps et cela m'a donné beaucoup de problèmes pour essayer de le faire faire certaines choses.

msarchet
la source
Quand vous dites "Le paysage est requis", voulez-vous dire en plus du portrait? Mon application ne fait que quelques choses en arrière-plan sur iOS, dois-je désactiver explicitement l'exécution en arrière-plan si je n'ai rien à faire en arrière-plan?
kubi
@kubi oui en plus du portrait, car un bon ensemble d'appareils ont des claviers matériels qui mettent l'appareil en mode paysage lorsqu'il est utilisé. En arrière-plan, c'est le fait que l'application continue de fonctionner lorsqu'un utilisateur change d'application.
msarchet
+1 (ou plus): "le portage d'une interface utilisateur iPhone vers un appareil Android ne fonctionnera pas très bien." C'est vrai: en fait, l'interface utilisateur peut être très différente, car la bibliothèque disponible est différente.
Dan Rosenstark
IntelliJ Idea fonctionne très bien pour le développement Android pour moi. Aimer.
Alexander Babaev
3

[cette réponse est une sorte de balade ou de diatribe. J'allais le supprimer mais j'ai pensé que cela pourrait être intéressant: faites-moi savoir via les commentaires si je dois le supprimer et je le ferai].

Je ne travaille pas sur Android mais je travaille sur Java et iOS (avec Obj-C). La seule chose qui est vraiment différente au sujet du développement Java, c'est à quel point un IDE peut aider (les gens vous diront de ne pas utiliser un IDE, ce qui est une approche totalement différente de la même chose: peu de gens le conseillent avec Java, cependant) . XCode est généralement incapable de détecter même CORRECTEMENT les erreurs de syntaxe les plus simples (en raison de la structure du langage, je pense). En Java, en revanche, l'EDI peut vous faire bouger beaucoup plus vite que vous ne le seriez sans lui. Vous pouvez également faire des trucs vraiment sympas comme programmer le client appelant et ALORS écrire la méthode. Dans Eclipse, par exemple, si je tape

blah.doIt(firstObj, secondObj);

et firstObjet secondObjsont des Stringinstances, l'EDI me donnera la possibilité de faire une méthode avec le sig "public void doIt (String firstObj, String secondObj)". C'est vraiment cool, et ce n'est que la pointe de l'iceberg: l'IDE est votre ami. J'ai entendu dire qu'IntelliJ était peut-être encore plus cool (bien que ce ne soit pas le cas dans mes essais).

Y a-t-il un piège dans cette réponse? Peut-être que c'est: penser que l'EDI joue le même rôle dans Obj-C et Java. En Java, l'EDI peut faire des choses qui seraient incroyablement difficiles à faire vous-même. Le refactoring automatique, en raison de la façon dont Java est, il est 100 fois plus puissant que celui de XCode. Cela signifie que vous pouvez reporter certaines questions de conception à plus tard.

Dan Rosenstark
la source
Une grande partie de ma réflexion à ce sujet a changé grâce à AppCode. C'est génial. Pourtant, il ne peut pas faire la différence entre des choses portant le même nom, mais il fait certainement beaucoup de travail pour vous.
Dan Rosenstark