11

真のネイティブ モバイル アプリ、クロスプラットフォームを開発する方法を見つけようとしています。私が見つけたツールの量は膨大で、非常に膨大です。

私が試したすべてのツールは、最終結果がネイティブになると「言った」が、実際にはそうではない. これは、Web ブラウザーと、デバイス固有の機能に対するいくつかの追加のネイティブ レイヤー/フレームワークを含む実行可能ファイルです。

私が本当のネイティブアプリが欲しい理由は次のとおりです。

  • スピードとコンパクト
  • ブラウザの問題を回避する
  • 市場受容
  • 簡単な/「スクリプトキディ」リバースエンジニアリングを避ける

私が試した製品:

  • Appcelerator (私のシステムでは正しく動作しません)
  • PhoneGap (REAL ネイティブ アプリは作成しません)
  • Embarcadero radPHP EX2 (PhoneGap を使用)
  • Embarcadero radStudio EX2 (モバイル/Android アプリを作成できませんか?)
  • Adobe Flash Builder (非常にうまく機能しますが、Air に依存しているため、アプリは巨大で、バイブレーションなどのネイティブ デバイスはありません (可能ですが、自分で作成する必要があります)
  • Flash 開発 (ただし、Adobe Flash Builder と同じ)
  • ..... およびその他 ;-) moSync のように ......

現在、私は「RhoStudio」をダウンロードしていますが、導入ビデオで私が望んでいないことについて話しているので、それについていくつかの疑問があります.

ターゲットの方向性は、そもそも Android、iOS、そしておそらく将来的には Windows Phone です。注: 私は Mac を持っていないので、Mac でコンパイルすることはできません。

私が望んでいることは不可能ですか、それともこれを行うことができる製品はありますか?

編集:私の答えを見てください、答えはNOです!

4

6 に答える 6

7

この質問を 2 年間続けた後、私は次のように言うことができます。

私が試したすべての製品は、何らかのラッピングを使用するか、ネイティブのものを呼び出すためのレイヤーとして第 2 言語を使用します。ライブラリはネイティブですが、メイン プログラムはネイティブではありません。smartface.io を使用した Cosku の最新の回答は良い例です。彼らはそれがネイティブであると主張していますが、そうではありません。

なぜそんなに難しいのですか?問題は、プラットフォームに必要なプログラミング言語 (複雑にする言語の違い) です。2 番目の言語をプラットフォームのメイン言語に翻訳するのは複雑すぎます。これは特定のライブラリです。これは、ネイティブ バイナリでラップすることによってのみ実現できます。2 つ目の障害は、クロスプラットフォームで実行できる必要のあるコンパイラです。

しかし、出力がほとんど同じであるのに、なぜ第 2 言語またはサードパーティの開発ツールに依存してアプリを構築するのかというと、問題は次の画像に完全に示されています: http://xkcd.com/927/

画像はスタンダードについてですが、それが起こって、スタンダードのための新しいスタンダードを作成します。たとえば、PhoneGap を使用する場合、PhoneGap API の基本を学習する必要があります。あなたはPhoneGapを呼び出す「新しい標準」に依存しています。これに関する問題は、PhoneGap サポートとその存在に完全に依存していることです。これは、アプリのライフサイクルに 2 つ目の弱点をもたらす可能性があります。

IMO、何かをラップしてクロスプラットフォームにしたい場合、サードパーティの製品やライブラリに依存するのは賢明ではありません. 私がやったように、自分でラッパーを書いて肥大化をスキップする方が良いでしょう。このすべての真の利点は、自分でラッパー コードを記述し、基礎となる構造を理解していることです。さらに、拡張や変更が簡単で、必要のないものをスキップできます。

