21

Android 向けの比較的大規模なプロジェクトを終えたところですが、太陽系のこちら側にある最もユビキタスなハンドセットの 1 つ (あのフルーティな小さな携帯電話によるもの) では決して動作しないことを知って、口に苦味を残しました。クラブ)。

そのため、次のプロジェクトでは、ほとんどのコンポーネントを iPhone と Android プラットフォーム間で簡単に移動できるように記述したいと考えています。私が考えている方法は、ほとんどを Objective-C でコーディングしてから、プラットフォーム固有の部分をさらに Objective-C と Java でそれぞれ追加することです。Android 側では、NDK を使用する必要があります。

私の C の知識は十分ですが、Objective-C の知識はゼロに近く、C++ を学びたいとは思いません。上記のアプローチはどれほど正気で、より良いアプローチはありますか? Java でコーディングして、ハッキングされていない iPhone 市場に参入する方法はありますか? そして、私の知っている人々 (iPhone ユーザー) が来年までに Android フォンを持っている可能性はどのくらいあるでしょうか?

4

13 に答える 13

24

一歩下がって、最終的に何を論理的に共有できるかを考えてください。

UI モデルはかなり異なり、コンポーネントも異なります。最終的に共有できるのは、データ オブジェクト クラス、おそらくいくつかのアルゴリズムです。ソケットを直接使用しておらず、HTTP ライブラリを使用しているため、昔のように現実的にネットワーク コードを共有することはできません。

では、あなたがこれに注いでいるすべての努力は、最終的に本当に見返りを見つけるでしょうか? 最終結果は、更新が難しく、どちらのプラットフォームでも優れているのではなく、両方のプラットフォームで平凡なもろい混乱になるようです。

なぜアプリケーションを書いているのですか?あなたやあなたのユーザーの生活を楽にするために?

于 2010-03-06T23:35:24.940 に答える
16

他の人は基本的にこれを言っていますが、私はそれをより明確にしたいと思います。あなたの最善の策は、おそらく次のように書くことです:

  1. 以下を使用したクロスプラットフォームのデータ モデルとコア ロジック:
    • GNUstep (Obj-C) のビット、または
    • CF-Lite (C)、または
    • クロスプラットフォームである限り、あなたが望むものは何でも:P
  2. Cocoa Touch (Obj-C) を使用した iPhone 専用のインターフェイス コード
  3. Android 専用のインターフェイス コードですが、Android 用にそれを行います。

それはあなたが得ることができる限り近いです。クロスプラットフォームインターフェイスコードを記述しようとすると、間違いなく両方のプラットフォームで平凡なアプリになります。しかし、残りのすべてのコードを移植可能にし、デバイス固有のインターフェイスをラップするだけの作業は常に行われており、一部の iPhone 開発者にとってはうまく機能しています。

于 2010-03-07T00:08:06.230 に答える
11

Cocoa を使用しない Objective-C はあまり有用ではなく、動作する iPhone コードベースに近づくことはできません。Core Foundation を使用して C でコアを記述し、プラットフォーム固有の部分には Java または Objective-C を使用する方がよいでしょう。Apple は Core Foundation の大部分を CF-Lite としてオープンソース化しており、OS X 上の Cocoa と無料でブリッジされています (つまり、多くの CF クラスを Cocoa の対応物と交換可能に使用できます)。

于 2010-03-06T22:57:09.373 に答える
9

それをバックアップする経験がない私の推測では、GCCがARM用に存在し、オープンソースであり、Obj-Cコンパイラと基本的なObj-Cランタイムを備えていることを考えると、GoogleのNDKでObj-Cを何らかの方法で書くことができると思います. (まだハッキングされていない場合は、おそらく新しいアーキテクチャで動作する可能性があります)など。

それはまた、疑わしい利益のために多くの作業になる可能性があります.

そしてもちろん、"Obj-C" (NSクラスなし) は "Cocoa" とは非常に異なる意味を持ちます。これは、ほとんどの人が"Obj-C" と言うときに実際に意味するものです。GNUstep のいくつかを再利用できるかもしれませんが... 正直なところ、私はそれを疑っています。繰り返しますが、大変な作業のように聞こえます。

ですから、はい、可能だと思います。これも大変な作業で、割に合わないと思います。

あなたが言ったことを考えると、もし私がこれを試みていたら、あなたのコア ロジックをできるだけ C で書き、プラットフォームごとに 2 つの別々の GUI でラップしたくなるでしょう。

于 2010-03-06T22:12:50.923 に答える
2

これについて別の角度から考えてみます... Java を使い続けたいとおっしゃっていたのは知っていますが、C# を知っていれば、iPhone 用の MonoTouch フレームワークを使用できます。Mono は本質的に、.Net スタックのオープン ソース実装です。Mono チームは Mono を Android に導入する作業を進めているため、基本的にビジネス ロジック用の共有 C# ライブラリを作成し、プラットフォームごとに異なるビュー/コントローラーを使用できます。もちろん、これはすべて C# で行われ、少し高価になりますが、すべてを異なる言語で記述するという問題は解決されます。

iPhoneではMonoTouch、AndroidではMonoDroidと呼ばれていると思います。

于 2010-03-07T01:17:25.147 に答える
1

XMLVMは、(一部の)AndroidアプリケーションをiPhoneに変換できるプロジェクトです。詳細については、http://xmlvm.org/android/をご覧ください

于 2010-03-26T12:26:11.067 に答える
1

私はまだこれを自分で試していないか、トークを見終わっていませんが、YouTube にJava を使用した iPhone アプリケーションの開発に関する Google Tech Talk があり、非常に有望に見えます。

于 2010-03-13T16:40:11.257 に答える
1

少し遅れているかもしれませんが、業界は最近、アプリの移植性を実現するために Web アプリの方向に進んでいるようです。つまり、「スケルトン ネイティブ アプリ」に Web ブラウザーを組み込み、Android、iOS、およびその他の主要なスマートフォン プラットフォーム用の JavaScript、CSS、HTML を記述します。

これに役立つツールがあります。PhoneGapSencha Touchをチェックしたくなるかもしれませんが、他にもたくさんあります。このアプローチは、リアルタイム/アニメーションを多用するアプリには適していない可能性があることに注意してください。

于 2012-04-11T16:01:43.577 に答える
1

Android についてはわかりませんが、iPhone では、Objective-C クラスでラップする限り、基本的にストレート C で記述できます。

于 2010-03-06T23:25:01.027 に答える
0

今年後半まで待つことができれば (正確な時期は不明)、Adobe は Android 用の AIR と iPhone 用のコンパイラを提供する予定です。したがって、AIR で Android 用のアプリを作成し、同じコードのほとんどを使用して iPhone にコンパイルできます。

http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

待ちきれない場合でも、http: //www.insideria.com/2008/12/actionscript-to-cocoa---protot.htmlを参照してください。ActionScript と Cocoa の類似点が説明されています。

タッチ スクリーンを使用できる AIR バージョンについては、 http : //labs.adobe.com/technologies/air2/も参照してください。

そのため、ActionScript 3 を使用して、一度記述すればすぐに Android と iPhone にデプロイできます。

于 2010-03-25T17:41:52.563 に答える