8

基本的に私はあなたのアドバイスが必要です私の良いスタックの友達:D

過去6か月間、私はTitaniumAppceleratorモバイルフレームワークを使用してiOSアプリを探索/学習/開発しています。私の経験はほとんど良いかとても良いです。

チタンのいくつかのマイナス部分は、特にデバイスでテストする場合、時間を構築することになります。Xcode(ネイティブ)のみを使用する場合、アプリはデバイス上ですぐに起動しますが、Titaniumを使用する場合は、アプリがビルドされてからデバイス(iTunesまたはiPhone構成)にインストールされるまでしばらく(1〜2分)待つ必要があります。効用)。

基本的に、ネイティブで実行できることはすべて、Javascript+Titaniumで実行できます。TitaniumがiOSフレームワークの一部をサポートしていない場合は、ネイティブのObjective-Cモジュールを構築し、それらの機能をJavascriptコードに含めることができます。

Titanium Appceleratorを使用し、Javascriptを使用してアプリを構築することは非常に快適です。また、iOS用のいくつかのモジュールを構築しながら、いくつかのObjective-Cを学びました。例えば。私が最初のiOSアプリSpelleryで使用しDeviceMotion

今の質問

ほとんどの企業はネイティブ開発者のみを望んでおり、Titaniumに懐疑的です。Titaniumは、他のクロスプラットフォームSDK(PhoneGapなど)とは異なります。ここでは、実際にネイティブコンポーネント(ボタン、ラベルなど)を使用し、アプリがWebViewで実行されていないためです。しかし、会社がネイティブを望んでいる場合、チタンを使用するように強制することはできません。

私は仕事としてモバイルアプリを開発したいので、チタンの集中的な調査の最後の6か月を投げて、それらのアプリをネイティブにプログラミングすることを学ぶべきですか?

両方を学んだり完成させたりしても意味がないので、これについてどう思いますか?

私は今AppceleratorTitaniumの大ファンなので、これは非常に重い決断です。

4

7 に答える 7

11

率直に言って、私はまだもう少しObjective-Cを学ぶことを提案します。これは非常に強力な言語であり、Appleが必需品と見なす多くのこと(アニメーション、永続性、データベース、MVCなど)を簡単に行えるように設計されています。AppleはObjective-Cを中心にフレームワークを非常に緊密に設計しており、それらを実際にうまく使用するには、それらの言語からフレームワークを使用する必要があります。また、他にどのような言語を知っていますか?私は、C / C ++とスクリプト言語(Ruby)から来た後、Objective-Cがはるかに簡単であることに気づきました。それはすべて、アプリにどれだけのiOSネスが必要かによって異なります。Titaniumは、ユーザーエンドにiOSyを感じさせることができますが、iOSyコードは、実際には、作成および保守するのが非常に楽しいものです。それは非常に美しいフレームワークになる可能性があります。

于 2012-06-27T14:12:53.293 に答える
6

私は以前の回答で述べられたすべてに同意します、そしてあなたは明るい側に戻ることを受け入れたようです-良い選択です!

これを追加したいと思います。これらの6か月が無駄になっていると見なさないでください。Titaniumを使用している間、iOSの可能性と制限だけでなく、多くの技術的な詳細を学びました。これは、Objective-Cに切り替えるときに役立つはずです。

于 2012-06-27T14:58:55.230 に答える
6

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モジュールを構築してそれをテストするのにどれだけの時間が無駄になっているのかよく知っています。もっと良いものに力を入れてみませんか。

于 2014-12-29T10:11:31.637 に答える
4

他の多くの人が他の「重複した」質問への投稿や彼ら自身の怒り狂う意見でチャイムを鳴らすでしょう。だから私はそれを彼らに任せて、私自身の経験を提供します。

両方を深く知るのには十分な理由があると思います。理由は次のとおりです。

Titaniumを使用すると、アプリを非常に迅速に作成でき、日々ますます堅実になっています。私は最近、Titanium、ネイティブ、およびいくつかの競合他社のフレームワーク間で開発時間を直接比較するアプリを作成しました。ネイティブは約1週間半でした。競合他社は約2週間でした。チタンは3日でした。そのため、アプリを試して、競合他社よりもはるかに優れた製品を作るために多くの時間を費やすことができました。また、AndroidとモバイルWebでも同様に機能させることができました。プラットフォームベースの条件文が約5つあったので、コードのパリティは良好でした。

ネイティブには、あなたが育てた利点があります。プラットフォームが提供するものなら何でもアクセスできることを付け加えておきます。ネイティブを知っていると、(JavaScriptを使用している場合でも)アプリを構築する方法と、それらのアプリのモジュールを構築する方法がわかります。また、Titaniumが生成するXcodeプロジェクトを開いて、それを介してデバイス上で直接実行してみることもできます。(Xcodeで)クリーンビルドを実行する必要があるかもしれませんが、iTunesを実行するよりも高速です。

さらに、Objective-Cはそれ自体が美しい言語だと思います。これは、私が「育った」コード(Java、C#、PHP、VBなど)とは大きく異なります。慣れるまで少し時間がかかりましたが、投資してくれてうれしいです。

免責事項:私はAppceleratorで働いています。うまくいけば、あなたは上記の意見と事実を区別することができます。

于 2012-06-27T14:24:04.687 に答える
3

あなたが興味を持っていて、あなたの質問に答えるはずの求人情報を見てください。雇用主がXCodeの専門知識を探していて、チタンに興味がない場合は、XCodeに焦点を当ててください...

于 2012-06-27T14:12:57.127 に答える
3

@Linuxiosの優れた答えに追加するには:

あなたはキャリアとしてモバイル開発に参入したいと述べているので、Objective-C、XCode、およびiOSSDKを最も確実に学びます。最後に、それはあなた、あなたの雇用主、そしてある程度あなたのクライアントが必要とするものになります。しかし、iOSを理解することは不可欠です。

また、私の経験では、アプリケーションが複雑な場合、デバッグの容易さ以外の理由で、そしてあなたが言うように、ビルド時間が短い場合は、ネイティブが進むべき道です。

更新:追加するもう1つのことは、パフォーマンスが重要である場合(つまり、ゲーム)、ネイティブ(C / C ++ / Objective-C)が進むべき道です。

于 2012-06-27T14:21:35.467 に答える
1

私の観点からは、ネイティブアプリ開発、iOS、Androidを学ぶことは常に非常に役立ちます。すでに述べたように、プラットフォームの実際の開発者(Android、iOSなど)以外の外部の企業やフレームワークにあまり依存したくないため、大多数の企業はネイティブアプリ開発者を探しています。また、ネイティブアプリを開発できるようになると、TitaniumやPhoneGapなどのフレームワークを使用するよりもはるかに簡単になると思います。さらに、自分のスキルを向上させることは常に良いことであり、特にネイティブアプリ開発は多くを学ぶことができる分野です。言語だけでなく、基盤となるモバイルオペレーティングシステムのアーキテクチャについても。特にAppleにとっては、ネイティブの開発を学ぶことが重要だと思います。

最後になりましたが、Swiftを使用することをお勧めします。これは、Objective-Cの弱点の多くを修正する、優れた強力な言語です。基本的に、Objective-Cを必要とせずに、Swiftでフォームスクラッチを開始できます。完全なCocoa-APIには、Swiftからアクセスできます。ただし、必要に応じて、Objective-CとSwiftを組み合わせることができます。たとえば、Swiftにまだ実装されていない外部ライブラリを使用する必要がある場合です。

私があなたを少し助けることができることを願っています。

于 2014-12-29T10:26:04.273 に答える