質問

私は Web 開発者で、Web 製品を iPhone に移行したいと考えています。製品の 1 つは Google マップに似ています。電話画面に地図を表示すると、地図をドラッグまたはサイズ変更して、地図に追加した情報を表示できます。

HTML、CSS、JavaScript を使用してネイティブ iPhone アプリを開発できるテクノロジーがいくつかあることは知っています。いくつか特定しました:

他に同様の製品はありますか?それらの違いは何ですか?どれを選べばいいでしょうか?

役に立ちましたか?

解決

私は、一番上の最も投票された回答にコメントするためだけに stackoverflow に登録しました。悪い点は、stackoverflow では新しいメンバーがコメントを投稿できないことです。したがって、このコメントをより答えのように見せる必要があります。

Rory Blyth の回答には、2 つの JavaScript モバイル フレームワークに関するいくつかの有効な点が含まれています。しかし、彼の要点は間違っています。真実は、Titanium と PhoneGap は異なるものであるというよりも似ているということです。どちらも一連の JavaScript API を通じて携帯電話機能を公開し、アプリケーションのロジック (html、css、javascript) はネイティブ WebView コントロール内で実行されます。

  1. PhoneGap は単なる Web アプリのネイティブ ラッパーではありません。PhoneGap JavaScript API を通じて、「Web アプリ」は位置情報、加速度計カメラ、連絡先、データベース、ファイル システムなどの携帯電話機能にアクセスできます。基本的に、携帯電話 SDK が提供するすべての機能は、JavaScript の世界に「ブリッジ」できます。一方、モバイル Web ブラウザ上で実行される通常の Web アプリは、これらの機能のほとんどにアクセスできません (主な理由はセキュリティです)。したがって、PhoneGap アプリは Web アプリというよりもモバイル アプリに近いものになります。確かに、PhoneGap を使用して、PhoneGap API をまったく使用しない Web アプリをラップすることはできますが、PhoneGap はそのために作成されたものではありません。

  2. Titanium は、HTML、CSS、または JavaScript コードを「ネイティブ ビット」にコンパイルしません。これらは、埋め込み画像ファイルと同様に、リソースとして実行可能バンドルにパッケージ化されます。アプリケーションが実行されると、これらのリソースは UIWebView コントロールにロードされ、そこで実行されます (もちろん、ネイティブ ビットではなく、JavaScript として)。javascript-to-native-code (または to-objective-c) コンパイラのようなものはありません。これはPhoneGapでも同じ方法で行われます。アーキテクチャの観点から見ると、これら 2 つのフレームワークは非常に似ています。

さて、それらは何か違いますか?はい。まず、Titanium は、より多くの携帯電話機能を JavaScript に橋渡しすることで、PhoneGap よりも機能が豊富であるようです。最も注目すべき点は、PhoneGap が多くのネイティブ UI コンポーネント (存在するとしても) を JavaScript に公開していないことです。一方、Titanium には、JavaScript で呼び出してあらゆる種類のネイティブ UI コントロールを作成および制御できる包括的な UI API があります。これらの UI API を利用すると、Titanium アプリは PhoneGap アプリよりも「ネイティブ」に見えるようになります。第二に、PhoneGap は Titanium よりも多くの携帯電話プラットフォームをサポートしています。PhoneGap API はより汎用的で、iPhone、Android、Blackberry、Symbian などのさまざまなプラットフォームで使用できます。Titanium は少なくとも今のところ、主に iPhone と Android をターゲットにしています。その API の一部はプラットフォーム固有です (iPhone UI API など)。これらの API を使用すると、アプリケーションのクロスプラットフォーム機能が低下します。

したがって、アプリをより「ネイティブ」な外観にすることを重視している場合は、Titanium の方が良い選択です。アプリを別のプラットフォームにもっと簡単に「移植」したい場合は、PhoneGap の方が適しています。

