您的位置:首页 > 百科大全 |

如何修改mpkg格式的文件

    可能现在大家都刷机了吧,没有刷机的可能很少了。不过可能还有部分朋友由于一些原因没有刷机,这个方法就是为你准备的。

    思路是把mpkg文件分成两个部分,一个是新的mpkg包,另一个是放到sd卡上的mtf包。mpkg、mtf文件都是tar.gz格式的,是使用tar gzip混合压缩的,一般压缩率在50%或者更低。如果mpkg文件大小在2M,那么解压缩后可能在4、5Mb左右,装几个这种文件手机的20M可用内存就不够了,所以mpkg文件要进行修改,修改后的mpkg软件、游戏,每个mpkg几乎只占用手机内存的4到5k的空间,安装多少个mpkg文件都无所谓了。mpkg的文件在windows上可以通过winrar解压,但是没有办法再压缩成tgz格式(我没有在网上找到这样的软件),所以需要linux的shell环境来压缩,打建linux的shell环境的方法很多,一个是安装linux系统,另外一个是安装vwware虚拟机,还有就是安装cygwin的模拟linux环境。手机上解压缩的mpkg包是放到/diska/.system/QTDownload/目录下,而mtf是根据包内的绝对路径解压缩的,所以修改的思路就是把原有mpkg包解压后分成两部分,一个是mpkg包,包含.destop、.lin和.webp文件,主要是用来引导mtf包中的核心程序;另外一个是mtf包,包含其余的文件,有核心的程序文件,和一些资源文件。

拿mp3player.mpkg文件来说,原包中是这个样子:
.mp3player
.mp3playerCOPYING
.mp3playerequalizer.conf
.mp3playericon.webp
.mp3playericon_sm.webp
.mp3playermp3player
.mp3playermp3player.conf
.mp3playermp3player.desktop
.mp3playermp3player.pl
.mp3playerREADME
.mp3playerskins
.mp3playerskinsDenon Antique.webp
.mp3playerskinsNucleo N-Log v2G.webp
.mp3playerskinsPioneer Wood.webp
.mp3playerskinsWinamp X.webp
.mp3playerzh-cn.qm

    mpkg包中要改的就是原包中.destop文件“Exec=”后指明的那个文件,它是用来调用主程序文件的。mp3player包中.destop文件内容如下:

[Desktop Entry]
BigIcon=icon.webp
Comment=MP3 Player for E680i
Exec=mp3player
Icon=icon_sm.webp
Name=MP3Player
Version=0.1
OsVersion=1.1
Shared=2
Type=Application

    要修改的就是“Exec=”后指明的那个文件。一般情况下这个文件应该是.lin文件,是个脚本文件,但是此包中是个二进制文件,其实就是主程序文件,不能修改,所以我们要添加一个mp3player.lin文件,用它来启动主程序,从而把主程序放到sd卡上,内容如下:
#!/bin/sh
cd /mmc/mmca1/.system/QTDownLoad/mp3player
./mp3player

    这是脚本文件中,第一行表示用/bin/sh文件来解释执行这个脚本,第二行表示进入/mmc/mmca1/.system/QTDownLoad/mp3player目录,第三行就是执行当前目录下的mp3player文件。而.destop文件中也要做相应的修改,“Exec=mp3player”改为“Exec=mp3player.lin”。
可能其他mpkg文件内容不同,大概的方法都是类似的,可以自己尝试。

接下来说一下如何打包。
在shell的命令行下,建立mp3player目录:

mkdir mp3player

    把.webp、.destop、.lin放到mp3player目录下,在mp3player目录外执行
tar zcvf mp3player.mpkg mp3player
这是把mp3player目录打包为mp3player.mpkg文件。
其余文件放到mmc/mmca1/.system/QTDownLoad/mp3player下,建立方法:

mkdir -p mmc/mmca1/.system/QTDownLoad/mp3player

    在目录外执行 tar zcvf mp3player.mtf mmc/mmca1/.system/QTDownLoad/mp3player
这是把mmc/mmca1/.system/QTDownLoad/mp3player打包为mp3player.mtf

修改完毕。

修改后的mpkg包:
mp3player
mp3playericon.webp
mp3playericon_sm.webp
mp3playermp3player.desktop
mp3playermp3player.lin

修改后的mtf包:
mmcmmca1.systemQTDownLoadmp3player
mmcmmca1.systemQTDownLoadmp3playerCOPYING
mmcmmca1.systemQTDownLoadmp3playerREADME
mmcmmca1.systemQTDownLoadmp3playerequalizer.conf
mmcmmca1.systemQTDownLoadmp3playermp3player.conf
mmcmmca1.systemQTDownLoadmp3playerskins
mmcmmca1.systemQTDownLoadmp3playerskinsDenon Antique.webp
mmcmmca1.systemQTDownLoadmp3playerskinsNucleo N-Log v2G.webp
mmcmmca1.systemQTDownLoadmp3playerskinsPioneer Wood.webp
mmcmmca1.systemQTDownLoadmp3playerskinsWinamp X.webp
mmcmmca1.systemQTDownLoadmp3playerskinsNatalie Bottome.webp
mmcmmca1.systemQTDownLoadmp3playerskinsblack.webp
mmcmmca1.systemQTDownLoadmp3playerskinscar.webp
mmcmmca1.systemQTDownLoadmp3playerskinsclassical.webp
mmcmmca1.systemQTDownLoadmp3playerskinsdark blue.webp
mmcmmca1.systemQTDownLoadmp3playerskinsdragon.webp
mmcmmca1.systemQTDownLoadmp3playerskinsflame.webp
mmcmmca1.systemQTDownLoadmp3playerskinsgreen.webp
mmcmmca1.systemQTDownLoadmp3playerskinssea.webp
mmcmmca1.systemQTDownLoadmp3playerzh-cn.qm
mmcmmca1.systemQTDownLoadmp3playermp3player.pl
mmcmmca1.systemQTDownLoadmp3playermp3player
 
    可以看到mtf包中文件的路径已经变成了mmcmmca1.systemQTDownLoadmp3player,这个路径就是绝对路径,只有这样,mtf包才能正常解压缩。