現在、私はアプリケーションの UI を、既存の最も長く安定した「言語」HTML で JavaScript インターフェイスを使用して作成および設計しています。アプリはブラウザでも実行でき、バイブレーションなどの特定の機能が欠落している場合でも中断しません。phonegap では同じ結果は得られません。試してみてください。通常の Web サイトのように、レスポンシブ手法を使用してアプリを簡単に設計できます (たとえば、Android でこれを試してください ;-))。技術的には、ブラウザまたは Web ビューの任意のプラットフォームでどこでも実行できますが、特別なモバイル JavaScript ライブラリは使用しません。これらの特別なライブラリは必要ありません。実際には、代わりに「通常の」ライブラリ バージョンを使用してください。

ネイティブ シェルによってロードされる 1 つのファイルに UI ソースを「パック」するためのコンパイラ/難読化ツールを作成しました。これはソースを保護するためのものであるため、ソースを簡単に表示または変更することはできません。

アプリ プラットフォームをサポートするために私がしなければならないことは、ネイティブ ラッパーを作成することだけです。プラットフォームが何らかの理由で停止した場合 (たとえば、過去の Windows Mobile など)、そのための新しいラッパーを作成するだけで済みます。これは、プログラム全体を最初から書き直すよりも簡単です。また、新しいプラットフォームがある場合は、プラットフォーム ブラウザーでも実行できます。

アプリが特定のハードウェア (ゲームなど) に依存していない場合、または特別なハードウェア要件なしで実行できる場合、これはアプリのライフサイクルを延長するための方法です。HTML5 と JavaScript を使用して GUI を設計し、ネイティブ シェルを使用して特定の OS 機能を使用します。

遅いですか?いいえと言わざるを得ません。少なくとも、かさばって肥大化した特別に設計されたモバイル JavaScript ライブラリのものを使用しないでください。タッチスクリーン デバイスではクリック イベントを使用せず、代わりに touchstart を使用してください。また、HTML エンジンは最近改善される予定であり、ネイティブ言語でこれを実装する必要なく強力な HTML5 Web アプリケーションを作成できるようにする HTML5 機能のサポートが改善されています。

IMO、これは (私にとって) 進むべき道であり、クロスプラットフォームのモバイル アプリを開発し、ライフサイクルを拡張するための最良の方法を見つけるための旅です。うまくいけば、あなたも何をするのが最善かを決めるのに役立つでしょう.

于 2014-06-18T21:38:08.140 に答える
5

クロスプラットフォームのネイティブ iOS、Android、Mac、および Windows アプリについては、Xamarinを確認してください。C# でコードを作成し、ネイティブにコンパイルします。iOS の場合、アプリのレイアウトに XCode ツールを利用でき、Xamarin Studio はそれと非常にきれいに統合されます。

完全を期すために、PhoneGap にはTRIGGER.IOという価値のある (そう、WebView ベースの) 競合相手があります。そのアプローチは PhoneGap/Cordova に似ていますが、ネイティブ機能にアクセスするための API を改善し、プッシュ通知を簡素化し、はるかに高速なクラウド ビルドを実行します。

私はこれらの製品のどちらともまったく関係がありません...私は両方が好きです。

于 2013-12-06T00:46:15.040 に答える
2

www.codenameone.comを試しましたか? これはオープン ソースであり、Java ベースであり、開発には eclipse または netbeans のみが必要です。

于 2013-02-17T07:41:51.887 に答える
1

まずは

Appcelerator (does not work correctly on my system)

あなたが直面している特定の問題はありますか?java エラーか何かが発生している場合は、正しく設定されていない可能性があります。

短い答えはノーです。これを達成するには、ある程度の抽象化が必要です.Javaとobjective-cは完全に異なる言語であり、AndroidとIOS SDKには異なる方法、手順、スタイル、デザインなどがあります。変換またはレンダリングする中間層がなくても、両方で何かを機能させる方法。

Appcelerator は、他のような webview ラッパーではないため、探しているものに最も近いものになります。実際、javascript を解釈しますが、webview にラップされていないため、ブラウザーの問題を回避できます。