2010 年 8 月 13 日更新: ミッキーの質問に対するチタン従業員の回答へのリンク。

2010 年 12 月 4 日更新:情報を最新の状態に保つために、この投稿を毎年レビューすることにしました。1 年の間に多くのことが変更され、最初の投稿の情報の一部が古くなってしまいました。

最大の変化はチタンから来ました。今年の初めに、Appcelerator は、アーキテクチャの観点から以前のバージョンから大きく変わった Titanium 1.0 をリリースしました。1.0 では、UIWebView コントロールは使用されなくなりました。代わりに、UI 関数に対して Titanium API を呼び出します。この変更には次のような意味があります。

  1. アプリの UI は完全にネイティブになります。ネイティブの Titanium API がすべての UI ニーズの制御を引き継ぐため、アプリには Web UI はもうありません。Titanium は、「クロスプラットフォーム ネイティブ UI」のフロンティアを開拓したことで、多くの称賛に値します。ネイティブ UI のルック アンド フィールは好みだが、公式のプログラミング言語は嫌いなプログラマーに、代替手段を提供します。

  2. Web ビューがなくなるため、アプリで HTML または CSS を使用できなくなります。(注記:Titanium では引き続き Web ビューを作成できます。ただし、Web ビューで利用できる Titanium の機能はほとんどありません。)チタン Q&A:HTMLとCSSはどうなったのでしょうか?

  3. DOM オブジェクトの存在を前提とする JQuery などの一般的な JS ライブラリは使用できなくなります。コーディング言語として JavaScript を引き続き使用します。しかし、これは、Web プログラマーとして Titanium 1.0 を使用する場合に利用できるほぼ唯一の Web テクノロジです。

チタンビデオ:Titanium 1.0の新機能。

さて、Titanium 1.0 は JavaScript を「ネイティブ ビット」にコンパイルしますか?いいえ。Appcelerator は、この開発者ブログでこの問題について最終的に明らかにしました。チタンガイドプロジェクト:JS環境。 私たちプログラマは、マーケティング部門の人たちよりもずっと本物の人間ですよね。:-)

PhoneGap に進みます。PhoneGap について新しいことはあまりありません。私の認識では、今年後半に IBM が参入するまで、PhoneGap の開発はあまり活発ではありませんでした。IBM は Nitobi よりも多くのコードを PhoneGap に提供していると主張する人もいます。それが真実かどうかにかかわらず、PhoneGap が積極的に開発されていることを知っておくのは良いことです。

PhoneGap は、引き続き Web テクノロジー、つまり HTML、CSS、JavaScript をベースにしています。PhoneGap には、Titanium のようにネイティブ UI 機能を JavaScript にブリッジする計画はないようです。Web UI はパフォーマンスやネイティブのルック アンド フィールの点でネイティブ UI にまだ遅れをとっていますが、その差は急速に縮まりつつあります。パフォーマンスの観点からモバイル Web UI に優れた機能を保証する Web テクノロジーには 2 つのトレンドがあります。

  1. JavaScript エンジンはインタープリターから仮想マシンに移行します。JavaScript は、実行を高速化するためにネイティブ コードに JIT コンパイルされます。 Safari JS エンジン:リスフィッシュエクストリーム

  2. Web ページのレンダリングは、CPU への依存から GPU アクセラレーションの使用へ移行しています。ページ遷移や 3D アニメーションなどのグラフィックを多用するタスクは、ハードウェア アクセラレーションの助けを借りて非常にスムーズになります。 Chrome での GPU アクセラレーションによる合成

デスクトップ ブラウザに由来するこのような改善は、モバイル ブラウザにもすぐに提供されています。実際、iOS 3.2 および Android 2.0 以降、モバイル Web ビュー コントロールのパフォーマンスは大幅に向上し、HTML5 にフレンドリーになりました。モバイル ウェブの将来は非常に有望であるため、大きな子供たちが街に集まります。 JQuery は最近、モバイル Web フレームワークを発表しました。 私の意見では、JQuery Mobile は UI ガジェットを提供し、PhoneGap は電話機能を提供し、これら 2 つを組み合わせることで完璧なモバイル Web プラットフォームを作成します。

