Fromhttps://stackoverflow.com/questions/4544588/difference-between-iphone-simulator-and-Android-emulator =
エミュレーターとシミュレーターの違いは、エミュレーターが実際のデバイスにあるソフトウェアおよびハードウェア環境を模倣することです。一方、シミュレータはソフトウェア環境のみを模倣します。それ以外の場合は、ディスク領域、メモリ、プロセッサ速度など、ホストシステムのすべてのハードウェアリソースにアクセスできます。
IPhone SimulatorはiPhoneプロセッサ、ディスクドライブ、メモリの制約などをエミュレートしないため、Appleは常にデバイステストの重要性を懸念しています。シミュレータのメニュー項目からメモリ警告を(再度)シミュレートしない限り、Macがリソース自体を管理するのに苦労していない限り、メモリ警告を受け取ることはほとんどありません。
Androidエミュレータは、ARMプロセッサと特定のハードウェアをエミュレートしますが、それでもCPUパフォーマンスのマッチングはうまく機能しません。
エミュレーターであるので、メモリ消費量とうまく一致し、特定の単純なデバイスをよくエミュレートできますが、モバイルGPUやHWメディアデコーダーなどのデバイスが複雑になると失敗します。そして、エミュレーションロジックは、各ARM=命令をX86命令に変換し、そのパフォーマンスを独占しており、設計上はサイクルが正確ではないためです。
私の質問:なぜAndroidシミュレータではなくエミュレータを作成したのですか?
なぜGoogleがその決定を下したのかは誰にもわかりませんが、私の推測は次のとおりです。
Androidはオープンプラットフォームであるため、さまざまなハードウェア構成が数多くあります。さまざまなハードウェア構成をエミュレートできることは、実際のデバイスをテストする必要性を大幅に減らすという点で、開発者にとって大きな恩恵です。これにより、開発者のコストが抑えられ、Android向けの開発を奨励します。
実際のハードウェアを使用せずにperformanceを一致させようとするのは、このコンテキストでは馬鹿げたゲームです。PCにもさまざまな仕様があります。また、多くの(ほとんどの場合)の開発者には関係ありません。
私の推測では、AndroidアプリはJavaで記述する必要がある場合でも、任意の言語で記述され、任意のコンパイラーでマシン言語にコンパイルされた追加コードを含めることができます。これらを実行するには、電話のCPUをエミュレートする必要があります。
(はい、現在はAndroidですが、これは縁のないプラットフォームです)。
一方、iOSではObjective Cのみが許可され、XCodeでのみコンパイルされます。 SDKに2つのコンパイルターゲットを含めることはそれほど難しくありません。1つはデバイス用、もう1つはシミュレータ用です。