4

ちょっと興味があるんだけど。AppleはiPhoneシミュレーターで素晴らしい仕事をしましたか?

比較すると、i7で実行されているAndroidエミュレーターとi3で実行されているiPhoneシミュレーター。iPhoneシミュレータは、実際のiPhoneよりも高速です。

私は物事を正しく設定することに失敗しましたか?

4

8 に答える 8

18

それはアーキテクチャ上の決定の問題です:

  • iOSシミュレーターは、CPU上で直接ネイティブコードを実行します。シミュレーターで使用するには、x86アーキテクチャー用にプロジェクトを再コンパイルする必要があります。シミュレーター自体は、すべてのiOSAPIをエミュレートするだけです。

  • 一方、Androidエミュレーターは、QEMUを使用してARM(またはx86ですが、ARMの方が一般的です)CPU仮想マシンを実行し、その上にすべてのソフトウェアスタック(Linuxカーネル、Androidシステムイメージなど)があります。エミュレートされたハードウェア。

これは一種のトレードオフです。iOSのやり方ははるかに高速ですが、ターゲットシステムと100%互換性を持たせるのは困難です。Appleの場合、iOSとMac OSには多くの共通点があるため、おそらく少し単純でした。

Androidの場合、スタック全体をエミュレートすることは非常に理にかなっています。クロスプラットフォームSDKの構築、システムレベルのコンポーネントのテストなどが簡単です。これは、異なる目標を持つ、単に異なるエコシステムです。Androidエミュレーターは、AndroidNDKでコンパイルされたネイティブARMライブラリのテストなどに使用できることを忘れないでください。

今日、Androidエミュレーターのパフォーマンスは多かれ少なかれ許容範囲内ですが、Androidの初期の頃は単なる惨事でした。とはいえ、個人的には、Android用の高速なAP​​IレベルのネイティブシミュレーターがSDKに追加され、要求の少ないプロジェクトをはるかに高速にテストできるようになると思います。

興味深い読み物: http: //logic-explained.blogspot.com/2011/09/why-is-there-no-x86-native-emulator-for.html

于 2013-03-26T10:37:52.380 に答える
2

iphone、iphoneシミュレーター、アップルラップトップ、xcodeはアップル製品です

しかし、アンドロイド
ウィンドウ-マイクロソフトアンドロイド-グーグルエクリプス-エクリプスベンダー

これらのツールは異なるベンダーであるため、Androidシミュレーターは遅くなります。

冗談だよ :)

于 2013-03-26T10:27:35.547 に答える
2

Apple Simulatorは、システム構成を使用して作成されます。つまり、システムのRAM、メモリ、キャッシュを自動的に取得するため、構成する必要はありません。したがって、iPhoneシミュレーターは実際のデバイスとして機能しませんが、Androidの場合はすべての構成を提供する必要があります。エミュレーターを作成する前の詳細、Androidエミュレーターは実際のデバイスとして機能しますが、iPhoneシミュレーターよりもはるかに低速になる可能性があります。

于 2013-03-26T10:38:38.707 に答える
2

はい、そうです。emulator(FYI)はシミュレーターよりも遅いです。

アップルはiPhoneシミュレーターで素晴らしい仕事をしましたか?

iOSはオープンソースではないため、他の開発者はこれに答えることができません。

私は物事を正しく設定することに失敗しましたか?

いいえ、あなたはすべてに正しいです。

于 2013-03-26T10:56:37.340 に答える
1

まず第一に、Androidにはシミュレーターがなく、エミュレーターがあります。第二に、エミュレータの速度はマシンの構成に依存すると思います。適切に作成し、AVD十分なメモリを割り当てれば、構成が適切に実行されるようになります。

于 2013-03-26T10:32:41.910 に答える
1

それは簡単です:

Androidは実際のデバイスをエミュレートするため、実際のアーキテクチャと非常に近い動作とレイアウトを実現します。

一方、アップルシミュレーターはエミュレーターではないため、実際の動作を期待することはできませんが、アプリの動作をテストするために必要なデバイスは1つだけであるため、主にIOSを解決する緊密なレイアウトになっています。

于 2013-03-26T11:24:15.587 に答える
0

Android SDKにはエミュレーターがありますが、iosSDKにはシミュレーターがあります。

シミュレーターは他のものと同様に動作しますが、まったく異なる方法で実装されます。これはシステムの基本的な動作を提供しますが、シミュレートされているシステムのすべてのルールに必ずしも従うとは限りません。それはあなたに何かがどのように機能するかについての考えを与えるためにそこにあります。プロセッサ、RAMなどのデスクトップリソースを使用します。

エミュレーターは、他のものとまったく同じように動作し、エミュレートされるシステムのすべてのルールに従うシステムです。これは、エミュレートされたシステムの入力および出力とバイナリ互換になるまで、別のシステムの完全な複製ですが、元のエミュレートされたシステムの環境とは異なる環境で動作します。

したがって、シミュレーターはエミュレーターと比較して間違いなく高速になります。

于 2013-03-26T10:37:19.347 に答える
0

Androidシミュレーターは、実際にはAndroidを実行するモバイルデバイスを模倣するように設計されたエミュレーターです。つまり、Android OSを実行するハードウェアをエミュレートして、可能な限り100%ほぼ同一にします。JVMは、JavaバイトコードをエミュレータによってデコードされるARM命令に変換します。

iOSシミュレーターは、より高いレベルで動作し、オペレーティングシステムとそのライブラリをシミュレートし、OS呼び出しをOS X実装に変換し、デバイスの回転やメモリ不足の状態など、他の方向のイベントをシミュレートします。iOSシミュレーターでアプリを実行すると、アプリはMacでネイティブに実行されるx86にコンパイルされます。Androidエミュレーターとは異なり、iOSアプリは、特定のiOSデバイスのメモリ制限に制約されないため、シミュレーターのメモリが不足することはありません。

于 2013-03-26T10:40:18.300 に答える