用Python做S60系统的软件,免不了要把程序打包发布出来.这里介绍两种有效的方法,一种是在手机上打包,一种是在PC上打包.
第一种方法:手机上打包
其实关于Pys60程序在手机上打包的软件有好多,我用的是一款叫做"智能解包"软件,这款软件功能比较强大,它不仅可以完成打包,解包,而且还可以自签名,通用签名,清除签名等软件发布时常用的操作,简单可以说是一步到位,十分方便.界面如下图:
请选择工具里的大蟒来打包,我直接用"打包"菜单来打包,老是显示要我选择文件,搞不懂.知道的朋友跟我说一声.详细操作过程大家可以在手机上实践.同时这款软件也自还了操作说明,其中最重要的算是PKG文件的修改和配置了,不过整个过程也很简单,一看就知道如何操作.本来它还可以在打包的同时完成签名的,不过在我的机子上签不了,也不知道为什么,只有自己手动完成签名,手动签也只能签通用的.用自己的证书签进也会报错.尽管如此,本人还是推荐用它在手机上打包PyS60的程序.通常我还会用到别一款很出名的手机上签名软件"自由签名",它的功能就比较单一了,操作也更简单.这里就不多说了.
第二种方法:PC上打包
pc上打包相对比较麻烦一点.我用的是Pys60SDK自带的工具"Py2sis",这个工具位于"Epoc32\tools\py2sis"目录下.这是一个py文件的程序,执行带参数这个程序,就可以完成打包.所以关键就在于这些参数的设置.
首先,需要了解每一个参数的意义,关于具体每个参数我就不多说了,简单列一下:
py2sis.py <src> [sisfile] [--uid=0x01234567] [--appname=myapp] [--caps="cap_1 cap_2 ..."] [--presdk20] [--sdk30] [--armv5] [--leavetemp] [--autostart]
其中各参数的意义如下:
src - Source script or directory
sisfile - Path of the created SIS file
uid - Symbian UID for the application
appname - Name of the application
caps - A list of capabilities ("NONE", if caps is not given)
presdk20 - Use a format suitable for pre-SDK2.0 phones
sdk30 - Use a format suitable for SDK3.0 phones
leavetemp - Leave temporary files in place
armv5 - Generate armv5 binaries, by default gcce binaries are created. Only in SDK3.0
autostart - Start the application during the device bootstrap (SDK3.0 only)
更多的大家可以参考Py2sis文件夹下的readme文件.里面有详细的说明,还带有例子,不过都是英文的,所以得仔细的读懂才行.
其次,在执行打包之前还要设置一个虚拟盘,打包的过程上要用到.可以在命令行界面输入"subst V: C:\Symbian\9.1\S60_3rd"来设置一个虚拟的V盘代表"C:\Symbian\9.1\S60_3rd"目录.注意,这里的"C:\Symbian\9.1\S60_3rd"要根据你的实际情况来.它指的是你的"Epoc32"文件夹所在的路径.设差了可以用"subst V: /D"来删除V盘.
通常一条比较完整的在命令行下的打包执行命令就如下:
V:\epoc32\tools\py2sis\py2sis.py V:\epoc32\winscw\c\python\贪吃蛇2.0.py --uid=0x01234567 --appname=LuckSnake --sdk30 --caps="NetworkServices LocalServices ReadUserData WriteUserData Location" --leavetemp
有时,用上述语句打包会编译错误,提示:
ERROR [Errno 2] No such file or directory: '\\Epoc32\\release\\GCCE\\UREL\\XXXXX.exe'
说是找不到文件,其实在它指定的目录下,那个文件是存在的.其实,它在你安装Pys60SDK的盘符的根目录下也创建出来的名为epoc32的文件夹,把这个文件夹复制到"C:\Symbian\9.1\S60_3rd\Epoc32"中,然后CMD再进入刚才用SDK根目录虚拟出的V盘,还是来到py2sis的目录,再调用一遍就成功了.至于这里面的原因,我想可能SDK安装目录的问题.说到底PY2SIS的设计对目录要求比较列,不能随便更改.
说了这么多,自己要觉得很麻烦,于是用到网友提供的一个批处理文件(自己修改了一下,加入了自动设置虚拟盘等)来搞定这么多的东东:
@echo off
subst V: /D
subst V: C:\Symbian\9.1\S60_3rd
C:\Symbian\9.1\S60_3rd\Epoc32\tools\py2sis\py2sis.py C:\Symbian\9.1\S60_3rd\Epoc32\winscw\c\python\贪吃蛇2.0.py --uid=0x01234567 --appname=LuckSnake --sdk30 --caps="NetworkServices LocalServices ReadUserData WriteUserData Location" --leavetemp
xcopy C:\epoc32 V:\Epoc32\ /E /Y
rd C:\epoc32 /Q /S
V:\epoc32\tools\py2sis\py2sis.py V:\epoc32\winscw\c\python\贪吃蛇2.0.py --uid=0x01234567 --appname=LuckSnake --sdk30 --caps="NetworkServices LocalServices ReadUserData WriteUserData Location" --leavetemp
pause
它上面的代码存为.bat文件,至于这里面的一个内容是需要你用自己的路径和名字来替换,我想,只要仔细研究一下,就知道应该怎么替换了.然后执行,就可以在你的当前py2sis目录下得到打好包的sis文件了.
总之,个人还是比较喜欢用手机上打包的工具,直观,配置方便快捷.
<完>
※※※※※※※※※※※※※※--我的程序人生--※※※※※※※※※※※※※※