私も言及する必要があります 煎茶タッチ 別のモバイル Web UI ガジェット フレームワークとして。Sencha Touch バージョン 1.0 は最近、GPLv3 を含むデュアル ライセンス モデルの下でリリースされました。Sencha Touch は JQuery Mobile と同様に PhoneGap とうまく連携します。

あなたが GWT プログラマー(私と同じ)は、チェックしてみてください GWTモバイル, 、GWT を使用してモバイル Web アプリを作成するためのオープンソース プロジェクト。これには、GWT での PhoneGap の使用を可能にする PhoneGap GWT ラッパーが含まれています。

他のヒント

私が収集したものから、この 2 つの違いは次のとおりです。

  • PhoneGap は基本的に、まだ残っているものに対してネイティブ ラッパーを生成します ウェブアプリ. 。WhateverYourPlatformIs プロジェクトを吐き出し、それをビルドしてデプロイします。iPhone (私が時間を費やしている場所) について話している場合、Web アプリ ランチャー (独自のスプリングボード アイコンを取得するショートカット。のように)ネイティブアプリ)。「アプリ」自体は依然として html/js/etc であり、ホストされたブラウザー コントロール内で実行されます。PhoneGap がさらに提供するのは、JavaScript とネイティブ デバイス API の間のブリッジです。したがって、PhoneGap API に対して JavaScript を記述すると、PhoneGap は対応する適切なネイティブ呼び出しを行います。その点において、それは、 普通の古い Web アプリをデプロイするのとは異なります。

  • Titanium ソースはネイティブ ビットにコンパイルされます。つまり、html/js/などです。単にプロジェクトにアタッチされて Web ブラウザー コントロール内でホストされるだけではなく、ネイティブ アプリになります。これは、たとえば、アプリのインターフェースが次のように構成されることを意味します。 ネイティブ UIコンポーネント。ネイティブ アプリを使わずにネイティブのルック アンド フィールを実現する方法はありますが...良い...通常、それは何という悪夢であることがわかります。

この 2 つは、一般的な Web テクノロジ (html/js/css/何とか何とか) を使用してすべての内容を記述することと、カスタム JavaScript API を通じてネイティブ機能にアクセスできるという点で似ています。

しかし、繰り返しになりますが、PhoneGap アプリ (PhonGapps?わからない...それは愚かな名前ですか?言うのは簡単です - 私はそれくらい知っています) Web アプリとして人生を始め、Web アプリとして人生を終えるのです。iPhone では、html/js/etc.は UIWebView コントロール内で実行されるだけで、js 呼び出しによる PhoneGap JavaScript API はネイティブ API にルーティングされます。

Titanium アプリはネイティブ アプリになります。Web 開発技術を使用して開発されただけです。

これは実際にはどうなるのでしょうか 平均?

  1. Titanium アプリは、 見て 「本物の」アプリと同じように、最終的には 「本物の」アプリ。

  2. PhoneGap アプリは、ブラウザ コントロールでホストされている Web アプリのように見えます。 ブラウザー コントロールでホストされている Web アプリ。

どちらがあなたに適していますか?

  • Web 開発スキルを使用してネイティブ アプリを作成したい場合は、Titanium が最適です。

  • Web 開発スキルを使用して複数のプラットフォーム (iPhone、Android、Blackberry、およびその他のプラットフォームに含めることが決定されたもの) に現実的に展開できるアプリを作成したい場合、およびネイティブ プラットフォーム機能のサブセット (GPS、統合 JavaScript API を介して加速度計など) を使用するには、おそらく PhoneGap が必要です。

