×
Namespaces

Variants
Actions

目前使用 Bearer API 及 Location API 需要注意的问题

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

测试基于
SDK: Qt Mobility 1.1.0

兼容于
平台:
Symbian

文章
zhouhl 在 25 Nov 2010 创建
最后由 hamishwillee 在 11 Oct 2012 编辑


Contents

引言

最新的Qt Mobility 1.1.0现在已经正式发布Qt Mobility download。 但是我们会发现其自带的一些Demo运行时会有些问题,比如weatherinfo和lightmaps。这是由一些小bug所造成了。本文就向大家介绍这些bug的成因,以及如何绕过这些小bug。


Qt (Mobility) Bearer API

Qt Mobility Bearer API 现在已经被移植到Qt 4.7 QtNetwork 库中了。从Qt 4.7开始Qt建议大家使用 Qt 的 Bearer API,而不再使用Mobility 的Bearer API。于是我们在最新的demo程序中的pro文件中会发现这样的语句:

equals(QT_MAJOR_VERSION, 4) : greaterThan(QT_MINOR_VERSION, 6) {
# use Bearer Management classes in QtNetwork module
DEFINES += BEARER_IN_QTNETWORK
} else {
MOBILITY += bearer
}

这段代码的意思是说如果我们用于开发的Qt版本号是大于4.6的,就会使用Qt Bearer,否则仍然使用Mobility Bearer。


但是由于最新的QtNetwork还不完善,使用QtNetwork中的Bearer会有点问题(例如启动后找不到Access Point)。

解决办法:

我们暂时还是要继续使用Mobility 的 Bearer。因此我们需要将上述代码中的DEFINES += BEARER_IN_QTNETWORK替换成MOBILITY += bearer就可以了。

Location capability

在使用Qt Mobility Location API 的时候需要为我们的Symbian程序添加“Location” 能力。不过由于现在还支持S60 3.1 平台,并且在S60 3rd Edition FP2之前的版本中“Location”能力是需要 open signed,无法自签名,虽然在S60 3rd Edition FP2之后的平台上“Location”能力已经可以自签名了,详情见Capabilities
因此在我们用Qt Creator编译并生成自签名sis的过程中有一个 createpackage.bat 的程序会将“Location“能力给去掉。因此当我们运行这个程序的时候,当执行到Location相关代码时会遇到诸如:Process 875, thread 876 stopped at 0x8046ae4b: Thread 0x36c has panicked. Category: Lbs Client Fault; Reason: 6的错误,它的意思是没有找到定位服务器,这是由于程序缺少“Location”能力造成的。


解决办法:

  1. 如果我们确定不会把程序安装到S60 3.1 平台上,那么我们可以修改位于QtDir/bin/ 目录下的patch_capabilities.pl 文件,找到@capabilitiesToAllow 字符串,将"Location"添加进去就可以了。
  2. 使用证书签名(在Qt Creator的Project中有个Create SIS Package的选项,我们可以选择是否使用证书、使用哪个证书签名)。


相关链接

This page was last modified on 11 October 2012, at 04:23.
73 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×