310

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

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

他に似たような製品はありますか?それらの違いは何ですか?どちらを選ぶべきですか?

4

14 に答える 14

368

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

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

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

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

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

そのため、アプリをより「ネイティブ」な外観にすることに関心がある場合は、Titanium を選択することをお勧めします。アプリを別のプラットフォームに簡単に「移植」できるようにしたい場合は、PhoneGap の方が適しています。

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

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 の機能はほとんどありません。) Titanium Q&A: HTML と CSS はどうなりましたか?

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

Titanium ビデオ: Titanium 1.0 の新機能。

さて、Titanium 1.0 は JavaScript を「ネイティブ ビット」にコンパイルしますか? いいえ。Appcelerator は最終的に、この開発者ブログ: Titanium Guides Project: JS Environment でこの問題を解決しました。私たちプログラマーは、マーケティング部門の人間よりも誠実な人間ですよね。:-)

PhoneGap に移動します。PhoneGap について新しいことを言うことはあまりありません。私の認識では、IBM が今年後半に参加するまで、PhoneGap の開発はあまり活発ではありませんでした。一部の人々は、IBM は Nitobi よりも多くのコードを PhoneGap に提供しているとさえ主張しました。それが真実かどうかは別として、PhoneGap が積極的に開発されていることを知っておくとよいでしょう。

PhoneGap は引き続き Web テクノロジー、つまり HTML、CSS、JavaScript に基づいています。Titanium が行っているように、PhoneGap がネイティブ UI 機能を JavaScript にブリッジする計画はないようです。Web UI は、パフォーマンスとネイティブのルック アンド フィールでネイティブ UI にまだ遅れをとっていますが、そのようなギャップは急速に解消されつつあります。パフォーマンスの点でモバイル Web UI に優れた機能を提供する Web テクノロジには、次の 2 つの傾向があります。

  1. インタープリターから仮想マシンに移行する JavaScript エンジン。JavaScript は、実行を高速化するためにネイティブ コードに JIT コンパイルされたものです。Safari JS エンジン: SquirrelFish Extreme

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

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

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

あなたが(私のような) GWTプログラマーである場合は、GWT を使用してモバイル Web アプリを作成するためのオープン ソース プロジェクトであるGWT Mobileを確認することをお勧めします。これには、GWT で PhoneGap を使用できるようにする PhoneGap GWT ラッパーが含まれています。

于 2009-11-27T05:36:05.293 に答える
193