あなたはこう尋ねるかもしれません:Web 上でホストされる Web アプリではなく、PhoneGapp (名前を使用することに決めました) を作成する必要があるのはなぜですか?この方法でも一部のネイティブ デバイス機能にアクセスできますが、ユーザーに「ネイティブ」アプリのダウンロードとインストールを強制するのではなく、真の Web デプロイメントの利便性も享受することはできないでしょうか?

答えは次のとおりです。PhoneGapp を App Store に提出して料金を請求できるからです。また、ランチャー アイコンも表示されるので、ユーザーがアプリのことを忘れにくくなります (私はアプリのアイコンよりもブックマークのことを忘れる可能性がはるかに高いです)。

確かに、Web でホストされている Web アプリへのアクセスに料金を請求することもできますが、実際にそのプロセスを実行する人は何人いるでしょうか?App Storeでは、アプリを選択し、「購入」ボタンをタップし、パスワードを入力すれば完了です。インストールされます。数秒後、私はそれを使用しています。もし私が他人の 1 回限りのモバイル Web トランザクション インターフェイスを使用しなければならないとしたら、それはおそらく私の名前、住所、電話番号、CC 番号、その他私が盗み出したくないものを盗み出さなければならないことを意味するでしょう。私はほぼ確実にそうしません。それをやり遂げないでください。また、私は Apple を信頼しています。スティーブ ジョブズが私の情報を記録して、お楽しみのために私の CC に大量のエッチな雑誌の購読料を請求するつもりはないと確信しています。

とにかく、Web 開発技術が関与しているという事実を除けば、PhoneGap と Titanium は非常に異なり、表面的にしか比較できないほどです。

ちなみに、私は Web アプリが嫌いです。iTunes App Store のレビューを読むと、ユーザーは Web アプリを見つけるのが非常に上手です。名前は言いませんが、私の携帯電話には見た目も動作もゴミのような「アプリ」がいくつかあります。それは、それらが UIWebView インスタンス内でホストされている Web アプリだからです。Web アプリを使用したい場合は、Safari を開いて、そのアプリに移動します。iPhoneっぽいものが欲しくてiPhoneを買いました。たとえば、おしゃれな Google Web アプリを Safari 内で使用するのには何の問題もありませんが、Google が Web アプリをネイティブのアプリとして表示することで Springboard にブックマークを忍び込ませたら、だまされたと感じるでしょう。

今行かなければなりません。私のガールフレンドは、「そのコンピュータを 3 秒間使用するのをやめてくれませんか」というような表情をしています。

私は Android/iPhone 開発のコースを受講していて、Titanium を 8 週間 (フルタイムではありません) 過ごしました (バージョンは Titanium 1.4.2、時期は 2010 年 11 月頃でした)。これが私の経験です。

iPhone Android デュアル ターゲティング

API ガイドには、この機能が Android と iPhone の両方で利用できると記載されていますが、実際はそうではありません。多くの機能は、いずれかのプラットフォームでは動作しません。一部の機能は異なります。

クラスの多くの人は iPhone アプリケーションを作成したことがありますが、大規模な書き直しをしない限り、それを Android 上で動作させることはできません。私は Animap と呼ばれるシンプルな子供向けアプリを開発し (スウェーデンの Android マーケット/Appstore を参照)、Windows で開発を開始しました。Android ターゲットが動作したら、OS X でプロジェクトを開きました。iPhone のビルド内容は表示されず、Android のみが表示されます。OS X でデュアル ターゲット プロジェクトを開始する必要があります。(OK、関連ファイルを新しいプロジェクトにコピーしました)。次の問題 - アニメーションは iPhone では動作しません (Android では動作します)。スクロール イベントは iPhone では同じように機能しません。(つまり、Android では、ユーザーがスクロールを停止して画面から指を離すとアンタッチ イベントが発生しますが、これは iPhone では発生しません)。

