Android プロジェクトを開始するときに Appcelerator を調べました。次に iOS クライアントを作成する必要があることはわかっていたので、Appcelerator は魅力的でした。
各デバイスのネイティブ機能をすべてサポートしているわけではないため、この方法は使用しないことにしました。
たとえば、Android のユーザー インターフェイスにはウィジェットが必要だと早い段階で判断しました。これは Android 固有のものであるため、Appcelerator ではサポートされていません。[これは数か月前のものです。もう一度確認してください]。
ユーザー インターフェイスで妥協することは、私たちにとってやり過ぎでした。アプリのロジックには C/C++ を使用し、ユーザー インターフェイスには Android SDK を使用することにしました。
現在、私たちのアプリには 2 つの部分があります。C/C++ を可能な限り「頭脳」に、ネイティブ (Android/Cocoa Touch) を UI エクスペリエンスを利用するための UI です。
もちろん、C/C++ を統合できるプラットフォームで機能します。
別れのアドバイス: 最初にユーザー インターフェイスを設計してから、それを実装できるツールを見つけます。ユーザーは、ポータブル デバイスの UI に大きな期待を寄せています。早い段階で妥協することは、プロジェクトの KOD になる可能性があります。
[編集] ときどき、この質問に賛成票が投じられます。過去 2 年間で学んだことを更新したいと思います。
- アプリケーションの共通部分に C/C++ を使用することで成果が上がりました。少し複雑なビルド プロセスが必要ですが、共有するコードが複雑な場合 (今回の例のように)、大幅に節約できます。
- ユーザー インターフェイスの部分については、ハイブリッド アプリ (HTML の一部の UI 要素) を検討し始めています。HTML インターフェイスについてはまだ議論があります (Facebook と LinkedIn は、UI のネイティブ コードに移行する 2 つです) が、慎重に選択すれば機能するという報告もあります。これについては、 Flipoardから素晴らしい話があります。ここにスライドがあります。
2014年10月更新
2014 年 3 月、Smashing Magazine はネイティブ iOS、ネイティブ Android、PhongeGap (Cordova)、および Appcelerator Titanium を比較した優れた記事を発表しました。これらは、各環境での単純なアプリの開発を示しています。
これはシリーズの最後の部分です。このパートの上部にはシリーズの前のパートへのリンクがあり、下部にはアプローチの比較があります。巻末には読者からの興味深いコメントも。
2015年5月更新
この質問にはまだ時々賛成票が寄せられているので、回答の最初の部分を書いてから私たちが行ったことを共有したいと思います.
現在、Web クライアントも含むプロジェクトに取り組んでいます。これで、iOS クライアント、Android クライアント、および Web クライアントができました。
JavaScript は、Web クライアントの自然な選択です。
これらのクライアント間で (ビジネス ロジック層で) できるだけ多くのコードを共有したいので、iOS と Android で JavaScript コードを実行する方法を見つける必要があります。
そして、それが私たちがやったことです。
これは、私たちがそれをどのように処理するかの要約です:
- すべてのクライアントの場合: すべてのデータ構造はGoogle の protobufで定義されます。これにより、iOS および Android のシリアライゼーション/デシリアライゼーション コードを自動的に生成できます。
- iOS: JavaScriptCore を使用して JavaScript コードを実行します (概要はこちら)。
- Android: Google の V8 エンジンを使用して JavaScript コードを実行します。
JavaScript と iOS/Android レイヤーの間のブリッジ、特にオブジェクトのシリアル化がボトルネックになる可能性があります。いくつかのことを最適化する必要があり、問題を回避するためにいくつかの教訓を学びました。
一般的に、経験はポジティブです。すべてのクライアントでコードを共有することで、大幅な時間を節約できました。
このような別のプロジェクトを開始する必要がある場合 (ウェブおよびモバイル クライアントとコードを共有する必要がある場合)、Google が inbox に対して行ったことも検討します。私たちが始めたとき、それは利用できませんでした。有望に見えます。
2015年8月更新
そして世界は回り続ける…
また、今すぐ新しいモバイル アプリを開始する必要がある場合は、 React Nativeもよく検討します。
これは JavaScript に基づいており、Web とモバイルの開発をより簡単に橋渡しします。
Ray Wenderlich のサイトに素晴らしいチュートリアルがあります。
2016 年 2 月の更新
クロスプラットフォーム開発の候補リストは 2 つまでです。
私たちの Web アプリは AngularJS を使用しており、ionic (Cordova + AngularJS) も使用しているため、私はionicにもっと注意を払ってきました。React Nativeは、チームに別のフレームワークを学習させます (もちろん、Web アプリが React を使用している場合、議論は逆です)。
それにもかかわらず、アプリのパフォーマンスとルック アンド フィールが報告されているため、別のフレームワークを学習する必要がある場合でも、React Nativeを真剣に検討します。React Nativeのサイトから:
React Native では、iOS の UITabBar や Android の Drawer などの標準プラットフォーム コンポーネントを使用できます。
今から始める場合は、各フレームワークをよりよく理解できるように、少なくともチュートリアルを完了する時間をとることをお勧めします。各チュートリアルは 1 ~ 2 時間で完了できます。
よりシンプルなアプローチ: Smashing Magazine が公開したばかりの (私がこの更新を書いた時点で)優れた記事では、Web ビューを使用してコンテンツをレンダリングしながら、ネイティブ ナビゲーション要素を使用してアプリをネイティブに感じさせる方法を示しています。 . この記事では、モバイル デバイスで HTML/CSS を使用できるようにする方法について詳しく説明します (既存の HTML/CSS をプッシュするだけではありません)。