android的模拟器定制

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相关的一些东西,可以用来调试上层应用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值