エミュレータと実機の違い
Article Metadata
エミュレータは、 実機(real device)とほとんど同様に振舞います(behaves)。Symbian OSのコードは、ターゲット端末 とエミュレータ向けの両方が、同じソースコードからコンパイルされます。ソースコードは、いくつか違い(deviation)を含むこともあります。(例えば、もしアセンブラで書かれた関数がある場合、明らかにx86とARMの両方のバージョンを作成する必要があります。)よって、GUIアプリケーションだけでなく、システム・レベルのコードの開発にも、エミュレータを使うことが出来ます。実機で動作するものは、全てエミュレータでも動作するでしょうか? 全てではありません - どんなエミュレータもそんなによくはありません。しかし、ほとんどの部分に関して、それは同等です。
エミュレータと実機での主な違い
- ハードウェア
最も明確な違いは、エミュレータの基礎をなすハードウェアは、実機のものと違います。PCのプロセッサー命令セットは違います - PCはx86 を、実機はARMを採用しています。しかし、C/C++ 言語によって、簡単にこれは隠されています。しかし、より重要な違いは、周辺のハードウェアの違いです。デバイス・ドライバやハードウェア抽象化レイヤのコードは使用できません。エミュレータでは、ハードウェアへのアクセスは、適切なWindows API の呼び出しに変換されます。
- ピクセルとフォント
ほとんどの場合、GUIアプリケーションの表示は、エミュレータと実機でほとんど同じですが、ピクセルのサイズがこの2つの間で違います。例えば、エミュレータでは途中で省略されるテキストが、実機では省略されない場合や、その逆のことがありえます。このことは、例えば、翻訳の確認のためにエミュレータしかない場合は、これが問題になるかもしれません。
- DLL の静的変数
静的変数は、エミュレータで使用できますが、実機ではできません。もち、開発のほとんどをエミュレータで行っている場合は、このことに注意してください。 - プロジェクトを遅らせることになる、大量の静的変数の検索と削除を避けたいと思うでしょう。
- シングル・プロセスとマルチ・プロセス
エミュレータはシングル・プロセスで動きます。一方、実機はSymbian OSのマルチ・プロセス機能をサポートしています。In Symbian OS v8 とそれ以降では、この違いは、隠されており、プロセスを開始やコントロールするAPIは、エミュレートされます。しかしながら、それより古いバージョンのSymbian OS では、(#ifdef __WINS__ で囲った)特別なコードを書いて、プロセスをエミュレートするスレッドを使う必要があります。ありがたいことに、これを実装するコードはもはや必要ありません。
訳注:SDK ヘルプの次の箇所も参考にしてください。
Emulator/native platform differences


(no comments yet)