これについてはどこにも記載されていないため、基本的には最初に 1 つのプラットフォームでプログラミングを試行錯誤し、次にもう 1 つのプラットフォームでプログラミングを行う必要があります。試行錯誤ということは、Animap のような単純なアプリを他のプラットフォームで動作させるには約 2 日かかるということです。if (android) then... も必要です。それとも(iphone)...コード全体にわたって...

ダウンロードとセットアップ

手紙の指示に従わなければなりません。Java 64 ビットを使用しないでください。KitchenSink 1.4.0 デモ アプリケーションはコンパイルされません。(1.3は動作します!)長いパス名は、長い間コマンドラインパラメーターを受信しない外部プログラムが長く到達した場合に、ファイルをCドライブに直接配置する必要があります。(ただし、小さなプログラムでは問題ありません)1/3の時間、ツールチェーンは単に停止し、再び「起動」を押す必要があります。そしたらきっとうまくいくはず…非常に信頼性が低い。起動時にシミュレーターが見つからない場合は、Ctrl+Alt+Delete を使用して adb.exe を強制終了して再試行する必要があります。

ネットワーク接続

WiFiネットワークでは、ライブ接続を失い、インターネット接続が機能していない場合は、サーバーにログインできないため、開始しません。

API

これに比べれば、CSS、HTML、jQuery は簡単です。Titanium は他の古い GUI API に似ており、すべてのボタン/フィールドなどにいくつかのプロパティを設定する必要があります。設定する必要があるプロパティをすべて覚えていても、フィールドを間違えるのは簡単すぎますか?正しい場所に大文字で綴っていますか?(これはコンパイラーによって捕捉されないため、幸運にもその部分をテストできた場合は実行時エラーとして認識されます)

Titanium では、コントロールの上に別のビューを追加したり、GUI の他の場所をクリックしたりすると、単純に問題が発生します。

ドキュメンテーション

いくつかの API ページには Android シンボルが含まれていますが、コントロールを作成しようとすると null のみが返されます。これらは、シンボルにもかかわらず、Android プラットフォームで単純に利用できるわけではありません。Android が特定のメソッドをサポートしていないことが記載されている場合がありますが、その場合は API 全体が欠落しています。

台所の流し

デモアプリケーション。Eclipse プロジェクト フォルダーに置くとパスが長すぎるためコンパイルされないことは言いましたか?C ドライブのルート フォルダーに置く必要があります。現在、シンボリックリンク(mklink /J ...)を使用しています。

文書化されていない方法

ラベルを信頼できるものに変更するには、 label.setText('Hello World') として適切に使用する必要がありますが、これについてはまったく文書化されていません。

デバッグ

Titanium.API.info('印刷出力がデバッグの唯一の方法です');

編集

API は適切な形式で利用できないため、ヘルプなどを使用して通常のコード補完を行うことはできません。エクリプスで。アプタナさん、助けてください!

ハードウェア

コンパイラ/ツールはマルチスレッドではないようなので、多くの試行錯誤を行う必要があるため、高速ハードドライブを備えた高速コンピュータが必須です。ドキュメントが貧弱であることについて言及しましたか?信用できないので、そこにあるものはすべて試してみる必要があります。

いくつかのポジティブなこと

  • オープンソース
  • 以前のプロジェクトから、私はクローズド ソースを二度と使用しないと約束しました。時間と労力を投入するだけでは物事を簡単に修正することはできないからです。プロジェクトが遅れていて、厳しい期限までに納品する必要がある場合に重要です。これはオープンソースであり、ツールチェーンが壊れる理由を確認し、実際にそれを修正することもできました。

  • バグデータベース

  • こちらもオープンです。試行錯誤にさらに 4 時間を費やす代わりに、自分は一人ではないことを理解し、回避策を講じることができます。

  • コミュニティ

  • フォーラムでは活発に活動しているようです。