速度とコンパクトさは、コード化されたものよりも、アプリをどのようにコーディングするかにかかっています。真のTitaniumアプリは、ライブラリのためにサイズが大きくなりますが、それ自体は悪くはありません.2つのアプリを遠くに置くことの利点は重要です.私が思う余分な数メガバイト。

これらのツールはすべて、それなしでは成功しないため、市場で受け入れられていると確信しています.

IOS を使用する場合は Mac が必要です。アプリ ストアだけで公開する場合は、アプリケーション ローダーを使用するために xcode とビルドされたプロジェクトが必要です。 IOS SDK はシミュレーターで実行したり、アプリをパッケージ化したり、それなしでコードを実行したりできないため、IOS SDK を持っている必要はありません。

アプリを作成したい場合は、2 つの選択肢があります。各プラットフォームを学習するか、これらのツールのいずれかを使用します。すべてを実行できる魔法のツールがあれば、それは地球上で最も人気のあるものであり、あなたはそれについて聞いたことがあるでしょう /それを見つけた。

于 2012-05-31T12:21:24.827 に答える
0

これが「クラウド」が人気の理由のひとつです。アプリを何度も作成する代わりに、すべての機能をサーバーに作成します。実際の「アプリ」は、機能へのユーザーインターフェースであり、ニーズに応じて非常にシンプルになります。非常に単純な場合は、プラットフォームごとにアプリを個別に作成できますが、それらはすべて同じ「クラウド」バックエンドを使用します。

私が誤解しない限り、これはクラウドアーキテクチャを採用している企業のほとんどのアプリが行っていることの代表であり、多くのアプリがデータ接続を必要とする理由でもあります。

ある種のラッパーやレイヤーがなくても、一度書いてどこでも実行できるとは思いません。これは、各プラットフォームに個別のAPIがあり、プログラミング言語さえあるためです。たとえば、AppleデバイスとAndroidデバイスの両方でネイティブに実行される1セットのソースコードを作成するのは難しいでしょう。これは、技術的に不可能であると言っているわけではありません。デスクトップオペレーティングシステムは、C / C ++で何年にもわたってそのようなクロスコンパイルの移植性を備えており、Javaはそれをはるかに簡単にしました。もちろん、モバイルオペレーティングシステムのエンジニアは、相互運用可能なAPIのビジョンを共有していないようです。

結論として、A)アプリを2回作成することをお勧めします(私は知っていますが、両方のデバイスでネイティブ実行の信頼性を提供し、最小限の苦痛で実行できます)またはB)分解して「スクリプト」の1つを使用します-kiddie」フレームワーク。アプリが十分に単純であれば、これらは実際にはそれほど悪くないかもしれませんし、逆に設計することはまったくできないかもしれません。誰かが最高の「ネイティブに近い」クロスプラットフォームフレームワークについて何か提案があれば、それは役に立ちます。

于 2012-05-31T12:05:00.080 に答える
0

ネイティブのルック アンド フィールが必要な場合は、Sencha (www.sencha.com) や Kendo UI (http://www.kendoui.c​​om/) などの JavaScript 側でシミュレートするフレームワークがあります。どちらも Android と iPhone で見栄えが良いことがわかりましたが、Windows Phone はまだサポートされていません。

HTML と組み合わせた実際のネイティブ ウィジェットを探している場合は、MoSync のネイティブ UI (http://www.mosync.com/documentation/manualpages/jsnativeui-library) を調べることができます。これは Windows Phone の Metro UI もサポートしており、Titanium (http ://docs.appcelerator.com/titanium/2.1/index.html)。

とにかく、もう1つのことは、Phonegap、MoSync、またはAppMobi(PhoneGapビルドに似たものを使用していると思います)などのパッケージャーを使用して、アプリをラップしてアプリ市場に出すことができるということです. これらのリストから、PhoneGap は特に特定の UI 機能を提供するようには設計されていませんが、タブ バー プラグインを Phonegap に追加する試みをいくつか見てきました。

于 2012-08-08T14:37:56.343 に答える