コロナ、フォンギャップ、チタンの比較


310

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

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

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


1
iPhoneは、2011年6月の時点でアプリを生成することができアドビFLEXもあり、adobe.com/products/flex
neoneye

1
見てみな。ここにおいはポイント比較です。savagelook.com/blog/portfolio/...
Hikmatカーン

回答:


368

投票数の多い回答にコメントするためだけに、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には、あらゆる種類のネイティブUIコントロールを作成および制御するためにJavaScriptで呼び出すことができる包括的なUI APIがあります。これらのUI APIを利用して、TitaniumアプリはPhoneGapアプリよりも「ネイティブ」に見えます。次に、PhoneGapは、Titaniumよりも多くの携帯電話プラットフォームをサポートしています。PhoneGap APIはより一般的で、iPhone、Android、Blackberry、Symbianなどのさまざまなプラットフォームで使用できます。Titaniumは、主にiPhoneとAndroidを主に対象としています。一部のAPIはプラットフォーム固有です(iPhone UI APIなど)。

したがって、アプリの懸念がアプリをより「ネイティブ」に見えるようにすることである場合は、チタンの方が適しています。アプリを別のプラットフォームに簡単に「移植」できるようにしたい場合は、PhoneGapが適しています。

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

2010年4月12日更新: この投稿を毎年レビューして情報を最新に保つことにしました。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は、引き続きHTML、CSS、JavaScriptなどのWebテクノロジーを基盤としています。PhoneGapは、TitaniumのようにネイティブUI機能をJavaScriptにブリッジする計画を持っているようには見えません。Web UIは、パフォーマンスとネイティブのルックアンドフィールにおいてネイティブUIよりも遅れていますが、そのようなギャップは急速に埋められています。パフォーマンスの点でモバイルWeb UIの優れた機能を保証するWebテクノロジーには、2つの傾向があります。

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

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

デスクトップブラウザに起因するこのような改善は、モバイルブラウザにすばやく配信されています。実際、iOS 3.2およびAndroid 2.0以降、モバイルWebビューコントロールのパフォーマンスが向上し、HTML5フレンドリーになりました。モバイルWebの未来は非常に有望であり、町に大きな子供を引き付けています。JQuery MobileがUIガジェットを提供し、PhoneGapが電話機能を提供することで、これら2つを組み合わせることで、完璧なモバイルWebプラットフォームが作成されると私は考えています。

Sencha Touchについても触れておきます、別のモバイルWeb UIガジェットフレームワークとしてます。Sencha Touchバージョン1.0は、GPLv3を含むデュアルライセンスモデルで最近リリースされました。Sencha Touchは、JQuery Mobileと同じようにPhoneGapでうまく機能します。

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


10
「PhoneGapはWebアプリのネイティブラッパーだけではない」次に、ネイティブデバイス機能へのアクセスについて説明します。「PhoneGapがそれ以上に提供するものは、JavaScriptとネイティブデバイスAPIの間のブリッジです。したがって、PhoneGap APIに対してJavaScriptを記述し、PhoneGapが適切な対応するネイティブ呼び出しを行います。その点で、プレーンな古いWebアプリのデプロイとは異なります。」私の声明に反論するためだけに登録した場合、あなたはそれを完全に読んだはずです。投稿が長いのはわかっていますが、それでも...
Rory Blyth

5
私はもっ​​と明確だったかもしれませんが、デバイスごとにができるが時間とともに変化するため、どのAPIの詳細が複雑になりました(多くの点で改善されていますが、さまざまなプラットフォームの機能マトリックスにはかなりの改訂が行われています)。私は重要な違いの1つについて書きました、そして私が書いたものは正しいです-実際、それはあなたが書いたものと一致しています。アクセスできるAPIについてさらに詳しく説明しました。
Rory Blyth

9
Titaniumと「ネイティブビット」については、私のサイトのAppceleratorのフロントページでこれを読んでいたことが間違いだったと思います。「ピークパフォーマンスのためにTitaniumをネイティブコードにコンパイルしているので、うまく動作します。」おそらくあなたは彼らに彼らが間違っていることを知らせるために彼らに手紙を書くべきです。確認してください:tinyurl.com/yzlzvk5
Rory Blyth