バグ

  • Titanium 1.4 はスレッドセーフではありません. 。つまり、スレッドを使用する場合 (次の URL を使用します)createWindow 呼び出しのプロパティ)、スレッドのようなプログラムが動作し、データを含むイベントを前後に送信すると、ハンドラーの喪失、ウィンドウの喪失、イベントが多すぎる、イベントが少なすぎるなど、非常に非常に奇妙な問題がたくさん発生します。等これはすべてタイミングに依存しており、コードの行を異なる順序で配置すると、アプリケーションがクラッシュしたり修復されたりする可能性があります。別の file.js にウィンドウを追加すると、app.js の実行が中断されます...これにより、Titanium の内部データ構造も破壊されます。これは、内部データ構造が並行して更新され、変更されたばかりの値が別の値で上書きされることがあるためです。

Titanium に関して私が抱えていた問題の多くは、何百ものスレッド、イベント、メッセージ パッシングをサポートする OSE のようなリアルタイム システムを使用してきた経験から来ています。これは Titanium 1.4 で動作するはずですが、確実に動作しません。

  • Javascript (私にとっては初めてのことですが) は実行時エラーが発生すると静かに終了します。これは、変数名のスペルミスや null ポインターの読み取りなどの、小さくて一般的なバグがクラッシュすべきときにクラッシュしないので、デバッグできることも意味します。代わりに、文字の配置ミスやタイプミスが原因で、プログラムの一部 (イベントハンドラーなど) が動作を停止するだけです。

  • さらに、Titanium には、関数内で機能しない一部のパラメーターのような、より単純なバグがあります (これは、少なくとも Android プラットフォームでは非常に一般的です)。

  • いくつかのコンピューターでTitnium開発者を実行した試行錯誤のデバッグサイクル速度では、ボトルネックがハードドライブであることに気付きました。ラップトップ上の SSD ドライブでは、ビルド サイクルが 4200 rpm ドライブよりも約 3 ~ 5 倍高速になります。デスクトップでは、RAID 1 (ストライピング モード) でデュアル ドライブを使用すると、多少高速な CPU を搭載した単一ドライブよりもビルドが約 25% 高速になり、SSD ドライブのラップトップにも勝ります。

まとめ

  • このスレッドのコメントを見ると、このようなツールがアプリを配信できるプラットフォームの数をめぐって争いがあるようです。API の数が重要なセールスポイントのようです。

これは使い始めると非常に輝きます。公開されているバグトラッカーを見ると、修正されたバグの数よりもバグの数が増加し続けていることがわかります。これは通常、開発者がバグの数を減らすことに集中するのではなく、機能を追加し続けていることを示しています。

かなりシンプルなアプリを顧客のためにマルチプラットフォームに提供しようとしているコンサルタントとして、これが 2 つのプラットフォームでネイティブ アプリ開発を行うよりも実際に速いかどうかはわかりません。これは、調子に乗っているときは、Titanium を使用すると速いのですが、突然下を見ると、回避策に何時間費やさなければならないかわからないほど深い穴に陥っていることに気づくという事実によるものです。特定の期限/時間/コストで特定の機能を約束することはできません。

自分自身について:wxPython で 2 年間 Python を使用しています。(GUI には一貫性がありませんが、このように壊れることはありません。Javascript と Titanium で使用されるスレッド モデルを理解していないのは私かもしれませんが、オープン ディスカッション フォーラムによると、GUI オブジェクトが突然間違ったコンテキストを使用したり、更新されなくなったりするそうです。モバイル デバイス用の C および ASM プログラミングのバックグラウンド。

編集 - バグでパーツを追加し、スレッドセーフではない] [編集 - 今では1か月+で作業しましたが、主にPCではOS Xでもあります。iPhone と Android のデュアル ターゲティングを追加しました。トライアルアンドエラーのデバッグサイクル速度を追加しました。]

コロナSDK(Anscaモバイル)そのコード言語としてのLuaを用います。 Luaの詳細のためにlua.orgを参照してください。

