转载时请注明出处和作者联系方式
文章出处:http://blog.csdn.com/keensword007
作者联系方式:琴剑 <keensword007 at sina dot com>
在手机上开发应用程序,少不了图形界面。Moto手机的应用程序都是基于EZX开发的。简言之,EZX是一种类似于qotpia的适用于嵌入式linux设备的平台,EZX application SDK基于Qt embedded, 软件结构如图1所示:
图1
但是难以理解的是,Moto并未对外公布ezx application SDK,不过这难不倒网上的高手,通过逆向工程,民间也流传着非官方的SDK,并开发出了非常优秀的适用于moto手机的软件(再次鄙视一下moto)。闲话少说,下面就介绍一下Samr7和FoxE6两位大牛整理出的SDK,该SDK适用于A780/E680i/A1200/E6等机型,如果您是在cygwin下开发,可以参考这篇文章。下面介绍的是在Ubuntu下的构建过程。
1. 链接程序所需的库文件使用手机上的,可先telent到手机,然后使用如下命令从手机上复制到存储卡:
cd /usr/lib
tar czvf /mmc/mmca1/ezx-lib.tar.gz *
2. 下载samr7-ezx-crosstool-foxe6-sdk.tar.gz文件,可以从这里下载。解压到某个目录,一下就使用${EZX_SDK_ROOT}表示该目录。交叉工具链位于${EZX_SDK_ROOT}/crosstool,ezx SDK位于${EZX_SDK_ROOT}/dev-ezx目录.
3. 由于该SDK包含的交叉工具链是为cygwin编译的,可执行程序为exe格式,不能用在Ubuntu linux环境,所以需要用到<<Helix移植(一)Ubuntu上建立Moto E6交叉编译工具链>>所编译出的交叉工具链,${EZX_SDK_ROOT}/crosstool下的工具链替换即可。
4. 从手机上复制ezx-library.tar.gz文件到${EZX_SDK_ROOT}/dev-ezx/{PHONEMODEL}/lib, 这里{PHONEMODEL} 代表你的手机型号,e6, a1200, e680i, 或者a780. 然后使用如下命令解压ezx库:
cd /opt/dev-ezx/{PHONEMODEL}/lib
tar xvf ezx-lib.tar.gz
确定手机上/usr/lib目录下的文件都在${EZX_SDK_ROOT}/dev-ezx/{PHONEMODEL}/lib
5. 编译moc程序,${EZX_SDK_ROOT}/dev-ezx/bin下是适用于cygwin的moc.exe,需要自己重新编译一个moc程序,可以下载dev-ezx-0.2.0.tar.gz. 解压后,进入到moc目录,输入make命令,即可编译一个moc,将其复制到${EZX_SDK_ROOT}/dev-ezx/bin下。
至此,整个构建环境就已经搭好了,是不是跃跃欲试,开发一个自己的应用程序了。让我们还是从经典的helloworld程序开始吧。先上这个网址http://www.motorolafans.com/forums/development/17584-ezx-crosstool-sdk-motorola-ezx-phones.html下载helloEZX实例程序。
1. 根据实际的目录结构修改${EZX_SDK_ROOT}/dev-ezx/setENV.sh脚本,因为该脚本假定SDK包解压在/opt/目录下。
2. 输入如下命令设置交叉编译环境,假设手机型号是E6:
. ${EZX_SDK_ROOT}/dev-ezx/setENV.sh e6
注意:点后面要加上一个空格,表示在当前shell而不是新开一个shell执行脚本。
3. 进入工作目录,构建HelloEZX程序,解压helloEZX.zip到工作目录(假定为home目录),进入到helloEZX目录。
cd ~/helloEZX
4. 该helloEZX工程包含三个文件main.cpp, helloezx.h和helloezx.cpp. 接下来创建工程文件
progen -o helloezx.pro
5. 生成makefile文件, 然后编译helloEZX.
tmake helloezx.pro -o Makefile
make
6. 不出意外的话,当前目录会生成一个helloEZX程序,将其复制到手机存储卡上,telnet到手机,运行起来。
. /home/native/.profile <-- this command start with dot and space too.
/mmc/mmca1/HelloEZX
屏幕上是否出现了画面?恭喜你,到此图形开发环境的搭建成功了。
参考文献:
1. Unofficial EZX Crosstool and SDK for Motorola EZX Phones (A780, E680i, A1200, E6) from Sam Revitch (samr7) and FoxE6.