Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38812
  • 博文数量: 17
  • 博客积分: 610
  • 博客等级: 上士
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-19 20:51
文章分类

全部博文(17)

文章存档

2015年(3)

2010年(11)

2009年(3)

我的朋友
最近访客

分类: LINUX

2010-08-03 11:05:27

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相关的一些东西,可以用来调试上层应用。
阅读(873) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~