6
詳細については、Titanium FAQを確認してください。最初のトピック「これらのモバイルWebアプリケーションまたはネイティブモバイルアプリケーションはありますか?」では、この問題を簡潔に説明しています。私はここで引用を再投稿しますが、彼らは彼らの製品の当局であると私は信じているので、あなたはむしろ会社から直接それを入手したいと思います:tinyurl.com/ya9topg
Rory Blyth

4
デニス、素晴らしい答えをありがとう。あなたはまだチタンで開発していますか?1.7が上陸した今、コメントできますか?
PaulM '20 / 06/20

193

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

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

  • チタンのソースはネイティブビットにコンパイルされます。つまり、html / js / etcなどです。単にプロジェクトにアタッチされてWebブラウザーコントロール内でホストされるだけでなく、ネイティブアプリに変換されます。つまり、たとえば、アプリのインターフェースはネイティブ UIコンポーネントで構成されます。ネイティブアプリを使用せずにネイティブのルックアンドフィールを取得する方法はいくつかありますが、...まあ...結局のところ悪夢のようです。

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アプリはネイティブアプリになります-それらはウェブ開発技術を使用して開発されただけです。

これは実際にはどういう意味ですか?

  1. Aチタンアプリがします見て、最終的には、それがあるため、「本物」アプリのようである「本物」のアプリ。

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

どちらがあなたにぴったりですか?

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

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

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

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

あなたは確かにあなたのウェブホストされたウェブアプリへのアクセスに課金することができますが、実際にそれを行うためにプロセスを通過する人は何人ですか?App Storeでアプリを選び、[購入]ボタンをタップしてパスワードを入力すれば完了です。インストールします。数秒後、私はそれを使用しています。他の誰かの1回限りのモバイルWebトランザクションインターフェイスを使用する必要があった場合、それはおそらく私の名前、住所、電話番号、CC番号、およびその他の私が取り出したくないものを取り出さなければならないことを意味します。 tそれを通り抜ける。また、私はAppleを信頼しています-Steve Jobsが私の情報をログに記録せず、悪質な雑誌の購読をキックのために私のCCに請求することはないと確信しています。

とにかく、Web開発技術が関係しているという事実を除いて、PhoneGapとTitaniumは非常に異なります-表面的には同等であるだけです。

私はWebアプリが嫌いで、iTunes App Storeのレビューを読んだら、ユーザーはそれらを見つけるのがかなり上手です。名前は付けませんが、携帯電話にゴミのように見えて実行される「アプリ」がいくつかあります。それは、UIWebViewインスタンス内でホストされるWebアプリだからです。Webアプリを使用したい場合は、Safariを開いて、そこに移動します。iPhone-yなものが欲しいのでiPhoneを購入しました。たとえば、Safari内でおしゃれなGoogle Webアプリを使用しても問題はありませんが、GoogleがWebアプリをネイティブブックマークとしてSpringboardに表示しただけでは、だまされたような気がします。

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


22
答えの問題は、ほとんどが間違っていることです。以下のDennisJZHの回答を参照してください。
jbwiv 2009

9
@jbwiv-あなたのコメントの問題は、ほとんどがDennisJZHの回答に基づいていることです。以下の私の回答を参照してください。さらに混乱を避けるために、製品の公式ドキュメントを確認することと、私の投稿全体を読むことをお勧めします。どうもありがとうございました。
ロリーブライス

15
@マシュー-ああ、間違いなくgfが優先されます:)これらの質問は基本的に変更が発生するために無関係です(私があなたの意味を誤解した場合、私はお詫び申し上げます)。地球は燃料を燃やして膨張し、私たちの惑星を破壊するので、地球は将来、太陽によって調理されようとしているので、これは問題ではないと主張することができます。
Rory Blyth、2010年

2
@マシュー-また、この人新しいことに挑戦していきます。それはあなたが好む方法ではないかもしれませんが、それはまだ新しいです。iPhoneの開発についてはまだ学ぶ必要があります(UIガイドラインなどのドキュメントを読んでください)。価値が見当たらないという理由だけで、誰かが何かを成し遂げることをやめようとする正当な理由はありません。たとえば、キノコは嫌いですが、他の人に食べられないようにしないでください。私はサフランが大好きなのと同じようにキノコが好きだということを理解しています。サフランを好きではないからといって、だれにも私からサフランを奪われてほしくないのです。
Rory Blyth

