Estou portando meu aplicativo do iOS para o Android: o que preciso saber? [fechadas]


15

Que armadilhas devo evitar?

  • Quais paradigmas da linguagem Java os desenvolvedores do Objective-C sempre entendem mal? Aprendi a programar em Java, mas tenho trabalhado em nada além do Objective-C há anos.
  • Qual a diferença entre os padrões de design entre Android e iOS?
  • Se você fez a transição, quais partes do Android o confundiram ou levaram mais tempo para aprender do que deveriam?
  • O Eclipse é o melhor OS X IDE para Android?

Para constar, meu aplicativo está fortemente vinculado ao UIKit e Foundation, portanto, a palavra "portabilidade" pode ser um nome impróprio; Na verdade, vou reescrevê-lo completamente para o Android. Sem reutilização de código. Além disso, estou fazendo isso para aprender Android, então prefiro falhar na porta e aprender Android do que usar um atalho.


Como pano de fundo, essa pergunta foi solicitada pelos tipos de perguntas que vejo no Stackoverflow. Freqüentemente, você pode dizer qual era o plano de fundo de alguém (C # ou Java) pelos erros tolos que eles cometem quando tentam escrever Obj-C. Eu gostaria de evitar os tipos de erros que fazem os desenvolvedores de Java revirarem os olhos e dizer: "Desenvolvedores parvos de Objective-C, eles nunca aprenderão?"


2
Is Eclipse the best OS X IDE for Android?Sim, o ADT não funcionou bem no netbeans da última vez que tentei. Eclipse é o IDE recomendado.
Keyo 17/01

@Keyo: Eh? Quando tentei no Netbeans há um ano e meio, funcionou muito bem. Certamente, durante esse tempo, teria melhorado?
TheLQ

Em resposta ao comentário como resposta de @ Nassign: eu certamente teria recebido muito mais respostas se tivesse postado no Stackoverflow, mas navegando em Programadores, parece que existem muitos desses tipos de perguntas que estão sendo migradas por aqui. Se for mais apropriado para esse fórum, posso perguntar por lá.
Kubi

Eu acho que você obteria mais resposta se colocá-lo no stackoverflow.
Nassign

1
@kubi Este é um ótimo lugar para perguntar e se encaixa no objetivo deste site: espero que você obtenha algumas respostas, estou interessado em mim.

Respostas:


11

Estou portando um aplicativo do iOS para o Android, é o aplicativo de outra pessoa com quem estou trabalhando para fazer a porta, mas não obstante.

Primeiramente, eu diria que as bases de usuários foram ensinadas maneiras drasticamente diferentes de interagir com seus dispositivos. Muito disso vem do design real dos aplicativos, bem como da maneira como os dispositivos funcionam.

Algumas coisas gerais:

  • Paisagem é praticamente necessária em dispositivos Android
  • Os aplicativos Android tendem a continuar em execução quando não estão sendo usados ​​ativamente; portanto, é necessário pensar nisso para problemas de rede, gps, etc.
  • Segmentação de dispositivos, existem vários dispositivos Android e resoluções de tela. É aqui que layouts relativos e imagens de nove correções são muito úteis.

Um grande problema que muitas pessoas não pensam inicialmente Your UI can not be exactly the same on both devices, com certeza pode ser semelhante, mas portar uma interface do iPhone para um dispositivo Android não funcionará muito bem.

Algumas razões:

  • Menus de contexto de toque longo
  • Pop-ups de menu
  • Segmentação de dispositivo causando resoluções e proporções diferentes
  • Não são os mesmos controles para trabalhar

O back-end realmente não é grande coisa, pois a maioria está apenas implementando a maior parte do que você estava trabalhando no Java e no Android SDK. Meus maiores problemas vieram do que o usuário espera e do comportamento e diferenças da interface do usuário, às vezes é melhor e às vezes é pior. Realmente depende apenas do que seu aplicativo está fazendo.

EDITAR

Acabei de perceber que não respondi as partes reais de suas perguntas, então aqui vai (minha melhor chance, pelo menos)

Eu não diria que existem grandes paradigmas de linguagem que os Obj-C devs entendem mal; eu diria que Java é provavelmente mais simples de obter o que eu quero que ele faça da perspectiva de OOP. (Devo dizer que realmente só trabalho com .NET e Java e só conheço Obj-C suficiente para sobreviver).

Definitivamente eu usaria o Eclipse, eu cansei de usar o IntellijIdea por um tempo e isso me causou muitos problemas ao tentar fazê-lo fazer certas coisas.


Quando você diz "Paisagem é necessária", você quer dizer além de retrato? Meu aplicativo faz apenas algumas coisas em segundo plano no iOS. Preciso desativar explicitamente a execução em segundo plano se não precisar fazer nada em segundo plano?
Kubi

@kubi sim, além de retrato, porque um bom conjunto de dispositivos possui teclados de hardware que colocam o dispositivo em paisagem quando usado. Em segundo plano, é o fato de o aplicativo continuar em execução quando um usuário alterna entre aplicativos.
msarchet

+1 (ou mais): "portar uma interface do iPhone para um dispositivo Android não funcionará muito bem". Isso é verdade: na verdade, a interface do usuário pode ser bem diferente, pois a lib disponível é diferente.
Dan Rosenstark

O IntelliJ Idea funciona muito bem para o desenvolvimento do Android para mim. Adoro.
Alexander Babaev

3

[esta resposta é uma espécie de divagação ou discurso retórico. Eu ia excluí-lo, mas pensei que poderia ser interessante: informe-me por meio de comentários se eu devo excluí-lo e irei].

Não trabalho no Android, mas trabalho em Java e iOS (com Obj-C). A única coisa realmente diferente sobre o desenvolvimento Java é o quanto um IDE pode ajudar (as pessoas dirão para você não usar um IDE, que é uma abordagem totalmente diferente da mesma coisa: poucas pessoas aconselham isso com Java, no entanto) . O XCode geralmente é incapaz de detectar CORRETAMENTE os erros de sintaxe mais simples (devido à estrutura da linguagem, eu acho). Em Java, por outro lado, o IDE pode fazer você se mover muito mais rápido do que seria sem ele. Você também pode fazer coisas realmente legais, como programar a chamada e ENTÃO escrever o método. No Eclipse, por exemplo, se eu digitar

blah.doIt(firstObj, secondObj);

e firstObje secondObjsãoString exemplos, o IDE vai me dar a opção de fazer um método com o sig "public void doit (String firstObj, String secondObj)." Isso é muito legal, e apenas a ponta do iceberg: o IDE é seu amigo. Ouvi dizer que o IntelliJ pode ser ainda mais interessante (embora em meus testes não tenha sido).

Existe uma armadilha nesta resposta? Talvez seja: pensar que o IDE desempenha o mesmo papel em Obj-C e Java. Em Java, o IDE pode fazer coisas incrivelmente difíceis de fazer você mesmo. A refatoração automática, devido à maneira como o Java é, é 100x mais poderoso que o do XCode. Isso significa que você pode adiar algumas perguntas de design para mais tarde.


Muito do meu pensamento sobre isso mudou graças ao AppCode. É incrivel. Ainda assim, não é possível diferenciar coisas com o mesmo nome, mas definitivamente faz muito trabalho para você.
Dan Rosenstark
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.