Tuesday, March 30, 2010

Installing Qt Mobility 1.0.0-beta1 on Symbian S60 SDK

Qt Mobility SDK installation has been improved a lot since the previous Technology Preview.

Be aware that previous Qt Mobility installation will likely conflict with the new Qt Mobility library. I also had this problem, then gave up and reinstall my Symbian S60 SDK. :-P So, if you try and not succeed, before you begin, clean your system from:
  • Qt Mobility
  • Qt for Symbian
  • Symbian S60 SDK
  • Make sure to cleanly delete the directories of the above
You can leave ADT / Carbide.c++ and Qt Creator installed.

Then reinstall Qt for Symbian development environment: (detailed instructions here)
  1. Reinstall Symbian S60 SDK.
  2. Reinstall Open C/C++ Plugin for Symbian S60 SDK.
  3. Reinstall Qt for Symbian.
Unlike previous Qt Mobility Tech Preview, Qt Mobility for Symbian 1.0.0-beta1 is now in a separate distribution. You don't need to download the regular Qt Mobility distribution if you just want to develop for Symbian.

Now you can unpack Qt Mobility for Symbian distribution to a folder and install it:
  1. Download Qt Mobility for Symbian here. The distribution file is named like this: qt-mobility-symbian-*.zip. Unpack it to a folder.
  2. Install to Symbian SDK. Installing the mobility libraries to your Symbian SDK happens by extracting the 'qt-mobility-1.0.0-beta1-libraries<S60SDK>.zip' file to your Symbian SDK.
  3. Install Qt Mobility to Qt SDK. Copy the mobility.prf file to your QtDIR/mkspecs/features directory
  4. Optional: Install to Nokia/Symbian S60 device. Install qt-mobility-1.0.0-beta1.sis to your device using Bluetooth, USB, or Nokia Ovi Suite / PC Suite.
Run Qt Creator and you should be able to build your Qt Mobility app with the new Qt Mobility for Symbian Beta.

To learn more about Symbian development, I recommend Porting to the Symbian Platform: Open Mobile Development in C/C++ (Symbian Press).

