BenjaminXu 2012-01-05
直接使用smdkv210 2.3源码根目录下的编译脚本来编译generic版是不能再模拟器上运行的,
这样给源码的修改带来麻烦,每次修改之后都要下到板子上来看效果。
观察编译CM源码generic版时输出的配置信息,发现少一项TARGET_ARCH_VARIANT,找到输出配置的信息的envsetup.mk,添加TARGET_ARCH_VARIANT的输出,发现即使在编译脚本中export TARGET_ARCH_VARIANT=armv5te,输出信息仍为armv7-a-neon,原因是无论TARGET_PRODUCT是general还是smdkv210,都会调用device.mk以及相关开发板配置。这应该就是编译出来的generic版不能再模拟器上运行的原因。
基于此,参照CM和6410的编译脚本,自己写一个编译xidian_general.mk的脚本,不包含硬件信息,应该就可以在模拟器上运行了。编译过程中会遇到一些错误,解决办法是
1.修改full.mk或general.mk,或在xidian_general.mk中添加一些硬件信息如BOARD_HAVE_BLUETOOTH := true,
以便在不修改源码的情况下使得编译通过。
2.修改源码,源码中出现tile_to_linear_64x32_4x2_neon.s的两个地方编译通不过,需要进行修改。
frameworks/base/media/libstagefright下的colorconversion用6410中的进行替换,然后直接删除device/sec_mm目录。
终于编译通过了,用模拟器采用默认内核时出现init: untracked pid XX exited。换用kernel-qemu-armv7内核,系统运行起来了!!!
(注:在编译时配置的TARGET_ARCH_VARIANT=armv5te,结果用模拟器默认的arm926内核运行不起来,用armv7内核
却能运行,SDK自带的模拟器无论是默认的内核还是armv7内核都是可以运行的。)
但是编译出来的系统在模拟器上鼠标用不了,使用键盘可以操作。解决过程:
原来一直用自定义的800*480,发现如果用默认的skin,鼠标就可以用了。
查看SDK自带skin的内容,发现它也是可以转为横屏的。Android模拟器横屏切换方法:
常规的显示为HVGA-P(port),即分辨率为320x480如果使用横屏(land)。如果模拟器尚未启动,可以在Eclipse的项目
Run as=>Open Run Dialog对话框中设置,如果android模拟器已经启动后,可以使用快捷键F12或Ctrl+F11来切换。
当然是用命令行仅仅启动模拟器可以使用参数emulator.exe -skin HVGA-L 来启动。
鼠标问题没有完全解决,上午不知道怎么搞好的,下午又不行了,试着重复上午的方法去解决问题,改模拟器skin,
往/data/etc里面写入InputReader报错的文件pointercal,然后用屏幕校准软件去修正pointercal均不能解决问题。
还是从源码入手,从报错的InputReader入手,在210板子源码里找InputReader,只找到InputReader.h,然后在
6410里面找到InputReader.cpp和InputReader.h,发现210源码相比6410缺少frameworks/base/libs下ui文件夹,从6410
里面拷入这部分源码进行部分编译,有错没通过,从6410将ui所需要的头文件frameworks/base/include/ui也拷到210源码中,再进行部分编译,终于成功了!然后make snod,运行修改后的镜像,模拟器鼠标正常了。