深度剖析E680G应用二.MPKG
草木瓜 20060818
相关资源下载 http://play.younet.com/view.php?tid=18578
一、补充说明
上文已完全分析了Loader的实质,试想自已写个Loader脚本,不管是卸载还是
扩展都是很轻松的事。这里还需要补充说明一下,上文提到Shell脚本在E680g图形
化界面下是不能直接运行的。这里有两种办法,一种通过关联Loader脚本运行,另
一种可以直接配置到系统菜单里解释运行,这时便于Loader没有任何关系。
Loader的作用只是方便于在图形化界面下关联运行Shell脚本。
修改PlugCarDB或者InstalledDB需要重新更改菜单顺序,系统是把配置数据载
入内存再进行处理的。
二、通过USB实现Telnet
要继续深入下去,不谈Telnet是完全不可能的事,Telnet可以看到手机操作系统
的完全目录!可以执行Linux很多有用的Shell脚本,DIY也才算真正开始。
如何实现,网上这类文章也是比较泛滥!下面只简单说明一下。可以去友人网,
www.e680.net等这类网站去查看详细说明。
1.写个脚本文件,名称随意,比如usb.lin,复制到手机上卡上任意地方。
#!/bin/bash
echo MotNet > /proc/motusbd
2.准备Moto E680 的 USBNET 驱动
3.Modem方式USB连接电脑,安装好驱动
4.选择usb.lin打开方式,用Loader应用程序打开
5.telnet 169.254.142.2 输入root,回车,这时直接在电脑路径里输入
\169.254.142.2system,即可访问所有文件。
三、MPKG是什么
坛子上说:运行扩展名为MPKG程序,需要安装MPKG。
至于大家所下载mpkg安装程序,只是shell高手自个写的安装脚本罢了。安装程
序过程是怎么样的?说白了就是复制文件嘛,管你是Windows还是Linux!
而那些扩展名为mpkg文件是和mtf文件是一样的,还是Linux下tar文件包的gunzip
压缩包,格式就是.tar.gz。MPKG安装也是差不多的意思,一样的解压缩,所不同的是,
还需要修改InstalledDB或者PlugCardDB这两个文件,为的是让我们能在菜单上直接看
到嘛。
以友人网GMS提供的mp3播放器的mpkg文件为例!
下载地址:http://play.younet.com/view.php?tid=15040
找到19425526.mpkg文件,改名19425526.tar.gz,解压缩出mp3player文件夹,把
这个文件夹复制到手机上,找到mp3player文件夹里的mp3player,这个是linux下的应用
执行程序。(关于Linux下文件类型的,还是需要找些资料熟悉一下,连应用程序是哪个
都不知道的话,也就无语了。)长按这个文件,打开方式选择Loader应用程序。你会发现
播放器运行没有任何问题!
思考下,原来什么mpkg安装,搞得只是让我在菜单上看到罢了,我复制过去就可以
直接运行,又何必再费事。不过也有问题,没有快捷方式啊,总不能每次找文件夹吧。
建立快捷方式可以写个这样的Shell脚本,可以命名为mp3.lin。打开方式用Loader
脚本关联,这个文件不管在哪个位置,只要一点击就会执行。内容如下:
#!/bin/bash
#系统的环境变量
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
cd /mmc/mmca1/mp3player #这个路径当然是你自已手机上的
./mp3player #在当前路径下运行mp3player
这里重点说下这系统的环境变量。
如果不在PlugCardDB中配置文件,直接用Loader关联程序打开的话是不需要配置这
些的。
反而如果在PlugCardDB中配置好,想在菜单直接运行的话,是必须设置环境变量的。
这时不会关联Loader去运行。
当然不管什么时候设置的话都不会出错。这些变量在脚本运行结束就被释放了。
四、我对MPKG安装软件的管理方法,给大家一些参考。
/mmc/mmca1/Soft 存放各类复制过来的mpkg软件
如:
/mmc/mmca1/Soft/liwei 脚本Loader(其实就是上篇文章那句exec Shell)
/mmc/mmca1/Soft/shortcuts 自定义的收藏夹,后面会讲到
/mmc/mmca1/Soft/fm 软件 收音机
/mmc/mmca1/Soft/mp3player 软件 mp3播放器
/mmc/mmca1/Soft/doom1 游戏 doom1
/mmc/mmca1/Soft/quake 游戏 quake
...
/mmc/mmca1/Soft/public 存放用于脚本提示的录音文件,如进程已经关闭,打开之
类信息。
如:
/mmc/mmca1/Soft/exsit.wav
...
/mmc/mmca1/Exe 存放复制过来的mpkg软件运行脚本,之所以用英文名主要是
考虑可以在telent下测试脚本,中文全是????,即便解决了,输入中文也是麻
烦。作用就相当于快捷方式。
如:
/mmc/mmca1/Exe/fm.lin
/mmc/mmca1/Exe/fm_close.lin close的lin主要是为了便于隐藏后随时关闭
/mmc/mmca1/Exe/mp3.lin
/mmc/mmca1/Exe/mp3_close.lin
/mmc/mmca1/Exe/doom1.lin
/mmc/mmca1/Exe/quk.lin
...
Loader的配置信息肯定是要加到PlugCardDB里面,也建立了lin与Loader的文件
关联。另外shortcuts也需要加到里面。下面主要说明下shortcuts的内容。
shortcuts目录里面包括了自定义的脚本shortcuts.sh,图标自已可以自行添
加,大图标32*32,小图标24*24,别忘了在PlugCardDB把图标名也加上。
shortcuts.sh 内容如下:
#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
#系统收藏夹默认访问路径
export MYSTUFF_DATA_PATH=/mmc/mmca1/Exe
#设置/mmc/mmca1/Exe的访问权限,不让mystuff在Exe下瞎建文件夹
chmod 444 /mmc/mmca1/Exe
cd /usr/SYSqtapp/mystuff
./mystuff
chmod 777 /mmc/mmca1/Exe
MYSTUFF_DATA_PATH这类变量可以查看/home/native/.profile这个文件。如何得到
收藏夹是哪个进程,可以打开它,在telnet中ps ax或者ps -ef查看。
这样在PlugCardDB里配置好内容,在菜单点击一下就可以直接进入Exe目录中了,
想启动哪个软件就随意了。这时候已经完全抛开MPKG的束缚了!
五、结束
希望大家能真正透彻了解Loader与MKPG,完全自已DIY,这两篇文章着重方法一些,
在看方法时最重要是提炼思想。
遗憾的是,能力有限到目前为止还不能不通过刷机解决显示“应用程序”的问题。这
个目前估计可以通过Java程序调用来实现。
最后再给出一些文件的内容。.lin里面的wav文件是自已的录音文件,主要用于提
示,熟悉的人一看就明白了,不熟悉的话研究下Linux Shell吧,上手不难的。
mp3.lin
#!/bin/bash
Moto_AlertProcess='/usr/SYSqtapp/phone/alertprocess'
Moto_AlertExistFile='/mmc/mmca1/Soft/public/exist.wav'
Moto_AlertInfoFile='/mmc/mmca1/Soft/public/info.mid'
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertInfoFile
if ps -ef | grep "mp3player" | grep -v grep
then
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertExistFile
else
cd /mmc/mmca1/Soft/mp3player
./mp3player
fi
mp3_close.lin
#!/bin/bash
Moto_AlertProcess='/usr/SYSqtapp/phone/alertprocess'
Moto_AlertKillFile='/mmc/mmca1/Soft/public/kill.wav'
Moto_AlertNoFile='/mmc/mmca1/Soft/public/no.wav'
Moto_AlertInfoFile='/mmc/mmca1/Soft/public/info.mid'
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertInfoFile
if ps -ef | grep "mp3player" | grep -v grep
then
start-stop-daemon --start --exec /bin/kill ` pidof mp3player `
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertKillFile
else
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertNoFile
fi
PlugCardDB中关于loader和shortcuts的配置信息
[AppLinkRecord100000001]
AllPosition =
BigIcon = liwei.gif
Directory = ../../../../mmc/mmca1/Soft/liwei
Exec = liwei
Group = 5
Icon = liwei_sm.gif
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = liwei
OsVersion =
Position = 17
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000001
[AppLinkRecord100000002]
AllPosition =
BigIcon = big.png
Directory = ../../../../mmc/mmca1/Soft/shortcuts
Exec = shortcuts.sh
Group = 5
Icon = sm.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name =
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000002