私が集めたものから、ここに2つの違いがあります:

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

  • Titanium ソースは、ネイティブ ビットにコンパイルされます。つまり、html/js/etc. 単純にプロジェクトにアタッチされ、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 が最適です。

  • 複数のプラットフォーム (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 アプリが嫌いです。iTunes App Store のレビューを読めば、ユーザーはそれらを見つけるのが得意です。名前は挙げませんが、携帯電話にはゴミのように見えて実行される "アプリ" がいくつかあります。これは、それらが UIWebView インスタンス内でホストされている Web アプリであるためです。Web アプリを使用したい場合は、Safari を開いて、そのアプリに移動します。iPhoneらしいものが欲しくてiPhoneを買いました。たとえば、おしゃれな Google Web アプリを Safari 内で使用するのには何の問題もありませんが、Google が Web アプリをネイティブ アプリとして表示することで Springboard にブックマークを忍び込ませたら、だまされたと感じるでしょう。

今行かなければなりません。私のガールフレンドは、そのコンピューターを 3 秒間使用するのをやめてくれませんか、彼女の顔に顔を向けています。

于 2009-10-04T03:49:06.100 に答える
62

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

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

API ガイドでは、この機能は Android と iPhone の両方で利用できると主張していますが、そうではありません。多くのものは、プラットフォームの 1 つで機能しません。動作が異なるものもあります。

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

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

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

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

ネットワーク接続

Wi-Fi ネットワークでは、ライブ接続が失われ、Titanium がクラッシュすることがあります (コンパイル/デプロイ インターフェイス)。インターネット接続が機能していない場合、サーバーにログインできないため起動しません。

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 は適切な形式で利用できないため、Eclipse でヘルプなどを使用して通常のコード補完を行うことはできません。アプタナ助けてください!

ハードウェア

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

いくつかの肯定的なこと

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

  • バグデータベース

  • こちらも開いています。試行錯誤にさらに 4 時間を費やすのではなく、一人ではないことを確認して回避策を実行するだけです。

  • コミュニティ

  • 彼らのフォーラムで活動しているようです。

バグ

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

私が Titanium で経験した問題の多くは、何百ものスレッド、イベント、およびメッセージ パッシングをサポートする OSE のようなリアルタイム システムのバックグラウンドに起因しています。これは Titanium 1.4 で動作するはずですが、確実に動作するとは限りません。

  • Javascript (これは私にとっては初めてのことです) は、実行時エラーで静かに停止します。これはまた、変数名のスペルミスやヌルポインターの読み取りなど、小さくて一般的なバグがクラッシュする必要があるときにクラッシュしないため、デバッグできることも意味します。代わりに、文字の配置/タイプミスにより、プログラムの一部、たとえばイベントハンドラーが機能しなくなります。

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

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

概要

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

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

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

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

[編集 - バグのある部分を追加し、スレッドセーフではありません] [編集 - 現在、主に PC で、一部は OS X でも 1 か月以上使用しています。iPhone と Android のデュアル ターゲティングを追加しました。試行錯誤のデバッグ サイクル速度を追加しました。]

于 2010-10-25T17:25:24.143 に答える
25

Corona SDK (Ansca Mobile) は、コーディング言語として Lua を使用しています。Lua の詳細については、lua.org を参照してください。

Web 統合とネイティブ UI 要素をさらに追加する予定ですが、Web ベースのテクノロジではなく、ゲーム開発などのグラフィックスを多用するアプリケーションに重点を置く傾向があります。つまり、Javascript/HTML/CSS だけでコロナ アプリを作成する人は想定していません。

于 2010-01-11T23:30:33.163 に答える
18

私は Titanium を使って 1 週間以上経ちますが、その弱点については良い感触を得ています。

1) 複数のプラットフォームで同じコードを使用したい場合は、頑張ってください! backgroundGradient のようなものが表示され、Android バージョンがサポートしていないことがわかるまで驚かれることでしょう。次に、グラデーション画像の使用に戻す必要があります。コードを簡単にするために、両方のバージョンで使用することもできますか?

2) 多くの奇妙な動作。Titanium android SDK では、「重い」ウィンドウが何であるかを理解して、戻るボタンを機能させたり、オリエンテーション イベントの追跡を改善したりする必要があります。これは Android プラットフォームの実際の方法ではなく、Titanium が API を機能させようとしている方法です。

3) 暗闇に放り込まれ、物事がクラッシュし、コードのコメントを開始する必要があり、それを見つけたら決して使用しないでください。Android の向きやパーセントなど、6 か月以上にわたって問題となっている明らかなバグがあります。

4) バグ .... 多くのバグがあり、それらは報告され、数か月間放置され、数日で修正されます。Androidには他にも多くの問題があるのに、彼らがBlack berryモバイルSDKをリリースすることさえ計画していることに驚いています.

5) Titanium Iphone と Titanium Android の JavaScript エンジンは完全に異なります。Android バージョンでは、リモート JavaScript ファイルをダウンロードし、mootools、jquery などのライブラリをインクルードして使用できます。Androidアプリをコンパイルし続ける必要がなかったので、これを見つけたときは天国にいました。Android apk のインストール プロセスに時間がかかりすぎます。Iphone ではそのどれも可能ではありません。また、iPhone バージョンにははるかに高速な JavaScript エンジンが搭載されています。

多くのネイティブ UI パーツから離れている場合、つまり、代わりに setInterval を使用して向きの変化を検出し、グラデーション イメージに固執し、戻るボタンを忘れ、独自のアニメーションを作成し、ウィンドウ ヘッダー、ツールバー、およびダッシュボードを忘れます。多くの書き換えを必要としない、両方で動作する API を実際に作成できます。しかし、その時点では、ウェブアプリと同じくらい遅くなります。

