在Linux上进行Symbian开发的实验性包

作者:Liang Qi | Dec 29, 2010 8:23:35 AM

原文链接:Kristian Amlie - Experimental packages for Symbian development on Linux

更新: 2010年12月23日

之前我们写过一篇如何在Linux上进行Symbian开发的文章。但是,过程有些复杂并且需要大量的手工设置。现在我们根据相同的方法更进一步,这里我们提供了预打包的环境,完整地包含了编译器、库以及您开始开发所需要的所有东西!

在这里我有义务向您报告我们的免责声明:Nokia完全不支持这些包。它们只是基于“最好地努力”而提供的,并且不能保证在您的系统中可以正常工作!另外请注意这里并不保证之后我们会对这些包进行更新,并且以后我们也许会切换到另外一种发布格式,例如通过Qt SDK。

另外,目前您还不能使用如下方式在N8上进行开发,因为在N8上现在还不能安装Qt 4.7.1。当N8收到它的第一个手机更新的时候,它将会被升级到Qt 4.7.1,然后您就可以把您的应用发布到它上面了。

现在,把上述事情放在一边,让我们来享受乐趣吧!

我自己作为一个Gentoo Linux用户,很自然地就从构建ebuild(Gentoo中的一种包描述文件)开始。对于不太熟悉Gentoo的朋友,它并不是真正的包,而只是一些如何安装包的配方。在这种方法下绝大部分包都是从源代码编译而得到的,但这并不是严格必需的,因为您的配方也可以包含一些指向已经预编译好的二进制的参考。这样做对于我的好处是通过创建这些构建包的配方,我可以使用同样的配方创建Debian包,因此我只付出了一份的代价就得到了两种包!

所以换句话说,这里提供的包类型有Gentoo的ebuild和Debian的.deb包。RPM用户应该可以通过alien使用.deb包。

更新: 一位Troll同事很友好地提供了基于Fedora的RPM包,所以RPM用户就不再需要使用alien了! (译者注:在原Trolltech或者现在Qt,Nokia开发Qt的开发人员一般自称Troll。)

对于Debian(和Ubuntu)用户:
下载并且安装下列包(仅提供32位版本):

对于RPM(Fedora)用户:
下载并且安装下列包(仅提供32位版本):

对于Gentoo用户:

  1. 如果您还没有安装layman,那么请安装它,使用 emerge -av layman
  2. layman -o http://qt.gitorious.org/qt-labs/symbian-overlay/blobs/raw/master/repositories.xml -L (首先我们需要列出安装仓库让layman知道哪些是可用的)
  3. layman -o http://qt.gitorious.org/qt-labs/symbian-overlay/blobs/raw/master/repositories.xml -A qt-symbian-overlay
  4. 为了说明您要接受哪种协议,请把 ACCEPT_LICENSE="nokia-eula sourcery-g++" 添加到 /etc/make.conf
  5. emerge -av qt-symbian-libs

对于所有用户:

在安装完之后,请重新打开您的控制台或者(重新启动)来包含由这些包所导致的环境变化。

还有一些软件是手机本身所需要的,很不走运,没有任何方法来自动化这一过程。您需要检查的第一件事情是您是否有App TRK;一些手机已经内置了,但绝大多数手机没有。通过如下方式可以很简单地检查:

  1. 通过USB线把您的手机和计算机连接起来。
  2. 如果出现了带有“Debug Services are available”的文字,那么App TRK已经内置在您的手机中了。
  3. 如果不是上述情况,那么请根据Qt文档:App TRK的指示安装它。

另外,还有一些库需要安装。

  1. 您可以进入“Application Manager”(程序管理器)查看您的手机是否包含所需的软件。对于大多数手机来说它在主菜单的“Settings”(设置)或者主菜单的“Applications”(应用程序)中。
  2. 请查找“PIPS Installer”和“Standard C++ library Common”。如果它们都至少是1.06版本的,那么就不用再安装了。
  3. 否则,您需要从这里下载并且安装它们:http://pepper.troll.no/s60prereleases/OpenC-1.7-sis-files.zip。您可以使用刚刚安装的runonphone工具通过 runonphone -s <sis-file> 来安装它们。
  4. 最后,我们需要把Qt自己安装到手机上,您可以通过如下命令来做到:
    1. runonphone -s /usr/share/qt4/qt-symbian/lib/Qt.sis
    2. runonphone -s /usr/share/qt4/qt-symbian/lib/QtWebKit.sis

当然您的应用程序的用户不需要做这些。为了使针对用户的发布更容易,请参考Symbian发布指导,特别是Smart Installer那一部分。

就是这些!您现在已经准备好进行开发了!当使用这些包进行Symbian开发的时候,唯一要注意的问题是,您必须使用qmake-symbian,而不是qmake。通过使用它,您应该可以通过如下命令试试您的第一个Hello World应用程序:

  1. cd <my-hello-world-app>
  2. qmake-symbian
  3. make runonphone

一些已知问题:

  • 有时在运行rcomp工具的时候,Wine会报错,“Failed to write UIDs”。这应该是安装程序在安装的时候考虑的,很不走运的是目前除了手动修改没有其它可以适合每一个用户的永久方案。解决办法很简单,就是运行这条命令:cp /usr/s60-sdk/epoc32/tools/uidcrc.exe `find ~/.wine/ -ipath '*windows/system32'`
  • 让gcce的ebuild正常工作还是有点麻烦。有的时候它会无原因的停在那里;如果发生这种情况,请您重试一下,也许第二次它就会正常工作,但是如果它不工作,您也别太惊奇。如果您很不幸遇到了这种情况,请您通过运行sh /usr/portage/distfiles/symbian-adt-4.4-172-arm-none-symbianelf.bin手动安装它。然后您可以把sys-devel/gcce-4.4.172添加到/etc/portage/profile/package.provided来欺骗Portage您已经安装了。
  • 除了上述之外,runonphone会在您插入手机之后自动检测USB端口的时候失败。如果出现这种情况,请阅读Qt文档中关于如何配置USB串口驱动的一节。在运行runonphone的时候,您也许可以通过为-p指定如/dev/ttyUSB1或者/dev/ttyACM1的参数来解决这一问题,详细描述在这里

祝您好运!