Building Qt for Symbian 3 Devices: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Decode HTML entity numbers)
(Simplify punctuation)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Outdated|reason=The Symbian platform is no longer supported.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}


[[Category:Developing_Qt::Symbian]]
[[Category:Developing_Qt::Symbian]]
[toc align_right="yes" depth="3"]


= Building Qt for Symbian^3 devices =
= Building Qt for Symbian^3 devices =
Line 52: Line 52:


=== Signing certificate ===
=== Signing certificate ===
A signing certificate is needed if you are not satisfied with the default self-signable set of supported capabilities for Qt libraries (i.e. LocalServices, NetworkServices, ReadUserData, UserEnvironment, and WriteUserData). The capabilities Qt libraries require depends on the capabilities of the applications you plan on running against the Qt libraries you build; the Qt libraries need at least all of the capabilities the application has. The best certificate to use would be a manufacturer’s RnD certificate, but unless you are working for a device manufacturer, you probably won’t have access to such a certificate. The next best thing is a Symbian developer certificate. See [https://www.symbiansigned.com/app/page here] for details about acquiring a developer certificate.
A signing certificate is needed if you are not satisfied with the default self-signable set of supported capabilities for Qt libraries (i.e. LocalServices, NetworkServices, ReadUserData, UserEnvironment, and WriteUserData). The capabilities Qt libraries require depends on the capabilities of the applications you plan on running against the Qt libraries you build; the Qt libraries need at least all of the capabilities the application has. The best certificate to use would be a manufacturer's RnD certificate, but unless you are working for a device manufacturer, you probably won't have access to such a certificate. The next best thing is a Symbian developer certificate. See [https://www.symbiansigned.com/app/page here] for details about acquiring a developer certificate.


== Building Qt ==
== Building Qt ==
Line 61: Line 61:
</code>
</code>


* '''Note:''' If you do not need Webkit, you can reduce the build time around 50 by adding -no-webkit” parameter to configure.
* '''Note:''' If you do not need Webkit, you can reduce the build time around 50 by adding "-no-webkit" parameter to configure.


=== Build Qt & QtWebkit ===
=== Build Qt & QtWebkit ===
Line 73: Line 73:
== Installing Qt libraries to device ==
== Installing Qt libraries to device ==


By default Qt libraries are built with “All -Tcb” capabilities, which requires a certificate normally only available for device manufacturers to sign. Depending on what kind of certificate you have available, you might need to patch the capabilities of the Qt libraries. To create Qt installation packages, run the following commands:
By default Qt libraries are built with "All -Tcb" capabilities, which requires a certificate normally only available for device manufacturers to sign. Depending on what kind of certificate you have available, you might need to patch the capabilities of the Qt libraries. To create Qt installation packages, run the following commands:


If you are content with default set of self-signable capabilities and do not have any extra certificate:
If you are content with default set of self-signable capabilities and do not have any extra certificate:
Line 106: Line 106:
* '''Note 1:''' <code>QT_SIS_OPTIONS=-i</code> is simply a convenience parameter that causes automatic installation to a connected device after package is created.
* '''Note 1:''' <code>QT_SIS_OPTIONS=-i</code> is simply a convenience parameter that causes automatic installation to a connected device after package is created.


* '''Note 2:''' Infixing Qml plugins is broken in Qt 4.7.0 and 4.7.1 releases, so if the device already has Qt 4.7.x pre-installed, you will need to edit the .pkg files and remove all lines with qmldir on them before creating the package or you won’t be able to install it due to same files already having been installed by existing package. You can also expect qml plugins not working properly with infixed Qt in these releases.
* '''Note 2:''' Infixing Qml plugins is broken in Qt 4.7.0 and 4.7.1 releases, so if the device already has Qt 4.7.x pre-installed, you will need to edit the .pkg files and remove all lines with qmldir on them before creating the package or you won't be able to install it due to same files already having been installed by existing package. You can also expect qml plugins not working properly with infixed Qt in these releases.


== Building applications ==
== Building applications ==


Build your own applications normally using the same make target that you used to build the Qt and use same “make sis” options. E.g. for RVCT 2.2 build using self-signed certificate, use the following commands:
Build your own applications normally using the same make target that you used to build the Qt and use same "make sis" options. E.g. for RVCT 2.2 build using self-signed certificate, use the following commands:


<code>cd <your app dir>
<code>cd <your app dir>

Latest revision as of 13:20, 23 August 2015

IMPORTANT: The content of this page is outdated. Reason: The Symbian platform is no longer supported.
If you have checked or updated this page and found the content to be suitable, please remove this notice.
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Building Qt for Symbian^3 devices

This guide provides information required to set up environment and build Qt libraries that can be installed on a Symbian^3 device. The produced libraries will not be binary compatible with any official Qt releases, so any applications you wish to run must be also built against these libraries.

Environment setup

The following tools are needed for building a Qt package:

' Alternatively, (RVCT)_Quick_Start RVCT 4.0 (build 821 or newer) can be used. Unlike version 2.2, version 4.0 is available free of charge for small organizations.

Required environment variables:

  • EPOCROOT environment variable must point to PDK root. E.g.
    set EPOCROOT=C:PDK3.0.3
    
  • Depending on compiler you are using:
    • RVCT22BIN, RVCT22INC, and RVCT22LIB. These need to point to
      bin
      
      ,
      inc
      
      (or
      include
      
      ), and
      lib
      
      directories under your RVCT 2.2 installation. Normally these are set by RVCT 2.2 installer.
    • RVCT40BIN, RVCT40INC, and RVCT40LIB are the corresponding variables for RVCT 4.0.
  • PATH environment variable must contain the following paths in the beginning to ensure correct tools are used.
    • lt;Qt source rootgt;bin
      
      for qmake and Qt tools.
    • lt;PDT installation rootgt;Raptorwin32mingwbin
      
      for Mingw make.
    • lt;PDT installation rootgt;Raptorbin
      
      for sbs tool.
    • EPOCROOT%epoc32tools
      
      for required Symbian tools.

Here are sample commands you can edit to match your environment and save as setenv.bat to set up your Qt building environment:


Change to your Qt source root directory:

 C:
 cd

Set up the environment variables:

 SET EPOCROOT=C:.0.3 SET RVCT22BIN=C:_22\bin
 SET RVCT22INC=C:_22\inc
 SET RVCT22LIB=C:_22\lib
 SET PATH=%CD%;C:_1.7\Raptor\win32\mingw\bin;C:_1.7\Raptor\bin;%EPOCROOT%epoc32\tools;%PATH%


Signing certificate

A signing certificate is needed if you are not satisfied with the default self-signable set of supported capabilities for Qt libraries (i.e. LocalServices, NetworkServices, ReadUserData, UserEnvironment, and WriteUserData). The capabilities Qt libraries require depends on the capabilities of the applications you plan on running against the Qt libraries you build; the Qt libraries need at least all of the capabilities the application has. The best certificate to use would be a manufacturer's RnD certificate, but unless you are working for a device manufacturer, you probably won't have access to such a certificate. The next best thing is a Symbian developer certificate. See here for details about acquiring a developer certificate.

Building Qt

Configure Qt

Give the following command in your Qt source root directory to configure Qt:

configure -platform win32-g++ -xplatform symbian-sbsv2 -openvg -graphicssystem openvg -no-usedeffiles -nomake demos -nomake examples -qtlibinfix OfMyOwn -make make
  • Note: If you do not need Webkit, you can reduce the build time around 50 by adding "-no-webkit" parameter to configure.

Build Qt & QtWebkit

Depending on your chosen compiler, select one of commands below to compile Qt and give it at the Qt source root directory:

make release-armv6
make release-armv6-rvct4.0

Installing Qt libraries to device

By default Qt libraries are built with "All -Tcb" capabilities, which requires a certificate normally only available for device manufacturers to sign. Depending on what kind of certificate you have available, you might need to patch the capabilities of the Qt libraries. To create Qt installation packages, run the following commands:

If you are content with default set of self-signable capabilities and do not have any extra certificate:

cd src\s60installs
make sis QT_SIS_OPTIONS=-i

cd ..rdparty\webkit\WebCore
make sis QT_SIS_OPTIONS=-i

If you have a manufacturer RnD certificate and a RnD device:

cd src\s60installs
make sis QT_SIS_OPTIONS=-i QT_SIS_CERTIFICATE=<certificate file> QT_SIS_KEY=<certificate key file>

cd ..rdparty\webkit\WebCore
make sis QT_SIS_OPTIONS=-i QT_SIS_CERTIFICATE=<certificate file> QT_SIS_KEY=<certificate key file>

If you are using developer certificate with maximum non-manufacturer capabilities:

cd src\s60installs
patch_capabilities.pl QtOfMyOwn_template.pkg release-armv6 "ALL -Tcb -AllFiles -DRM"
make sis QT_SIS_OPTIONS=-i QT_SIS_CERTIFICATE=<certificate file> QT_SIS_KEY=<certificate key file>

cd ..rdparty\webkit\WebCore
patch_capabilities.pl QtWebKitOfMyOwn_template.pkg release-armv6 "ALL -Tcb -AllFiles -DRM"
make sis QT_SIS_OPTIONS=-i QT_SIS_CERTIFICATE=<certificate file> QT_SIS_KEY=<certificate key file>
  • Note 1:
    QT_SIS_OPTIONS=-i
    
    is simply a convenience parameter that causes automatic installation to a connected device after package is created.
  • Note 2: Infixing Qml plugins is broken in Qt 4.7.0 and 4.7.1 releases, so if the device already has Qt 4.7.x pre-installed, you will need to edit the .pkg files and remove all lines with qmldir on them before creating the package or you won't be able to install it due to same files already having been installed by existing package. You can also expect qml plugins not working properly with infixed Qt in these releases.

Building applications

Build your own applications normally using the same make target that you used to build the Qt and use same "make sis" options. E.g. for RVCT 2.2 build using self-signed certificate, use the following commands:

cd <your app dir>
qmake
make release-armv6
make sis QT_SIS_OPTIONS=-i