简介
本文简介在 S60 3rd Edition 上的Python for S60 文档所述内容并不针对运行于S60 1st或2nd
Edition的Python for S60,那些平台上的开发者不必参考本文。 S60 3rd
Edition及后续版本引入了平台安全特性,这就要求对整个Python for S60的框架结构作一些改变,以便支持S60 3rd
Edition。 在 S60 3rd Edition 上的Python for S60方案基于下面两方面的用例:
独立安装
本质上,这使得各种Python应用与本地Symbian应用毫无区别,用户并看不出这是一个Python应用还是C++应用。应用在终端主菜单中可见。
嵌入式安装
在终端菜单中可见的脚本shell,用户能运行单独的Python脚本。 本文所提供的信息介绍新引入的平台安全特性对Python
for S60的影响,以及在本地扩展方面的开发选项和建议等。
面向S60 3rd Edition的Python for S60 概述
S60 3rd
Edition终端强制实施平台安全。这意味着,所有SISX文件的安装都需要经过事先认证。软件安装器将检查SISX包中的应用是否经过认证。有关认证
方面的更多信息请参阅“认证与分发”一节。
平台安全的基本概念是’capability’,这一术语指出正在终端中运行的进程能做什么。由于标准Python for
S60应用与某个本地应用并无差别,它们都运行于某个独立的线程,如果它使用了一些受控的API或通过SISX包发行,就必须经过认证。
一个Python独立应用的功能受限于分配给解释器DLL的capabilities。“认证与分发”一节中列出了这些capabilities。换句话
说,这是使用诺基亚签名的Python for
S60的所有Python应用的上限。如有需要,当然也可以为某些特殊目的以更大的capabilities对Python解释器DLL进行认证签名,但
这不在本文讨论范围内。
作为从终端主菜单看到的Python应用,脚本shell也需要经过认证。脚本shell不会让脚本程序以比自己大的capabilities运行,因而
也就不会被诺基亚授予与解释器DLL同等的capabilities。这并不会影响开发工作,因为开发者可以用开发伙伴证书对脚本shell进行认证。关
于开发伙伴证书方面的信息请访问https://www.symbiansigned.com/。由于需要对解释器DLL和脚本shell进行分别认证,就需要两个包(’X’表示版本号):
• PythonForS60-X_X_X_3rded.SIS –
含有解释器DLL、诺基亚提供的所有本地Python扩展和其他需要的文件 •
PythonScriptShell-X_X_X_3rded.SIS – 含有脚本shell应用,需要与上面的包一起运行
开发伙伴们需要牢记的是:脚本shell只是一个普通应用,类似于您用py2sis包装了一个应用,必须遵循上文讲述过的那些安全先决条件。解释器DLL
用于所有标准的Python应用,但为使一些Python应用能尽可能自由地访问受控资源,解释器DLL这一实体需要用更大的capabilities集
合来认证。
注:终端主菜单中可见的脚本shell应用与其他独立的Python应用没有任何关系(即,它们之
间没有逻辑上和概念上的依存关系)。
认证与分发
多种认证和发行方法可用于在S60 3rd Edition实际终端上运行脚本,如:
1) 使用开发伙伴证书认证SISX
2) 自认证SISX
3) 用上述1) 或2) 对Python脚本shell进行认证
4) 用py2sis工具对脚本打包(并对这个SISX包进行认证)。有关py2sis的更多信息请参阅《一步一步创建3rd
Edition独立应用》。
如选用第一种方法,开发伙伴们能在正式提交Symbian
Signed认证之前用开发伙伴证书对应用进行认证,并在产品终端上以几乎全部capabilities对应用进行测试。再者,您计划为S60
3rd Edition终端发行的应用需要经过认证,因为在目标终端上实施了平台安全限制措施。
如选用第四种方法,开发伙伴们可以使用py2sis程序对脚本打包成可安装的SISX包。用py2sis打成的这些包要求在终端上已经安装有’PythonForS60-X_X_X_3rded.SIS’。
下表简要说明了平台安全所影响到的一些Python函数或模块:
ACS =表示需要ACS Publisher ID获取这个级别的开发伙伴证书。
= 如果这个可执行文件没有经过特定的capabilities认证,将给出错误数据。
无需capabilities: • camera • e32db • inbox • audio • socket •
graphics
诺基亚为Python for S60所分配(不包括脚本shell应用在内)的capabilities如下图所示:
注:如需要更多的capabilities,就应如前所述修改Python DLL的 capabilities并具
有足够capabilities的证书对SISX包进行认证。
一步一步创建S60 3rd Edition独立应用
• 步骤1:安装一个工作版的S60 3rd Edition C++ SDK(只在Windows环境中测试过)。
注:安装后的SDK将能编译如’helloworld’基本范例程序。
• 步骤2:还需要有一个工作版的Python(测试过Python 2.4.4)。 欲获取Python
2.4.4,请访问:http://www.python.org/download/releases/2.4.4 •
步骤3:标准的Python for
S60源代码版,附py2sis(测试过pys60-1_3_15_src)工具,可用于从您的Python脚本创建独立应用。对终端用户来说,被打包的
Python应用与本地应用并无区别。如欲获取pys60-1_3_15_src,请访问:https://sourceforge.net/project/showfiles.php?
group_id=154155&package_id=171153 • 步骤4:将Python for
S60源代码包解压到C:\Symbian\9.1\S60_3rd_MR\ •
步骤5:目前Py2SIS还要求SDK配置已被subst,也就是说, C:\>subst V:
C:\Symbian\9.1\S60_3rd_MR
注:Py2SIS必须存在于S60 3rd Edition SDK所处的被subst的相同盘符上,在上例中,正确的盘符是’V:’
• 步骤6:调用下列代码(如”ball.py”是我们要打包的脚本):
V:\pys60-1_3_15_src\src\py2sis>C:\Python24\python
py2sis.py ball.py –uid=0x01234567 –sdk30 –caps=”NetworkServices
LocalServices ReadUserData WriteUserData” –leavetemp •
步骤7:用”SignSIS”对创建好的包进行认证,操作举例如下:
V:\pys60-1_3_15_src\src\py2sis> signsis ball.sis
ball.sisx yourcert.cer yourkey.key password
总结
本文介绍了S60 3rd Edition上的Python for S60。文档内容可概述如下:
•脚本shell应用被从主Python解释器发行版中分离出来成为一个新的SISX文件。这两个Python文件可以用不同组合的capabilities认证。
•为能使用Python for
S60中更为广泛的功能,也为了能访问终端中更多的地方,开发伙伴们可能需要一个开发伙伴证书。
•Python的一些特定文件产生了变化。这些变化会影响到如解释器搜索路径等。
术语解释
Capability
一种能力,当被某个运行中的进程所持有时,这个capability将准许其访问一些系统资源。
PyS60
Python for S60,在本文中,这个术语还指解释器DLL和一些本地扩展。
SISX
用于软件安装器(Software Installer)的SIS文件新格式。请注意文件后缀还是.sis
Script shell
脚本shell。在本文中,就是终端菜单中可见的一个S60应用,让用户能运行各个Python脚本。 Python for
S60发行产品的一部分。
py2sis
一个工具,能将Python脚本打包成SIS包,用于让软件安装器将之安装到某台Symbian OS终端中。Python for
S60发行产品的一部分。
参考资源
2.诺基亚论坛,http://www.forum.nokia.com,“Python for Series 60
Platform API参考”