私たちは、さらにWeb統合とネイティブUI要素を追加する予定が、我々の焦点は、Webベースの技術とは対照的に、このようなゲーム開発などのグラフィックスを多用するアプリケーション、になる傾向があります。言い換えれば、我々は完全にJavascriptを/ HTML / CSSでコロナのアプリを書いて人を想像しないでください。

私は今、一週間以上にわたりチタンと協力し、私はその弱さについての良い感触を持っているような気がしてきた。

あなたが望んでいた場合は、

1)あなたは、複数のプラットフォーム幸運で同じコードを使用します!あなたはbackgroundGradientのようなものを見て、あなたがそれをサポートしていないアンドロイドのバージョンを見つけるまで、驚かれることでしょう。そして、勾配画像を使用してに戻す必要があり、同様のコードを容易にするために右の両方のバージョンのためにそれを使用するのでしょうか?

2)奇妙な行動の多くは、チタンのAndroid SDKに、あなたは「重い」ウィンドウがうまく動作するバックボタン、またはより良い姿勢イベントトラッキングを取得することであるかを理解する必要があります。これは、Androidプラットフォームが本当にチタンは、そのAPIを機能させるためにしようとするそのどれだけ、どのようにではありません。

3)あなたの暗闇の中で投げ、物事はクラッシュすると、あなたは、コードをコメントし、あなたがそれを見つけるときに、それを使用しないように開始する必要があります。 6ヶ月以上のための問題となっているアンドロイドの向きやパーセントなどの特定の明白なバグがあります。

4)バグ....そこに多くのバグがあり、それらが報告され、数ヶ月のために周りに座って、数日後に固定します。私は、彼らがさえアンドロイドと他の多くの問題がある場合に、黒ベリーモバイルSDKをリリースすることを計画している驚いています。

5)チタンアンドロイド対チタンのiPhoneのJavaScriptエンジンが完全に異なっています。アンドロイドバージョンでは、あなたは、リモートのJavaScriptファイルをダウンロード含めるなどMooToolsは、jqueryのなどのライブラリを使用することができます。私は私のAndroidアプリをコンパイルしておく必要はありませんでしたので、私はこれを見つけたとき、私は天国にいました。アンドロイドAPKのインストールプロセスはとても長い時間がかかります!そのiPhoneのどれも、iphone版ははるかに高速のJavaScriptエンジンを持って、可能ではありません。

あなたが離れネイティブUI部品のロットから滞在する場合、すなわち代わりに、勾配画像に固執、向きの変化を検出し、バックボタンを忘れて、あなた自身のアニメーションを構築し、ウィンドウヘッダ、ツールバー、およびダッシュボードを忘れたsetIntervalを使用しています。あなたは本当に書き換えの多くの必要がないことの両方で動作するAPIを作ることができます。しかし、その時にWebアプリケーションとしてその同じように低迷を指します。

だから、それは価値がありますか?すべての痛みの後、毎分の価値があります。どこでもelseing場合は、抽象的、論理だけではなく、その後それぞれに異なるUIを構築することができます。チタンはあなたが速い感じ流体アプリケーションを作ることができます。あなたは、各プラットフォームの強力なレイアウト能力を失っていますが、単純なと思えば、物事は、単一の言語の下で行わ取得することができます。

なぜウェブアプリ?エントリーレベル市場でのWebViewを生成するためにその恐ろしく遅いAndroid携帯電話とあなたがより複雑なロジックを実行するために使用することができ、メモリを大量に消費します。

ここでは、より新しいとAppceleratorのとのPhoneGapの深さ分析にあります:<のhref =「http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap」のrel =」 noreferrer "> http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap の

そして、ここでは、彼らはプログラムでどのように異なるかについて、より詳細です。 http://savagelook.com/blog/portfolio / - - - Webベースの-AppceleratorのPhoneGapのです-純粋なJavaScriptの