20 comments:

  1. Thanks for the great tutorials, however i am not able to get Qt mobility to work, firstly when i tried extracting to on top of the S60 SDK what happened was it overwrote all the other folders inside the SDK so i basically broke it, might want to mention that in the tutorial =) secondly i am a bit confused as to where the mobility.prf file can be found, after unpacking qt-mobility-src-1.0.0-beta1\features only contains mobility.prf.template and deploy.pri, a video tutorial would be nice.

    ReplyDelete
  2. I did the install and Qt-Mobility works on the S60 emulator but on the phone the programs will not start.

    How do I fix this?
    Is it a shared library path problem?

    ReplyDelete
  3. James, I think you should install both the Qt and Qt Mobility SIS files on your phone.

    Then, make sure you've properly set the Symbian capabilities in your .pro file.

    ReplyDelete
  4. Zeddy:

    First, you need to unpack the PROPER file at the PROPER folder.

    For Symbian, you DON'T get the qt-mobility-src-.........tar.gz/zip but instead the qt-mobility-symbian-......zip. Notice the "symbian" part. So make sure you download the proper file first.

    Inside that file you'll find several more files and zip files. There is a zip file that you can unpack to the S60 SDK (please notice the correct target folder, that is the folder that contains "epoc32"). And also mobility.prf that you can copy to the Qt for Symbian (not S60 SDK) features folder.

    For more exact instructions, refer to README.txt that accompanies the qt-mobility-symbian...zip file.

    ReplyDelete
  5. Thanks Hendy, that worked, but now I have another problem.

    I tried adding QMessageStore object to the Qt-Mobility querymessages example but I get link errors. The Messaging API seems to be missing something. I didn't build these binaries myself.

    There are no gcce release libs anywhere under epoc32. They are not in the zipped file.

    Can you help me with this?

    Do you have the libs for gcce release in your Qt-Mobility zip file or did you build them yourself?


    Jim

    ReplyDelete
  6. James:

    Have you copied the mobility.prf ?

    Can you confirm that other Mobility (say, Qt Mobility Contacts) work?

    Have you added

    CONFIG += mobility
    MOBILITY += messaging

    to your .pro?

    ReplyDelete
  7. I ran the logfileposition example on the N97-mini, that worked fine. The messaging example querymessages won't compile when I try to use QMessageStore::instance() and some other members of the class. I get link errors saying that the function QMessageStore::instance() is not defined.

    Here are the errors:
    "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Carbide\workspace\PhoneApp\PHONEAPP_0XE85CB282\GCCE\PHONEAPP_0XE85CB282.GCCE" UREL
    \S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Carbide\workspace\PhoneApp\PHONEAPP_0XE85CB282\GCCE\urel\PhoneApp.o: In function `PhoneApp::PhoneApp(QWidget*)':
    phoneapp.cpp:(.text+0x5e): undefined reference to `QtMobility::QMessageStore::instance()'
    \S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Carbide\workspace\PhoneApp\PHONEAPP_0XE85CB282\GCCE\urel\PhoneApp.o: In function `PhoneApp::PhoneApp(QWidget*)':
    phoneapp.cpp:(.text+0x116): undefined reference to `QtMobility::QMessageStore::instance()'
    make[1]: *** [\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\gcce\urel\PhoneApp.exe] Error 1
    make: *** [TARGETPHONEAPP_0XE85CB282] Error 2

    ReplyDelete
  8. Have you copied the mobility.prf ?

    Yes

    >>Can you confirm that other Mobility (say, Qt Mobility Contacts) work?

    Yes but not qmlcontacts

    >> Have you added
    >>CONFIG += mobility
    >>MOBILITY += messaging
    >>to your .pro?

    Yes

    I can compile some of the others and run them on the phone but messaging seems to missing definitions in the lib.


    Jim

    ReplyDelete
  9. Hi,

    I resolved this problem. QMessageStore appears to be a back-end class that's not part of the public interface of the Messaging API. QMessageManager delegates the functionality of QMessageStore. The examples I was looking at used QMessageStore directly. I guess they're using an old version of Qt-Mobility.


    Jim

    ReplyDelete
  10. In addition to this, it's best to do a reinstall if you build the SDKs yourself and decide to use the prepackaged binaries instead. The Qt-Mobility package with the _tp suffix is another version. If you build _tp libs and then install the prepacked binaries you'll pollute your SDK's includes directories with header files from different Qt-Mobility versions.

    The main thing here is that QMessageStore was designed as a private class, only to be used in the implementation of the Qt-Mobility Messaging API.

    Thanks for all of the comments.

    Jim

    ReplyDelete
  11. Qt Mobility SDK have missing library! There isn't library for example QtMessaging.dll!

    ReplyDelete
  12. I'v install the Noki Mobile SDK with qt mobility 1.0 and i can't acces to the
    Anybody have an ideea ?

    ReplyDelete
  13. Mas Hendy maaf ngeprotin,
    aku butoh penjelasan kok bisa Qt bluetooth lib run ama nokia Qt sdk?

    ReplyDelete
  14. @anonymous: Maaf saya belum pernah pakai bluetooth di Qt.

    ReplyDelete
  15. How do I update Rollup2 for xp media center Edition 2005 in order to install windows player 11 on my comp?

    ReplyDelete
  16. whenever i start nokia s60 sdk it gives me an error like this

    "Symbian OS Fatal Error

    An error has been detected in the Sysmbian OS Emulator

    program EKern.exe::Supervisor

    Error Exception::268435456"

    ReplyDelete
  17. Every time I install ATI mobility radeon, I get an ati2dvag error message when I restart the computer?

    ReplyDelete
  18. What hurdle mobility drills can I do without hurdles, or exercises that have the same effect?

    ReplyDelete
  19. How to make voip calls on a Symbian 9 S60 V3 Nokia phone using a vpn on a broadband connection?

    ReplyDelete
  20. just linked this article on my facebook account. it’s a very interesting article for all.

    Symbian Application Development

    ReplyDelete

Be the first to comment!