Android的模拟器是基于qemu的基础上修改的,代码在 external/qemu下。
怎么根据我的项目来定制skin呢?
比如我的项目是 : LCD 800x480 WVGA 
              6个键,分别是上,下,左,右,OK ,Back

portrait  竖屏
landscape 横屏
这是针对手机,比如手机的屏幕QVGA (320x240) ,横屏的时候就是 240x320

(一) 对于应用开发人员,在SDK中修改定制
   1)在android-sdk-linux_86/platforms/android-2.1/skins目录下
      cp -r WVGA800 MySkin
   2) 修改layout , 把keyboard删除掉,以及一些其他的不用的control key删除掉
   3) 修改位置,把竖屏,横屏调换,我的想法是我竖屏为800x480,横屏为480x800,和手机的屏不一样
   4) 然后用android 添加一个avd ,名字为test ,皮肤为 MySkin (这个保存在~/.android/avd下面)
   5) emulator -avd test 测试
修改的layout文件为:

parts { 

   portrait { 

        background { 

            image   background_port.png 

        } 

    } 

    landscape { 

        background { 

            image   background_land.png 

        } 

    } 


    device { 

        display { 

            width   800 

            height  480 

            x       0 

            y       0 

        } 

    } 

     

    controls { 

        background { 

            image   controls.png 

        } 

        buttons { 

            

            back { 

                    image button.png 

                    x 112 

                    y 142 

            } 

            dpad-up { 

                    image arrow_up.png 

                    x 77 

                    y 53 

            } 

            dpad-down { 

                    image arrow_down.png 

                    x 77 

                    y 106 

            } 

            dpad-left { 

                    image arrow_left.png 

                    x 53 

                    y 53 

            } 

            dpad-right { 

                    image arrow_right.png 

                    x 123 

                    y 53 

            } 

            dpad-center { 

                    image select.png 

                    x 77 

                    y 81 

            } 

                 

        } 

    } 


} 


layouts { 

  portrait   { 

        width     853 

        height    761 

        color     0xe0e0e0 

        event     EV_SW:0:1 

         

        part1 { 

            name     landscape 

            x       0 

            y       0 

        } 


        part2 { 

            name    portrait 

            x       1000 

            y       0 

        } 


        part3 { 

            name    device 

            x       27 

            y       27 

        } 

        part4 { 

            name    controls 

            x       335 

            y       507 

        } 

     


    } 


   landscape  { 

        width     853 

        height    761 

        color     0xe0e0e0 

        event     EV_SW:0:0 


        dpad-rotation 3 


        part1 { 

            name    portrait 

            x       900 

            y       0 

        } 


        part2 { 

            name    landscape 

            x       0 

            y       0 

        } 


        part3 { 

            name      device 

            x         26 

            y         509 

            rotation  3 

        } 


        part4 { 

            name     controls 

            x        539 

            y        556 

        } 


        

    } 

} 


keyboard { 

    charmap qwerty2 

} 


network { 

    speed  full 

    delay  none 

}



测试好了后,同时配置eclipse , 在[Run]->[Run Configurations] 建一个测试程序的时候, Target选择 test 就可以了


对于SDK的emulator ,所用的缺省kernel为platforms/android-2.1/images/kernel-qemu,rootfs 为system.img 

(二)对于android系统开发者
 下载源码编译后,

export PATH=$PATH:/media/H/android/out/host/linux-x86/bin 

  export ANDROID_PRODUCT_OUT=/media/H/android/out/target/product/generic 

  export ANDROID_SWT=/media/H/android/out/host/linux-x86/framework/


然后 emulator 
缺省用的kernel为./prebuilt/android-arm/kernel/kernel-qemu,所用的rootfs为  ./out/target/product/generic/system.img
   
我们为它定制一个符合我们项目的avd,和上面一样,我们建立了一个定制的皮肤MySkin,然后
在~/.android/avd仿照其他的avd新建一个real avd .
添加文件 real.ini 和目录 real.avd 
修改real.avd/config.ini ,如下:

skin.name=MySkin 

hw.lcd.density=160 

image.sysdir.1=/media/H/android/out/target/product/generic/ 

skin.path=/media/H/opensrc/android-sdk-linux_86/platforms/android-2.1/skins/MySkin/


这样皮肤用的是我下载的SDK里面的MySkin,而system.img用的是我从源码里编译的

运行 emulator -avd real -kernel /media/H/android/prebuilt/android-arm/kernel/kernel-qemu
此时,就可以看到符合我们项目的模拟器了。

但是我用s3c64100编译了一个zImage ,然后用emulator -kernel 去跑,发现不成功。

emulator -qemu -M ? 

Supported machines are: 

android_arm ARM Android Emulator (default)


而我用android的goldfish编译出来的zImage可以跑, 可见emulator 只能跑android的goldfish ,而实际的设备的kernel不可以跑。
应此 emulator不能用来调kernel相关的一些东西,可以用来调试上层应用。