iOSからAndroidにアプリを移植しています。何を知る必要がありますか?[閉まっている]


15

どのような落とし穴を避けるべきですか?

  • Objective-Cの開発者が一貫して誤解しているJava言語のパラダイムは何ですか?Javaでプログラミングすることを学びましたが、Objective-Cでしか何年も働いていません。
  • AndroidとiOSでデザインパターンはどのように異なりますか?
  • 自分で移行した場合、Androidのどの部分が混乱したり、学習に必要以上に時間がかかったりしましたか?
  • EclipseはAndroidに最適なOS X IDEですか?

記録のために、私のアプリはUIKitとFoundationに非常に強く結びついているため、「移植」という言葉は誤った呼び名である可能性があります。実際にAndroid向けに完全に書き直します。コードの再利用はありません。また、これはAndroidを習得するために行っているので、ポートで失敗し、ショートカットを取得するよりもAndroidを習得したいです。


ちょっとした背景として、この質問はStackoverflowで私が見る質問の種類によって促されました。多くの場合、Obj-Cを作成しようとするときに、彼らが犯す愚かな誤りによって、誰かのバックグラウンド(C#またはJava)を知ることができます。Java開発者に目を転がさせ、「愚かなObjective-C開発者は学ぶことはないだろう」と言うような間違いを避けたいと思います。


2
Is Eclipse the best OS X IDE for Android?はい、ADTは最後に試したnetbeansではうまくいきませんでした。Eclipseが推奨されるIDEです。
Keyo

@Keyo:え?1年半前にNetbeansで試してみたところ、かなりうまくいきました。確かにその時間をかけて、もっと良くなるでしょうか?
-TheLQ

@Nassignのコメントとしての回答:Stackoverflowに投稿していた場合、私は確かに多くの回答を得ていただろうが、プログラマを閲覧すると、ここに移行されているこれらのタイプの質問がたくさんあるように見えます。それがそのフォーラムにより適切であるならば、私はあそこでそれを尋ねることができます。
クビ

stackoverflowに配置すると、より多くの答えが得られると思います。
Nassign

1
@kubiこれは、これを尋ねるのに最適な場所であり、このサイトの目的に合っています。

回答:


11

私はiOSからAndroidにアプリを移植しています。それは、他の誰かのアプリであり、移植を行うために協力していますが、それでもなおそうです。

まず最初に、ユーザーベースは、デバイスと対話するさまざまな方法を大幅に教えられたと言います。これの多くは、アプリケーションの実際の設計とデバイスの機能方法に起因しています。

一般的なもの:

  • Androidデバイスでは横長が必要です
  • Androidアプリは、積極的に使用されていないときに実行を続ける傾向があるため、ネットワークの問題、GPSなどについてはこのことを考慮する必要があります。
  • デバイスのセグメンテーション、Androidデバイスと画面解像度がたくさんあります。これは、相対的なレイアウトと9パッチ画像が非常に便利な場所です。

多くの人が最初は考えていない大きなものですYour UI can not be exactly the same on both devices。確かに似ていますが、iPhone UIをAndroidデバイスに移植してもうまくいきません。

いくつかの理由:

  • ロングタッチコンテキストメニュー
  • メニューポップアップ
  • 異なる解像度とアスペクト比を引き起こすデバイスのセグメンテーション
  • 使用するコントロールと同じではありません

バックエンドは、大部分ではありません。ほとんどの場合、作業対象の大部分をJavaとAndroid SDKに実装するだけです。私の最大の問題は、ユーザーが期待するものとUIの動作と違いに起因しています。それは本当にあなたのアプリが何をしているかに依存しています。

編集

私はあなたの質問の実際の部分に答えていないことに気づいたので、ここに行きます(少なくとも私のベストショット)

Obj-Cの開発者が誤解している大きな言語パラダイムがあるとは言いません。JavaはOOPの観点からやりたいことをする方がおそらく簡単だと思います。(私は本当に.NETとJavaでのみ動作し、十分なObj-Cだけを知っていると言う必要があります)。

私は間違いなくEclipseを使用しますが、しばらくIntellijIdeaを使用するのに疲れましたが、特定のことをさせるために多くの問題を抱えていました。


「ランドスケープが必要です」と言うとき、ポートレートに加えて意味しますか?私のアプリはiOSのバックグラウンドでいくつかのことしかしませんが、バックグラウンドで何もする必要がない場合、バックグラウンドでの実行を明示的にオプトアウトする必要がありますか?
クビ

優れたデバイスセットには、使用時にデバイスを横向きにするハードウェアキーボードがあるため、ポートレートに加えて@kubi yea。バックグラウンドでは、ユーザーがアプリを切り替えてもアプリが実行され続けるという事実です。
msarchet

+1(またはそれ以上):「iPhone UIをAndroidデバイスに移植してもうまくいきません。」それは事実です。実際、利用可能なライブラリが異なるため、UIはまったく異なる場合があります。
ダンローゼンスターク

IntelliJ Ideaは、Android開発に最適です。大好きです。
アレクサンダーババエフ

3

[この答えは一種のとりとめのない、または暴言です。私はそれを削除するつもりだったが、それは面白いかもしれないと思った:私はそれを削除する必要があり、私はそれを削除するかどうかコメントで知らせてください。

Androidでは動作しませんが、JavaとiOS(Obj-Cを使用)で動作します。Java開発に関して実際に異なるのは、IDEがどれだけ役立つかということです(IDEを使用しないように言われますが、これはまったく同じことです。ただし、Javaでこれをアドバイスする人はほとんどいません)。 。XCodeは一般に、最も単純な構文エラーを正確に検出することさえできません(言語の構造が原因だと思います)。一方、Javaでは、IDEを使用すると、それがない場合よりもはるかに速く移動できます。また、呼び出し側cientのプログラミングやメソッドの作成など、本当にクールなこともできます。たとえば、Eclipseで、次のように入力すると

blah.doIt(firstObj, secondObj);

そして、firstObjsecondObjしているStringインスタンス、IDEは私にSIGでの方法を作るためのオプション与えるだろう「公共のボイドのdoIt(文字列firstObj、文字列secondObjを)。」それは本当にクールで、氷山の一角にすぎません。IDEはあなたの友人です。IntelliJはもっとクールかもしれないと聞いたことがあります(私のトライアルではそうではありませんでした)。

この答えには落とし穴がありますか?おそらく、IDEがObj-CとJavaで同じ役割を果たすと考えることです。Javaでは、IDEは自分で行うのが驚くほど難しいことを実行できます。自動リファクタリングは、Javaの方法により、XCodeよりも100倍強力です。これは、設計上の質問を後まで延期できることを意味します。


AppCodeのおかげで、これに関する多くの考え方が変わりました。それは素晴らしいです。それでも、同じ名前のものを区別することはできませんが、間違いなくあなたのために多くの作業を行います。
ダンローゼンスターク14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.