ネイティブmapkitはチタンでサポートされています。

iphoneウィジェットのように見えるTHA HTML5ウィジェットを作る一つのことですが、彼らは同様にうまく実行させることは全く別の問題です。 HTML5アニメーション(偶数プレーンビュートランジション)のパフォーマンスは、長いリストをスクロールし、ジェスチャーへの応答性が粘着性とぎくしゃく感じます。 iPhoneユーザーは違いに気づくでしょう。

だけでなく、プラットフォーム固有のコードとユーザビリティの問題につながるさまざまなデバイスでサポートされているジェスチャの種類にいくつかの違いもあります。

私は今、私は推測するためにネイティブアプリで滞在されます。

ローモビル ロードス (http://rhomobile.com/products/rhodes) アプローチは PhoneGap と非常によく似ていますが、次の機能を備えた唯一のフレームワークです。

  1. モデルビューコントローラーパターン(ほとんどのWebフレームワークが提供するように)
  2. オブジェクト リレーショナル マネージャー
  3. すべての一般的なスマートフォンのサポート (Windows Phone 7 を含む)
  4. ホスト型開発サービス (ホスト型ビルドだけではありません): http://rhohub.com
  5. RhoStudio IDE の完全なデバッガと SDK レスのエミュレータ
  6. 同期されたオフライン データのサポート

チタンに興味を持って誰のために私は、彼らはいくつかのクラス、プロパティ、メソッドが欠落している非常に良いドキュメントを持っていないことを言わなければなりません。しかし、多くはそれが悪いわけではないので、彼らのサンプルアプリKitchenSinkに「文書化」されます。

のPhoneGapの私の理解では、彼らがiPhoneのAPIの多くにJavascriptのAPIを提供していることである。

チタンは、ウェブ開発者の背景について簡単に思えます。基本的なTabViewアプリケーションを作成するために、単純なXMLファイルであり、その後、コンテンツ領域内のすべてのHTML / JSによって制御されます。私はまた、チタンフレームワークの一部にいくつかのJavaScriptアクセス(位置情報、電話番号、等に特にアクセス)を提供しないことを知っています。

UPDATE:チタンは、そのフレームワークのバージョン0.8でマップのAPIを追加しました。

あなたはObjective Cのプログラムネイティブアプリケーションを学ぶ必要があります。あなたは生活が楽になると思うこれらのものに依存しないでください。 Appleは最も簡単な方法は、彼らのネイティブツールと言語を使用していることを確認しましたしました。私は要素に応じて、コードまたはまったくコードの3行で同じことを行うことができますJavaScriptをあなたの100行のために。いくつかのチュートリアルを見る - あなたはJavaScriptを理解するならば、Objective Cのは難しいことではありません。回避策は悲惨であり、Appleはいつでも彼らが望むあなたにプラグを引っ張ることができます。

あなたが言及したソリューションのうち、それらのどれもあなたのOS 3.0で導入されたMapKitフレームワークへの直接アクセスを提供するために表示されません。

GoogleマップのHTMLウィジェットとしては、(たとえばGoogleの緯度を参照)MapKitほど良いものではありません、あなたはネイティブココアタッチアプリケーションを開発するか、MapKitの統合を追加して拡張できるソリューションを選択するオフおそらく最高です。 PhoneGapのは、(それがデフォルトであるので、それはオープンソースです)このように拡張可能であり、他の解決策のいくつかは同様に可能性があります。

の編集:チタンは今MapKitをサポートしています

私は、コロナを試してみました。私はそれがストリーミングMP3オーディオをサポートしていません発見されるまで、それは良かったです。 だから、私はすぐそこに停止しました。私は本当に私がobj cを学ぶべきiphoneアプリの開発者になりたい場合、私は思います。私はラジオ局のリストを持っており、それが再生を開始し、あなたがそれらをクリックしてアプリを作りたいと思っています。

すべての
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top