越来越多的公司采用linux + TinyX + gtk+系列作为手机开发环境,它本身可以认为是完全免费的,但需要大量的时间去研究它,去裁减它,还要建立集成开发环境,模拟运行环境等等,这一切都不是免费的。一个项目耗费一到两年时间,已经屡见不鲜见了。在建立开发环境,模拟运行环境,等这类简单的事情,花大多时间是不值得的。这里介绍一种在PC上快速建立模拟运行环境的方法,希望对大家有点帮助。
X Window提供了一个叫Xnest的服务器,顾名思义,它是嵌入X Window中的X Window的服务器。它本身是一个真正的X Window服务器,在客户端程序看来与其它X Window服务没有任何差别。同时,它又是原始的X Window的服务器的一个客户端程序,在X Window的服务器看来,它与其它的客户端程序也没有任何差别。
我们可以利用Xnest,在一个大的X Window(和PC的显示屏幕一样大小)上运行一个小的X Window(和手机的显示屏幕一样大小)。在这个小的X Window中,运行原本在手机上运行的应用程序。这样,两者的显示屏幕大小一致,看到的效果和手机上看到的效果就几乎相近了。
用Xnest作为模拟运行环境,它对应用程序来说,是完全透明的,不需要对应用程序做任何修改,用起来非常方便。我们看看如何一步一步建立这套环境:
1. 先介绍一下DISPLAY这个环境变量。
所谓DISPLAY,一般来说,就是一套输入设备(键盘、鼠标、触摸屏),加上一个多或多个显示设备。X Window可以同时挂载多个显示设备,每个显示设备被称为一个SCREEN,但是一个Xwindow只能在一个DISPLAY上运行。每个DISPLAY都有一个ID来唯一标识它,ID一般用一个冒号加一个数字组成,后面出现的“:0”, “:3”之类就是代表DISPLAY的ID。
2. 起动原始的X Window服务器。
一般运行gdm或者startx即可(可能要做适当的配置)。
3. 起动Xnest X Window服务器
export DISPLAY=:0 (DISPLAY ID要与实际一致,可以用ps -ef|grep X查看)
Xnest :3 -geometry 240x320
(“:3”为DISPLAY ID,240x320为屏幕大小,其它参数可以参考手册来设置。)
4. 运行应用程序。
export DISPLAY=:3
xterm
(“:3”为DISPLAY ID,要与运行Xnest时指定的DISPLAY ID一致。)
大多数情况下,按以上步骤,都可以正常工作,但有时会出现Xnest拒绝连接的问题。这是由于认证引起的,在运行Xnest前,把XAUTHORITY环境变量去掉(unset)就行了。
当然,这是最原始的模拟运行环境,matchbox提供了一个matchbox-nest的程序,它把Xnest包装成Palm的外表,还有相应的按键,使用起来更方便一点,你还可以把它修改一下,变成自己的产品的外观。