私はWeb開発者で、自分のWeb製品をiPhoneに移行したいです。製品の1つはGoogleマップのようなものです。電話スクリーンに地図を表示し、地図をドラッグしたりサイズを変更したり、地図に追加された情報を表示したりできます。
HTML、CSS、Javascriptを使ってネイティブのiPhoneアプリケーションを開発できるようにするテクノロジがいくつかあることを私は知っています。私はいくつか確認しました:
他に似たような製品はありますか?それらの違いは何ですか?どちらを選ぶべきですか?
私は一番上に投票された答えをトップにコメントすることだけを目的としてstackoverflowに登録しました。悪いことに、stackoverflowは新しいメンバーがコメントを投稿することを許可しません。だから私はこのコメントをもっと答えのように見せなければなりません。
Rory Blythの回答には、2つのJavaScriptモバイルフレームワークについてのいくつかの有効な点が含まれています。しかし、彼の要点は正しくありません。真実は、TitaniumとPhoneGapは異なるよりも似ているということです。どちらも携帯電話の機能を一連のJavaScript APIを介して公開しており、アプリケーションのロジック(html、css、javascript)はネイティブのWebViewコントロール内で実行されます。
PhoneGapは、Webアプリケーションの単なるネイティブラッパーではありません。 PhoneGap JavaScript APIを介して、「Webアプリケーション」は、地理位置情報、加速度センサー、連絡先、データベース、ファイルシステムなどの携帯電話機能にアクセスできます。基本的に、携帯電話SDKが提供する機能は、 JavaScriptの世界。一方、モバイルWebブラウザ上で実行される通常のWebアプリは、これらの機能のほとんどにアクセスできません(セキュリティが主な理由です)。したがって、PhoneGapアプリはWebアプリよりもモバイルアプリのようなものです。 PhoneGap APIをまったく使用しないWebアプリケーションをPhoneGapを使用してラップすることはできますが、それはPhoneGapの作成目的ではありません。
Titaniumはあなたのhtml、css、またはjavascriptコードを「ネイティブビット」にコンパイルしません。埋め込み画像ファイルと同じように、実行可能バンドルのリソースとしてパッケージ化されています。アプリケーションが実行されると、これらのリソースはUIWebViewコントロールにロードされ、そこで実行されます(もちろんネイティブビットではなくJavaScriptとして)。 javascriptからネイティブコードへ(またはtoから目的cへ)のコンパイラのようなものはありません。これはPhoneGapでも同じように行われます。アーキテクチャの観点からは、これら2つのフレームワークは非常に似ています。
今、彼らは何が違うのですか?はい。第一に、Titaniumは、より多くの携帯電話機能をJavaScriptに橋渡しすることにより、PhoneGapよりも機能が豊富になっているようです。最も注目すべきことに、PhoneGapは(もしあれば)多くのネイティブUIコンポーネントをJavaScriptに公開しません。一方、TitaniumにはJavaScriptで呼び出すことができる包括的なUI APIがあり、あらゆる種類のネイティブUIコントロールを作成および制御できます。これらの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日更新:Titaniumの従業員によるMickeyの質問への回答へのリンク
2010年12月12日更新:私はこの記事を最新の情報にするために年1回のレビューを行うことにしました。最初の記事の一部の情報が古くなったため、多くのものが1年で変更されました。
最大の変化はTitaniumから来ました。今年の初め、Appceleratorは、アーキテクチャの観点から以前のバージョンから大幅に逸脱したTitanium 1.0をリリースしました。 1.0では、UIWebViewコントロールは使用されなくなりました。代わりに、あらゆるUI関数に対してTitanium APIを呼び出します。この変更はいくつかのことを意味します。
アプリのUIは完全にネイティブになります。ネイティブのTitanium APIがすべてのUIニーズの制御を引き継ぐので、アプリにこれ以上Web UIはありません。 「クロスプラットフォームネイティブUI」の最前線で開拓してきたチタンは、多くの評価を受けるに値します。ネイティブUIのルックアンドフィールを好むが、公式のプログラミング言語を嫌うプログラマには代替手段があります。
Webビューが消えているので、あなたはあなたのアプリケーションでHTMLやCSSを使うことができないでしょう。 (注:TitaniumでWebビューを作成することはできますが、Webビューで利用できるTitaniumの機能はほとんどありません。) Titanium Q&A:HTMLとCSSに何が起こったのですか?
DOMオブジェクトの存在を前提としているJQueryなどの一般的なJSライブラリを使用することはできません。コーディング言語としてJavaScriptを使い続けます。しかし、それがあなたがWebプログラマーとしてTitanium 1.0に来るならばあなたが利用できることができる唯一のWeb技術です。
さて、Titanium 1.0はあなたのJavaScriptを「ネイティブビット」にコンパイルしますか?いいえ、Appceleratorはついにこの開発者ブログでこの問題を解決しました。 Titanium Guides Project:JS Environment 私たちのプログラマーはマーケティング部門の人々よりも本物の人々です。 :-)
PhoneGapに進みます。 PhoneGapについて言うべき新しいことはそれほど多くありません。私の認識では、PhoneGapの開発は、今年後半にIBMが参加するまではあまり活発ではありませんでした。 IBMはNitobiよりも多くのコードをPhoneGapに提供していると主張する人もいました。それが本当であるかどうか、それはPhoneGapが活発に開発されていることを知るのは良いことです。
PhoneGapは、HTML、CSS、およびJavaScriptなどのWebテクノロジをベースにしています。 Titaniumが行っているように、PhoneGapがネイティブUI機能をJavaScriptにブリッジする計画を持っているようには見えません。 Web UIは、パフォーマンスやネイティブのルックアンドフィールに関してネイティブUIよりもまだ遅れていますが、そのようなギャップは急速に縮小されつつあります。パフォーマンスに関してモバイルWeb UIに優れた機能を保証するWebテクノロジには、2つの傾向があります。
インタプリタから仮想マシンへのJavaScriptエンジンの移行JavaScriptはJITをネイティブコードにコンパイルして実行を高速化します。 Safari JSエンジン:SquirrelFish Extreme
Webページのレンダリングは、CPUへの依存からGPUアクセラレーションの使用へと移行しています。ハードウェアアクセラレーションの助けを借りて、ページ遷移や3Dアニメーションなどのグラフィックを多用するタスクは、よりスムーズになります。 ChromeでのGPUアクセラレート合成
デスクトップブラウザに由来するこのような改善は、モバイルブラウザにも迅速に提供されています。実際、iOS 3.2およびAndroid 2.0以降、モバイルWebビューコントロールははるかに高性能でHTML 5対応になりました。モバイルWebの将来は非常に有望で、街に大きな魅力をもたらしています。 JQueryは最近モバイルWebフレームワークを発表しました。 JQuery MobileがUIガジェットを提供し、PhoneGapが電話機能を提供する私の考えでは完璧なモバイルWebプラットフォームを作成します。
私はまた Sencha Touch を別のモバイルウェブUIガジェットフレームワークとして言及するべきです。 Sencha Touchバージョン1.0は最近GPLv3を含むデュアルライセンスモデルの下でリリースされました。 Sencha Touchは、JQuery Mobileと同じようにPhoneGapとうまく連携します。
あなたが GWT (私のような)プログラマーであれば、 GWT Mobile 、GWTでモバイルWebアプリケーションを作成するためのオープンソースプロジェクトをチェックしてみてください。 GWTでPhoneGapを使用できるようにするPhoneGap GWTラッパーが含まれています。
私が集めたものから、ここに2つの違いがあります:
PhoneGapは基本的に、まだのWebアプリのネイティブラッパーを生成します。 WhateverYourPlatformIsプロジェクトを生成し、ビルドして展開します。 iPhone(私が時間を費やしている場所)について話している場合、Webアプリランチャーの作成(Springboardアイコンを取得するショートカットなので、(like)ネイティブアプリ)。 「アプリ」自体はまだhtml/js/etcであり、ホストされているブラウザーコントロール内で実行されます。 PhoneGapがそれ以上に提供するのは、JavaScriptとネイティブデバイスAPIの間の橋渡しです。したがって、PhoneGap APIに対してJavaScriptを記述すると、PhoneGapは対応する適切なネイティブ呼び出しを行います。その点で、それはは単純な古いWebアプリのデプロイとは異なります。
Titaniumソースはネイティブビットにコンパイルされます。つまり、html/js/etc。単にプロジェクトにアタッチされてから、Webブラウザーコントロール内でホストされるだけでなく、ネイティブアプリに変わります。これは、たとえば、アプリのインターフェースがnativeUIコンポーネントで構成されることを意味します。ネイティブアプリを使用せずにネイティブのルックアンドフィールを取得する方法はありますが、...まあ...通常は悪夢です。
この2つは、一般的なWebテクノロジー(html/js/css/blah blah blah)を使用してすべてのものを記述し、カスタムJavaScript APIを介してネイティブ機能にアクセスできるという点で似ています。
しかし、再び、PhoneGapアプリ(PhonGapps?私は知らない...それは愚かな名前ですか?それは言うのは簡単です-私はそれを知っています)Webアプリとして彼らの人生を開始し、Webアプリとして彼らの人生を終わらせます。 iPhoneでは、html/js/etc。 UIWebViewコントロール内で実行されるだけで、jsが呼び出すPhoneGap JavaScript APIはネイティブAPIにルーティングされます。
Titaniumアプリはネイティブアプリになります。Web開発技術を使用して開発されたばかりです。
これは実際にはmeanとはどういう意味ですか?
Titaniumアプリはlookが「本当の」アプリのように見えます。これは、最終的にが「本当の」アプリだからです。
PhoneGapアプリは、最終的にはブラウザーコントロールでホストされているWebアプリであるため、ブラウザーコントロールでホストされているWebアプリのように見えます。
どちらがあなたに合っていますか?
Web開発スキルを使用してネイティブアプリを作成する場合は、Titaniumが最適です。
複数のプラットフォーム(iPhone、Android、Blackberry、およびそれらが含めることを決定した他のもの)に現実的に展開できるWeb開発スキルを使用してアプリを作成する場合、およびネイティブプラットフォーム機能のサブセット(GPS、加速度計など)、統合されたJavaScript APIを介して、PhoneGapはおそらくあなたが望むものです。
あなたが尋ねるかもしれません:なぜ私は、WebでホストされているWebアプリではなく、PhoneGapp(私は名前を使うことに決めました)を書きたいのですか?ネイティブデバイスの機能にそのままアクセスすることはできませんが、「ネイティブ」アプリをダウンロードしてインストールすることをユーザーに強制するのではなく、真のWeb展開の利便性もありますか?
答えは次のとおりです。PhoneGappをApp Storeに送信して料金を請求できるからです。また、このランチャーアイコンが表示されるため、ユーザーがアプリを忘れにくくなります(アプリアイコンよりもブックマークを忘れる可能性がはるかに高くなります)。
WebホストのWebアプリへのアクセスに対して確かに課金することはできますが、実際にそれを行うためにプロセスを通過する人は何人ですか? App Storeで、アプリを選択して[購入]ボタンをタップし、パスワードを入力して完了です。インストールします。数秒後、私はそれを使用しています。他の誰かの1回限りのモバイルWebトランザクションインターフェースを使用しなければならなかった場合、おそらく自分の名前、住所、電話番号、CC番号など、タップしたくないその他のものをタップする必要があることを意味します。それを通り抜けます。また、私はAppleを信頼しています-Steve Jobsは私の情報をログに記録せず、キックのためにCCに大量のいたずらな雑誌購読を請求するつもりはありません。
とにかく、Web開発技術が関係しているという事実を除いて、PhoneGapとTitaniumは非常に異なります-表面的にのみ比較できるという点まで。
私はWebアプリが嫌いです。iTunesApp Storeのレビューを読むと、ユーザーはそれらを見つけるのが得意です。名前は付けませんが、携帯電話にゴミのように見える2つの「アプリ」があります。これは、UIWebViewインスタンス内でホストされるWebアプリだからです。 Webアプリを使用したい場合は、Safariを開き、Safariに移動します。 iPhone-yのものが欲しいのでiPhoneを買いました。たとえば、Safari内でおしゃれなGoogle Webアプリを使用しても問題はありませんが、GoogleがネイティブアプリとしてWebアプリを表示することでSpringboardにブックマークをスナックしただけではごまかされます。
今行かなければなりません。私のガールフレンドは、そのコンピューターを3秒間使用するのをやめてください。
私はAndroid/iPhone開発のコースを受講していて、私たちはTitaniumで8週間を過ごしました(フルタイムではありません)(バージョンはTitanium 1.4.2、時間は2010年11月でした)。これが私の経験です。
APIガイドでは、機能はAndroidとiPhoneの両方で利用可能であると主張していますが、そうではありません。多くのものは単純にプラットフォームの1つでは動作しません。いくつかのことは異なって動作します。
このクラスの多くの人々はiPhoneアプリケーションをやってきました、そして彼らは彼らにそれらを大いに書き直さないでは動作させることができません。私はAnimap(スウェーデンのAndroidマーケット/ Appstoreを参照)というシンプルな子供向けアプリを開発し、Windowsで開発を始めました。 Androidターゲットが機能したら、私はOS Xでプロジェクトを開きました。Androidだけで、iPhone用のビルドは表示されません。あなたは、OS Xの下でデュアルターゲットプロジェクトを開始する必要があります(わかりました、私は関連するファイルを新しいプロジェクトにコピーしました)。次の問題 - アニメーションはiPhoneでは動作しません(Androidでは動作します)。スクロールイベントはiPhoneでは同じように機能しません。 (つまりAndroidでは、ユーザーがスクロールを止めて指を画面から離したときにアンタッチイベントが発生します。これはiPhoneでは発生しません)。
これはどこかで言及されていないので、あなたは基本的に最初の1つのプラットフォームでそれから他のプラットフォームで試行錯誤プログラミングをする必要があります。試行錯誤して、Animapのような単純なアプリケーションを他のプラットフォームで動作させるには、約2日かかることになります。あなたが持っている必要があります(アンドロイド)その後...または場合(iphone)...あなたのコード全体...
あなたは手紙の指示に従わなければならない。 Java 64ビットを使用しないでください。 KitchenSink 1.4.0デモアプリケーションはコンパイルされません。長いパス名を指定すると、外部プログラムがコマンドラインパラメータのすべてを受け取るのが長くなるため、Cドライブに直接ファイルを配置する必要があります。 (小さいプログラムでは問題ありませんが)1/3の時間で、ツールチェーンは単に停止し、もう一度「起動」を押す必要があります。それならばおそらくうまくいくでしょう…非常に信頼できません。シミュレータは起動時には見つからず、Ctrl + Alt + Deleteを押してadb.exeを強制終了してから再試行する必要があります。
無線LANネットワークでは、ライブ接続が切断され、Titaniumがクラッシュすることがあります(コンパイル/デプロイインターフェイス)。インターネットに接続していないと、サーバーにログインできないため起動しません。
CSS、HTML、jQueryはこれに比べて簡単です。チタンは他の古いGUI APIに似ています、そしてあなたはすべての単一のボタン/フィールドなどのためにいくつかのプロパティを設定する必要があります。フィールドを間違ったものにするのは簡単なことです。設定する必要があるすべてのプロパティを覚えているでしょうか。あなたは正しい場所で大文字でそれをつづりましたか? (これはコンパイラによって捕捉されませんが、その部分をテストして運が良ければランタイムエラーと見なされます)
Titaniumでは、コントロールの上に別のビューを追加したり、GUI内の他の場所をクリックしたりすると、動作がおかしくなります。
いくつかのAPIページにはAndroidシンボルがありますが、コントロールを作成しようとしたときにのみnullが返されます。シンボルにもかかわらず、彼らは単にAndroidプラットフォームで利用可能ではありません。 Androidは特定のメソッドをサポートしていないと言われることがありますが、その場合はAPI全体が欠けています。
デモアプリケーションパスが長くなりすぎるため、Eclipseプロジェクトフォルダーに入れてもコンパイルされないと述べましたか? Cドライブのルートフォルダに置く必要があります。私は現在シンボリックリンクを使っています(mklink/J ...)
ラベルを信頼できるものに変更するには、label.setText( 'Hello World')として適切に使用する必要がありますが、これはまったく文書化されていません。
Titanium.API.info( 'プリントアウトが唯一のデバッグ方法'です)。
APIはどんな良いフォーマットでも利用できないので、Eclipseの助けを借りて普通のコード補完を得ることはできません。 Aptanaを助けてください!
あなたは多くの試行錯誤をしなければならないので、それはコンパイラ/ツールがマルチスレッドではないので、速いハードドライブを持った速いコンピュータは必須です。私は貧弱な文書に言及しましたか?あなたはそれを信頼することはできませんようにあなたはそこにすべてを試してみる必要があります!
以前のプロジェクトから、時間と人手を投入するだけでは物事を直すことができないので、私は二度とクローズドソースを使用することを約束しませんでした。あなたがプロジェクトに遅れていて、厳しい締め切りを守る必要があるとき、重要です。これはオープンソースなので、ツールチェーンが壊れる理由を理解し、実際にそれを修正することもできました。
バグデータベース
またオープンです。あなたは単にあなたの一人じゃないことを見ることができて、試行錯誤に費やされた別の4時間の代わりに回避策をする。
コミュニティ
私がTitaniumで抱えていた問題の多くは、何百ものスレッド、イベント、メッセージパッシングをサポートするOSEのようなリアルタイムシステムに関する私の経歴から来ています。これは、Titanium 1.4では機能するはずですが、確実には機能しません。
Javascript(これは私にとっては新しい機能です)は、実行時エラーで黙って死にます。これはまた、変数名のスペルミスやnullポインタの読み取りなど、小さくて一般的なバグがクラッシュしなくてもデバッグできるようになることを意味します。代わりに、プログラムの一部、たとえばイベントハンドラなどが機能を停止するだけです。これは、文字の位置を誤って入力したためです。
それから、私たちはTitaniumにもっと単純なバグがあります、関数の中で働かないいくつかのパラメータのように(少なくともAndroidプラットフォームではかなり一般的です)。
試行とエラーのデバッグサイクル速度Titnium Developerを複数のコンピュータで実行したところ、ボトルネックがハードドライブであることに気付きました。ラップトップのSSDドライブは、4200 rpmドライブよりもビルドサイクルを約3〜5倍速くします。デスクトップでは、RAID 1(ストライピングモード)のデュアルドライブを使用すると、やや高速のCPUを搭載したシングルドライブよりも約25%高速に構築でき、SSDドライブのラップトップコンピュータよりも優れています。
あなたがそれを使い始めるとき、これは非常に輝きます。オープンバグトラッカーを見ると、バグの数が修正されたバグの数よりも速く増え続けていることがわかります。これは通常、バグの数を減らすことに集中するのではなく、開発者がより多くの機能を追加し続けるというサインです。
顧客のために比較的単純なアプリケーションをマルチプラットフォームに配布しようとしているコンサルタントとして - これが実際に2つのプラットフォームでネイティブアプリケーション開発を行うよりも速いかどうかはわかりません。これは、あなたがスピードを上げようとしているとき、あなたがTitaniumを使用しているときは速いのですが、突然あなたが見下ろして穴の中にいるのを発見するということです。特定の期限/時間/費用に対して特定の機能を約束することはできません。
私について:wxPythonと共に2年間Pythonを使ってきました。 JavascriptとTitaniumで使用されているスレッドモデルを理解していなかったのは私かもしれませんが、オープンディスカッションフォーラムによると、GUIオブジェクトが突然間違ったコンテキストを使用しているわけではありません。その前に私はモバイル機器のためのCとASMプログラミングの背景があります。
[編集 - バグのある部分が追加され、スレッドセーフではない] [編集 - 今は1か月以上使用されている+、ほとんどがPC上だが、一部はOS X上でも同様。 iPhoneとAndroidのデュアルターゲットを追加しました。試行とエラーのデバッグサイクル速度を追加しました。]
Corona SDK(Ansca Mobile)は、コーディング言語としてLuaを使用しています。 Luaについて詳しくは、lua.orgを参照してください。
私たちはさらなるWeb統合とネイティブUI要素を追加することを計画していますが、私たちの焦点はWebベースの技術とは対照的に、ゲーム開発のようなグラフィックを多用するアプリケーションに集中する傾向があります。言い換えれば、コロナアプリケーションを完全にJavascript/HTML/CSSで作成している人々を想定していません。
私は1週間以上チタンと仕事をしています、そして私はその弱さについて良い感じを持っているように感じます。
1)複数のプラットフォームで同じコードを使用してほしいのであれば、幸運を祈ります。 backgroundGradientのようなものが表示され、Androidのバージョンではサポートされていないことが判明するまで驚くことでしょう。それからグラデーションイメージを使うことに戻らなければなりません、コードをより簡単に正しくするために両方のバージョンのためにそれを使うかもしれませんか?
2)Titanium Android sdkでは、戻るボタンを機能させるためだけのウィンドウ、あるいはより優れたオリエンテーションイベントトラッキングを行うためのものがたくさんあります。これは、Androidプラットフォームが実際にどのように機能しているのかではなく、TitaniumがAPIを機能させるための方法です。
3)暗闇の中で投げられた物事はクラッシュするでしょう、そしてあなたはコードをコメントし始めなければなりませんそしてそれを見つけたとき、決してそれを使用しないでください。 6ヶ月以上前から問題となっていたAndroidのオリエンテーションや痕跡など、明らかなバグがいくつかあります。
4)バグ....たくさんのバグがあり、それらは報告され、数ヶ月間座って、数日で修正されます。 Androidには他にもたくさんの問題があるときに、彼らがブラックベリーモバイルSDKをリリースすることを計画しているのも私は驚いています。
5)Titanium IphoneとTitanium Android Javascriptエンジンはまったく異なります。 Android版では、リモートのjavascriptファイルをダウンロードしたり、mootoolsやjqueryなどのライブラリを含めたり使用することができます。私が自分のAndroidアプリをコンパイルし続ける必要がなかったので、私がこれを見つけたとき私は天国にいました。 Android APKのインストールプロセスはとても長くかかります!それのどれも可能ではないiPhone、またiphoneバージョンははるかに速いJavaScriptエンジンを持っています。
ネイティブのUIパーツから離れている場合は、代わりにsetIntervalを使用してグラデーションイメージを使用して向きの変化を検出し、戻るボタンを忘れて、独自のアニメーションを作成し、ウィンドウヘッダー、ツールバー、およびダッシュボードを忘れてください。あなたは本当にたくさんの書き換えを必要としない両方で動作するAPIを作ることができます。しかし、その時点ではWebアプリケーションと同じくらい低調です。
それはそれだけの価値がありますか?結局のところ、それは毎分の価値があります。ロジックを抽象化して、どこにでもあるのではなく、それぞれに異なるUIを構築することができます。チタンを使用すると、流動的なアプリケーションを作成できます。あなたは各プラットフォームの強力なレイアウト能力を失いますが、あなたが単純だと思えば、物事は単一の言語の下で行われることができます。
なぜWebアプリではないのですか?エントリーレベルの市場では、Android携帯はWebビューを生成するのが非常に遅く、より複雑なロジックを実行するために使用できるメモリを大量に消費します。
AppceleratorとPhoneGapのより最近の詳細な分析は次のとおりです。 http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap
そして、ここでそれらがプログラム的にどのように異なるかについてのさらに詳細があります: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript
ネイティブmapkitはTitaniumでサポートされています
HTML5ウィジェットをiphoneウィジェットのように見せることは1つのことですが、それらを同じようにうまく機能させることもまったく別の問題です。 html5アニメーション(普通のビュートランジションでも)のパフォーマンス、長いリストのスクロール、ジェスチャへの反応性はぎくしゃくしています。 iPhoneユーザーは違いに気づくでしょう。
さまざまなデバイスでサポートされているジェスチャの種類にも違いがあり、プラットフォーム固有のコードと使いやすさの問題も生じます。
私は今のところネイティブアプリを使い続けるつもりです。
Rhomobile Rhodes( http://rhomobile.com/products/rhodes )はPhoneGapへのアプローチが非常に似ていますが、次のものを持つ唯一のフレームワークです。
Titaniumに興味がある人にとっては、私は彼らがあまり良いドキュメントを持っていないと言わなければなりませんいくつかのクラス、プロパティ、メソッドが欠けています。しかし、その多くのサンプルアプリKitchenSinkには「文書化されている」ので、それほど悪いことではありません。
PhoneGapを私が理解しているのは、それらがJavascript APIをほとんどのiPhone APIに提供しているということです。
チタンは、Web開発者にとっては簡単なようです。これは基本的なTabViewアプリケーションを作成するための単純なXMLファイルで、コンテンツ領域内のすべてのものはHTML/JSによって制御されます。私はまた、Titaniumがいくつかのフレームワークへのjavascriptアクセス(特に位置情報、電話番号などへのアクセス)を提供していることも知っています。
アップデート:Titaniumは彼らのフレームワークのバージョン0.8にMaps APIを追加した。
Objective Cを学び、ネイティブアプリケーションをプログラムする必要があります。あなたが人生を楽にすると思うこれらの事に頼らないでください。 Appleは、最も簡単な方法はそれぞれのネイティブツールと言語を使うことであることを確認しました。 100行のJavaScriptでは、要素に応じて3行のコードでもまったくコードなしでも同じことができます。いくつかのチュートリアルを見てください - あなたがjavascriptを理解していればObjective Cは難しくありません。回避策は悲惨であり、Appleはいつでも必要なときにプラグを差し込むことができます。
あなたが言及した解決策のうち、どれもOS 3.0で導入されたMapKitフレームワークへの直接アクセスをあなたに与えるようには見えません。
Google Maps HTMLウィジェットはMapKitほど良くはないので(例としてGoogle Latitudeを参照)、おそらくネイティブCocoa touchアプリケーションを開発するか、MapKit統合を追加するために拡張できるソリューションを選択するのが最善です。 PhoneGapはこの方法で拡張可能であり(オープンソースなのでデフォルトです)、他の解決策のいくつかも同様にあるかもしれません。
編集:TitaniumはMapKitをサポートしました
私はコロナを試しました。 mp3オーディオのストリーミングがサポートされていないことがわかったまでは良かったです。それで、私はすぐそこに止まりました。私が本当にiPhoneアプリ開発者になりたいのであれば、私はobj cを学ぶべきです。私がラジオ局のリストを持っているアプリを作りたかった、そしてあなたはそれらがそれを再生し始めるそれらをクリックする。