1
ええ、でも、あなたが本当のウェブテクノロジーウィザードだとしたら、誰もあなたの「ウェブアプリ」が実際にはネイティブアプリではないことに気付くことはないでしょう。アプリがUIWebViewにラップされた「Webアプリ」であることが明らかな場合、それは作成者が時間をかけなかったか、十分に高い品質にするのに十分気を配っていなかったことを意味します。
trusktr '18 / 10/18

62

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

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

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

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

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

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

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

ネットワーク接続

wifiネットワークでは、ライブ接続が失われることがあり、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( 'Printouts is a only way to debug');

編集

APIは適切な形式で利用できないため、Eclipseのヘルプなどで通常のコード補完を取得することはできません。アプタナは助けてください!

ハードウェア

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

いくつかの肯定的なこと

  • オープンソース
  • 以前のプロジェクトから、時間と人力を投入するだけで問題を解決することはできないので、自分が再びクローズドソースを使用しないことを約束しました。プロジェクトに遅れ、厳しい納期を守る必要がある場合に重要です。これはオープンソースであり、ツールチェーンが壊れて実際に修正される理由を確認できました。

  • バグデータベース

  • また、開いています。あなたは単にあなただけではなく、試行錯誤にさらに4時間を費やす代わりに回避策を実行していることがわかります。

  • コミュニティ

  • フォーラムでアクティブになっているようです。

バグ

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

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

  • Javascript(私にとっては新しい)は、実行時エラーが発生すると警告なしで終了します。これはまた、変数名のスペルミスやnullポインターの読み取りなどの小さな一般的なバグが、必要なときにクラッシュしないため、デバッグできることを意味します。代わりに、イベントハンドラなどのプログラムの一部が機能しなくなります。

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

  • 試行錯誤のデバッグサイクル速度複数のコンピューターでTitnium Developerを実行したところ、ボトルネックがハードドライブであることに気付きました。ラップトップの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のデュアルターゲティングが追加されました。Trial and Errorデバッグサイクル速度を追加しました。]


1
Titaniumの1.4リリースでは、Titaniumから提供された.apkファイルを調べましたが、それらはあまり良くありません。それらは機能しますが、完全なビルドディレクトリは、そこで圧縮されているようなものです。これは、スプラッシュスクリーンをビルド中に3つの異なる場所にコピーするようなマイナーなビルドの欠陥が突然消費することを意味します。そして、これはhello-worldの非常に単純なバリアントのためのものです。JavaScriptのソースコードもビルドと.apkファイルにコピーされ、すべての顧客に配信されます。
user288299 2010年

リリース1.5がリリースされ、Androidプラットフォームの大幅な書き直しになると言われています。私は今、ネイティブAndroid開発を学ぶ必要があるので、これをテストしません。
user288299 2010

リリース1.5がリリースされ、Androidプラットフォームの大幅な書き直しになると言われています。私たちは今、ネイティブのAndroid開発を学ぶことに移ったので、これをテストしません。今日、ネイティブAndroidのライフサイクルについて説明したので、可変コンテンツが2回目に表示されなくなったときにウィンドウで発生した問題は、TitaniumがライフサイクルのonPause()状態の前に状態を保存しないことが原因であると考えています。developer.android.com/guide/topics/fundamentals.html#lcycles。Titanium.Map.MapView.hide()以降のshow()を呼び出すと、マップのローカル変数が
強制終了さ

1
1.7で遊んだだけで、あなたの説明はとても正しいです。このプラットフォームは非常にヒットし、ミスしており、恐ろしいパフォーマンスと検索に関する無数の作業時間があります。プロジェクトの開始時にリソースがある場合は、プラットフォームごとにネイティブをビルドします。
Jonathon Kresner、2011

25

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

さらにWeb統合とネイティブUI要素を追加する予定ですが、Webベースのテクノロジではなく、ゲーム開発などのグラフィックスを多用するアプリケーションに重点を置く傾向があります。言い換えれば、私たちは完全にJavaScript / HTML / CSSでCoronaアプリを書く人々を想定していません。


ネイティブUIスクリプトの計画または時間スケールはありますか?Luaとはかなりやりましたが、Coronaは本当に好きになりたいです。ゲーム以外の開発では、Titaniumは少し先のようです。
uroc、

