Ahhhmmmm...私の答えがstackoverflow管理者によって削除されるかどうかはわかりません。ごめんなさい、私はあなたがこの長い応答を読むのに数分かかるでしょう(あなたが読み続けることに興味があるなら)。
私は2010年に自分の会社を始めました。私たちは、php、mysql、html、jqueryベースのWebサイトのみに取り組みました。モバイルプラットフォームの注目が高まるにつれ、Sencha Touch+PhoneGapベースのモバイルアプリの開発に着手しました。2011年後半、私は12人の開発者をSencha Touch+PhoneGapでトレーニングしました。新しいフレームワークで12人の開発者のチームを学び、訓練することがどれほどの努力であったかを理解できます。
20以上のプロフェッショナルなPhoneGapベースのアプリを開発した後、ネイティブアプリからはほど遠いことに気づきました。1つの例だけで十分です。PhoneGapアプリは、最初のhtmlページをWebビューにロードするのに時間がかかりました。スプラッシュ画面の直後に空白の白い画面が表示されました(Androidではもっとひどいです!)。最近のphonegapバージョンでは、修正されています。しかし、phonegapを使用している人は、実際のobj-cアプリからどれだけ離れているかをよく知っています。PhoneGap +SenchaTouchフレームワークで1年間働きました。
PhoneGapでの作業をやめ、Titaniumで12人の男性の学習とトレーニングを開始しました。別の新しいフレームワークを最初から始めるのがどれほど大変だったかを知っています。私たちはチタンを2年間使用し続け、iOSとAndroidの両方でチタンで30以上の成功したプロフェッショナルアプリを開発しました。チタンモジュールの開発に精通しました。たとえば、iOSとAndroidの両方でPayPalチタンモジュールを開発しました。(あなたは笑っているに違いありません、それについてとても素晴らしいことは何ですか!それはすでにチタンチームによって開発されています)。いいえ、古いMPLライブラリを使用していません。最新のPaypalsdk2.8.0を使用しましたが、それを使用してオンラインで利用できるモジュールはありません。
2014年半ばに、Tinder/Lovooクローンタイプのアプリの開発を開始しました。同様のアニメーション用のtiモジュールを開発しました(UIView drawRectを実装することにより)。すべてが正常に機能していました。しかし、iPhoneで実行すると、デバイスが過度に熱くなり、アニメーションページでバッテリーが劇的に消耗しました。サンプルのデモXcodeアプリを作成し、同じアニメーションを適用し、Instrumentsでテストしましたが、すべて問題ありませんでした。メモリやプロセッサに過負荷はなく、デバイスはクールなままで、バッテリーのパフォーマンスは良好でした。チタンモジュールでそれをより良くするために可能な限りの方法を試みましたが、運がありませんでした。最終的に発見されたチタン自体は、独自のかさばるフレームワークを実行するために膨大なフットプリントを必要とし、すべてのアクションに対して、多くのプロキシイベントを発生させ、不要なイベントをリッスンし続けます。複雑なUIViewアニメーションはそれを夢中にさせます。これは単なる例です。Androidでは長い話です。
なぜ企業はチタンを使用することにしましたか?最初の答えは、クロスプラットフォームです。jsでコーディングするだけで、iOSとAndroidの両方で実行されます。ハハ..そのような冗談!これは、実際のプロのアプリには当てはまりません。Androidバージョンには多くの違いやバグがあり、Androidバージョンではさらに多くの作業が必要です。そして実際には、Android用に同じiOSコードベースの正確なコピーを使用することはできませんでした。そのため、クロスプラットフォームの理論はクラスプロジェクトにのみ当てはまります。私が画像をキャプチャするための単純なチタンAndroidプロジェクトを作成していると思わない場合は、サーバーにアップロードしてから、サーバーから再度表示してください。ギャラクシーS5を撮り、横向きモード(右側のホームボタン)で写真(ポートレートモードではない)を撮ると、画像の向きが乱れることがわかります。おー!サーバーに画像をアップロードすると、チタンのAndroidアプリから画像拡張子が.txtになるのを忘れてしまいました
Obj-Cでは、UINavigationController popToRootViewControllerAnimatedメソッドは、ホームページに戻るための重要な機能です。この方法はチタンでは利用できません!
この種の厄介な問題を修正するために、何百時間も余分に費やしました。私の開発チームはチタンにうんざりしていました。
確かにあなたは今私に尋ねるつもりです、なぜ私たちは最初にObj-Cを始めなかったのですか?答えはすべてのチタン開発者から同じです-Javascriptは簡単で、Web開発者はすでにそれに精通しています。これは大きな間違いです。iPhoneアプリをWebアプリとしています。WebアプリはWebブラウザーで実行され、特にiPhoneではiPhoneのSafari内で実行されます。「Safari」自体はモバイルアプリであり、Webアプリケーションは同じペースで同様のビジュアルアニメーションとして実行される必要がありますが、これは不可能です。CSS3アニメーションは、iOSベクトルベースのUIViewアニメーションと同じになることはありません。
iOSはフレームワークやライブラリではなく、オペレーティングシステムです。Titaniumは、Obj-Cで記述されたフレームワークです。XcodeのストーリーボードUIデザインツールをチタンで使用することはできません。Xcode開発者は、UIインターフェイス設計の「制約」がいかにセクシーかを知っています。そして、制約を使用するというこの視覚的な魅力は、Titaniumにはまったくありません。tiチームは、Ti.UI.FILL / SIZEなどを使用して制約処理を実行できると主張していますが、ネイティブのObj-Cに移行した後、この制約システムがいかに強力であるかがわかります。
髪の毛を抜いて、角かっこを使ったObj-C構文を見て怖くなり、チタンに戻った理由を後悔しています。Obj-Cのなじみのない構文を見ているだけで、現代に何十年も戻っているように感じます。Swiftがあり、Xcodeでのコーディングがはるかに簡単になったことは幸運です。AFNetworking、MBProgressHUD、OpenCVなどの既存の人気のある強力なObj-CライブラリをSwiftに移行するには、しばらく時間がかかります。
正直なところ、Titanium、PhoneGap、Xamarinなどのクロスプラットフォームフレームワークは禁止されるべきだと本当に感じています。彼らの免許はやめるべきです。チタンは、ネイティブiOSまたはAndroidでは利用できない追加機能を提供しますか?代わりに、機能がはるかに少なくなり、バグが増えます。なぜ、この最新の最先端技術で人々を昔に引き戻しているのか、そして彼らを止める人は誰もいないのか、私にはわかりません!開発者を間違った方向に導くことはどのように合法でしょうか?iOS 9が「本日」リリースされた場合、Titaniumは来週中にすべての新しいAPIを提供しますか?一度もない。彼らはあなたを引き止め、バグのあるAPIの限られたセットを使用するように拘束します。モジュールの料金を支払う必要があります。これは、ネイティブコードで簡単に実行できます。
論理的な意味でJavaScriptをよく知っているなら、非常に短時間でObj-Cを学ぶことができると信じてください。チタンの問題のデバッグを失う時間と労力によって、ネイティブのObj-Cでより効率的になることができます。うーん..アンドロイドについて私はそれほど高くは言いません。CosAndroidはiOSと比較できることはありません。iOSは、定評のあるデスクトップオペレーティングシステムであるMacOSから生まれました。そして、あなたはアンドロイドについて知っています。
クロスプラットフォームのジレンマの罠にはまらないでください。Titanium APIのロードはiOS専用です。理由はご存知のとおり、Androidデバイスは安価で、ハードウェアは安価で、アニメーションをスムーズに実行できません。
最後に、あらゆる種類のプラットフォームから離れて、純粋なネイティブOSに固執します。最初はどんなに困難であっても、長期的には十分な見返りが得られます。信じてください。
Titaniumチームに、Obj-CとJavaのソースコードを確認しました。私はあなたたちを尊敬しています、あなたは確かに非常に専門家であり、Obj-C、Java、node.js、python、javascriptで十分な経験があります。しかし、なぜ?なぜ人々を間違った方向に導いているのですか?あなたはチタンのandroid/iosモジュールを構築してそれをテストするのにどれだけの時間が無駄になっているのかよく知っています。もっと良いものに力を入れてみませんか。