それで、それは価値がありますか?すべての痛みの後、毎分価値があります。ロジックを抽象化し、どこにでもある場合ではなく、それぞれに異なる UI を構築することができます。Titanium を使用すると、高速に感じられる流動的なアプリケーションを作成できます。各プラットフォームの強力なレイアウト機能は失われますが、シンプルに考えれば、単一の言語で物事を行うことができます。

なぜウェブアプリではないのですか?エントリー レベルの市場の Android 携帯電話では、Web ビューの生成が非常に遅く、より複雑なロジックを実行するために使用できる大量のメモリが消費されます。

于 2011-03-22T21:51:46.630 に答える
10

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

于 2011-04-21T02:03:28.133 に答える
9

ネイティブ マップキットは Titanium でサポートされています

于 2010-01-01T05:52:35.543 に答える
8

HTML5 ウィジェットを iPhone ウィジェットのように見せることは 1 つのことですが、同じようにうまく機能させることはまったく別の問題です。html5 アニメーションのパフォーマンス (プレーンなビュー トランジションでも)、長いリストのスクロール、ジェスチャへの応答性がぎこちなく感じられます。iPhoneユーザーは違いに気付くでしょう。

また、さまざまなデバイスでサポートされているジェスチャの種類にもいくつかの違いがあり、その結果、プラットフォーム固有のコードや使いやすさの問題も生じます。

私は今のところネイティブアプリにとどまると思います。

于 2010-02-17T03:11:56.327 に答える
7

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) は、アプローチが PhoneGap に非常に似ていますが、以下を備えた唯一のフレームワークです。

  1. Model View Controller パターン (ほとんどの Web フレームワークが提供するもの)
  2. オブジェクト リレーショナル マネージャー
  3. すべての一般的なスマートフォンのサポート (Windows Phone 7 を含む)
  4. ホストされた開発サービス (ホストされたビルドだけではない): http://rhohub.com
  5. RhoStudio IDE の完全なデバッガーと SDK を使用しないエミュレーター
  6. 同期されたオフライン データのサポート
于 2011-05-10T21:29:05.210 に答える
6

Titaniumに興味のある人は、クラス、プロパティ、メソッドの一部が欠落しているため、非常に優れたドキュメントがないことを言わなければなりません。しかし、サンプルアプリのKitchenSinkには多くのことが「文書化」されているため、それほど悪くはありません。

于 2010-06-07T08:35:48.780 に答える
5

PhoneGap についての私の理解では、iPhone API の多くに Javascript API が提供されています。

Titanium は、Web 開発者のバックグラウンドにとってより簡単に思えます。基本的な TabView アプリケーションを作成するための単純な XML ファイルであり、コンテンツ領域のすべてが HTML / JS によって制御されます。また、Titanium が一部のフレームワークへの JavaScript アクセス (特に位置情報、電話 ID などへのアクセス) を提供していることも知っています。

更新: Titanium は、フレームワークのバージョン 0.8 に Maps API を追加しました。

于 2009-10-26T21:35:53.160 に答える
4

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

于 2009-11-14T04:30:41.170 に答える
3

あなたが言及したソリューションのうち、OS 3.0 で導入された MapKit フレームワークに直接アクセスできるものはないようです。

Google マップの HTML ウィジェットは MapKit ほど優れていないため (例として Google Latitude を参照)、ネイティブの Cocoa タッチ アプリケーションを開発するか、MapKit 統合を追加するために拡張できるソリューションを選択することをお勧めします。PhoneGap はこのように拡張可能であり (オープンソースであるため、デフォルトで拡張可能です)、他のソリューションのいくつかも拡張可能です。

編集: Titanium が MapKit をサポートするようになりました

于 2009-09-27T07:05:59.330 に答える
1

コロナ試しました。mp3 オーディオのストリーミングをサポートしていないことがわかるまでは、これでよかったのです。だから、私はそこで止まった。本当にiPhoneアプリの開発者になりたいのなら、obj cを学ぶべきだと思います。ラジオ局のリストがあり、クリックすると再生が始まるアプリを作りたかっただけです。

于 2011-01-29T03:17:52.947 に答える