web-dev-qa-db-ja.com

Phonegapを使用しない方がよいのはいつですか?

複数のオペレーティングシステム(Android、IOS、WindowsPhoneを含む)用のモバイルアプリ(私の最初のもの)を開発することを計画しています-野生のインターネットで、開発プロセスを最小限に抑えるための可能な解決策として、phonegapと呼ばれるフレームワークを見つけました。 phonegapの利点は理解していますが、実際の欠点は見つかりませんでした... 1。)では、なぜphonegapを使用すべきではないのでしょうか?

2.)phonegapは、OS内にラップされているため、遅いだけですか?はいの場合、どれだけ遅いですか?つまり、ネイティブアプリとphonegapの違いを実際に見分けることができますか、それとも、ハードウェアアクセラレーションが必要です。ゲーム用?

プロジェクトに関するもう少しの情報。現在、WCFを介して通信するいくつかの「.Net」サービスとプロバイダーがあります。アプリは、プロバイダーが行うように、サービスとの間でビデオストリームとオーディオデータを送受信できる必要があります。

。)そのためにphonegapを使用することは可能ですか、それともネイティブアプリに固執しますか?

32
Mathias

すべてのクロスプラットフォームフレームワーク(HTMLを含む)は、一般的に同じ長所と短所を共有しています。

利点:

  • すべてのターゲットプラットフォームで同じように機能するコードを一度記述します。

デメリット:

  • それが機能する方法は、多くの場合、それほど素晴らしいものではありません。
  • 一般に、ネイティブ実装よりもパフォーマンスが低くなります。
  • いくつかはまた、場違いに見える独自のウィジェットセットを持っています。
  • 個々のプラットフォームの癖のために、あなたはまだどこでもテストしなければなりません。
  • 機能への最小公分母アクセスを取得します。ネイティブ機能がサポートされている場合、多くの場合、アクセスできるのは1つの方法(ポータブルフレームワークの方法)のみです。これは、ターゲットプラットフォームの推奨される方法と矛盾する場合があります。
  • ターゲットプラットフォームに固有の機能にアクセスする可能性がある場合、どこでも実行できる移植性が失われます。
  • いわゆる「クロスプラットフォーム」フレームワークはすべて、それ自体がプラットフォームです。癖についての以前のポイントを参照してください。今では、N個のプラットフォームを知る代わりに、N +1を知る必要があります。

複数のプラットフォームを対象とした最良の結果を得るには、次のことをお勧めします。

明確に定義されたAPIを使用して、コアロジック(UIを使用しない部分)をクリーンに設計します。環境間でかなり簡単に移植できるように、十分に一般的にしてください。 (SQLiteはObjective CとJavaで本当に違いますか?)

ターゲットプラットフォームのベストプラクティスに従ってUIを設計し、それぞれに見栄えがする(そして収まる)ようにします。 (Androidの場合は、 http://developer.Android.com/design を参照してください)作成したAPIを介してUIをコアロジックと相互作用させます。

40
Sparky

私はネイティブとPhonegapのようなHTMLラッパーの両方で開発しました。 Phonegapは、2〜3の異なる言語でコーディングする必要性を減らし、2〜3のコードベースに変更を加えるのに適していますが、人々がスティックネイティブを使用したいアプリがあると予想される場合。私は実際にはPhonegapでアプリを開発していましたが、期待に応えられなかったため、最終的にすべてをネイティブコードで書き直しました。

ゲームやアプリは「HTMLラッパーアプリに最適」かもしれませんが、最終的には、ごくわずかであっても、通常のユーザーは読み込みと反応の時間が遅いことに気付くでしょう。

IMO Phonegapは、集中的な処理が行われない(ゲームなど)非常に最小限のデータ操作(表示と編集)を行うアプリにのみ使用する必要があります。

アプリ市場は非常に競争が激しく、表示される上位のアプリとゲームはすべてネイティブコードです(理由があります)。

16
RyanG

AdobeのAIRプラットフォームは、ネイティブアプリの代わりに、どこにでもデプロイできれば、phonegapの優れた代替手段です。また、優れたハードウェアアクセラレーション機能も備えています。 Webkitの実装が含まれているため、必要に応じてWeb標準を使用でき、オープンソースのApacheflexプロジェクトには多くの機能があります。 Flash Builderは、Eclipseベースの優れたコーディング環境です。ゲームの大きな進歩に加えて、データ駆動型のAIRアプリも間もなく増えるでしょう。 As3はオブジェクト指向で非常に優れており、アニメーション用のフラッシュプロからイラストレーターやフォトショップまでの大規模なツールセットは世界クラスです。

11
David H.

私は、すべてのアプリがモバイルバージョンのすべての可能なバージョンを作成する必要がある会社で働いています。実際、ラジオストリーミング、GPUアクセス、カメラフィルターなど、特定の種類のアプリを操作する必要がある場合は、ネイティブに設定してください。

私の個人的な意見では、Androidでも、電話のギャップは非常に遅いです。 iOSを使っているからなのか、それとも高い基準を持っているからなのかわかりません。ネイティブで作業することで、アプリの品質が常に向上します。

Phone Gapを使用して処理を高速化することは理解していますが、表示する情報またはフォームのみを含む単純なモバイルアプリを作成している場合に限ります。

ハードウェア/ソフトウェアの面では、このようなものをネイティブに開発する方が簡単です。 iOSには、ほぼすべてのものが揃っています。 Androidについてはわかりませんが、それほど複雑であってはなりません。

4
NSPunk

PhonegapはWebViewsを使用するため、アプリストアにデプロイするためにネイティブコンテナーにビルドしてラップするWebサイトです。基本的なアプリの場合、およびWeb開発者の場合は、この方法でアプリを開発することをお勧めしますが、ターゲットOSの利点とネイティブ特性を最大限に活用したい場合は、ネイティブアプリケーションを開発することをお勧めします。お役に立てば幸いです。

2
btype