4
こんにちは、ウロック。リリース1.1(今週後半にETA!)にネイティブUI機能が追加されました。ただし、私のチタンの感覚は、彼らが多数のネイティブUI要素を公開するという素晴らしい仕事をしたことに対して、アニメーションとレンダリング機能により多くのエンジニアリングの努力を押し込みながら、最も重要なUI要素に焦点を合わせるつもりであるということです。理由は、(i)UIのみのアプリにはすでに優れた製品があること、(ii)UIはCocoaの最も親しみやすい部分(比較的言えば!)ですが、(iii)OpenGLアニメーションに関連するものはすべて、iPhoneの問題点です。瞬間。
Evan Kirchhoff、

コロナはアプリの代わりにゲームを開発するのに適しているようですが、そうですか?
anticafe 2010年

18

私は今から1週間以上チタンと仕事をしていて、その弱点をよく感じているように感じます。

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

2)奇妙な動作がたくさんあります。Titaniumandroid sdkでは、「重い」ウィンドウとは、戻るボタンを機能させるためだけのもの、またはより優れた方向イベントトラッキングを理解するために必要です。これは、Androidプラットフォームが実際にそうであるようにではなく、TitaniumがAPIを機能させる方法です。

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

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

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

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

それは価値があるのでしょうか?すべての苦痛の後、それは毎分価値があります。ロジックを抽象化して、どこか他の場所に移動するのではなく、それぞれに異なるUIを構築できます。チタンを使用すると、流動性のあるアプリケーションをすばやく作成できます。各プラットフォームの強力なレイアウト機能は失われますが、シンプルだと思えば、物事は単一の言語で実行できます。

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




8

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

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

私は今のところネイティブアプリを使い続けると思います。


7

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

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

6

Titaniumに興味がある人は、いくつかのクラス、プロパティ、メソッドが不足しているため、十分なドキュメントがないと言わざるを得ません。しかし、サンプルアプリのKitchenSinkには多くのものが「文書化」されているので、それほど悪くはありません。


5

PhoneGapについての私の理解は、それらが多くのiPhone APIにJavaScript APIを提供しているということです。

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

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


「チタンはウェブ開発者のバックグラウンドにとっては簡単に思えます。」ステートメント。ネイティブより簡単ですか?PhoneGapは、TitaniumよりもWeb開発者のバックグラウンドを持つ人とより一致しているようです...
Serhiy

4

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


3
アップルはプラグを抜くかもしれません...それは私が心配していることです
ミッキーシャイン

6
引用:「アップルは、ネイティブツールと言語を使用するのが最も簡単な方法であることを確認しました。」彼らは本当にそうではありません。彼らがそれをしたいなら、彼らは、例えば、Pythonサポートを提供するでしょう。ガベージコレクションがあるはずです(それだけでクラッシュの頻度が減ります-ほとんどのiPhoneアプリはひどく書かれています)。私はObjCを掘り、あなたのように、jsではなくそれを使用したいのですが、それはopの質問ではありませんでした。また、MonoTouchはこれらのどのオプションよりも開発を容易にします。プロパティは1行で作成できます。1行でDocumentフォルダーへの参照を取得します。アップルのビットは大幅に改善される可能性があります。
Rory Blyth、

6
良い解決策は、Appleが独自のObjC代替を提供することです。ObjCの制御のレベルを必要としないアプリのための何か。特に、開発者が参照カウントやプロパティ属性ではなく機能に重点を置く必要があるエンタープライズアプリの場合。または、少なくともXcodeとコンパイラを使用してそのほとんどを自動化します。特定の仮定を可能にし、開発者が選択するコードでバイパスできるスイッチを提供します(例:デフォルトでオブジェクトプロパティを保持および@合成します-そして、「実際の」ObjC 2.0のように、バッキングローカルを作成します私のために)。その他
Rory Blyth

2
基本的に、あなたが言っていることは、iPhoneアプリをC#で記述してみましょう。:)
ジャスティン

3

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

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

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


ありがとうございました。しかし、PhoneGapとTitaniumの間に本質的な違いはありますか?
ミッキーシャイン

1
MapKitは、かなり前からTitaniumでネイティブに利用できます。
jhaynie、

@jhaynie:ありがとう。私はこの回答を修正して、Titaniumが現在サポートしていることを反映しました(9月に書かれたときはそうではありませんでした)
rpetrich

1

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


2
MP3ファイルを再生コロナサポート(developer.anscamobile.com/reference/index/mediaplaysound
リュックStepniewski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.