четверг, 16 февраля 2012 г.

Перенос приложения с Meego Harmattan на Symbian

С Harmattan на Symbian
(релиз Qt SDK на момент написания данной статьи - 1.2.0)

Сейчас я развлекаюсь тем, что переношу приложение, написанное мною для Nokia N9 с Meego Harmattan на Nokia C6 с Symbian Anna. И, дабы вы не наступали на мои грабли и не ломали себе мозг, я вам расскажу несколько основных ошибок, да парочку изменений, который я внёс в проект.

Моя первая проблема, которую я разгрёб с огромных трудом и большой потерей времени:

   elf2e32 : Error: E1025: Unrecognized capability : BAD CAP.sbs : warnings: 16sbs : errors: 2built 'arm.v5.udeb.gcce4_4_1'Run time 17 secondssbs: build log in D:\Dev\QtSDK\Symbian\SDKs\Symbian3Qt474\epoc32\build\Makefile.2012-02-15-13-43-53.94-1812.logmake.exe: Leaving directory `D:/workspace/glomacstracker' FAILED linkandpostlink for arm.v5.udeb.gcce4_4_1: epoc32\release\armv5\udeb\glomacstracker.exe mmp: glomacstracker_exe.mmp mingw32-make[1]: *** [D:/Dev/QtSDK/Symbian/SDKs/Symbian3Qt474/epoc32/release/armv5/udeb/glomacstracker.exe] Error 1sbs: error: The make-engine exited with errors.make.exe: *** [debug-gcce] Error 113:44:10: Процесс «D:\Dev\QtSDK\Symbian\SDKs\Symbian3Qt474\epoc32\tools\make.exe» завершился с кодом 2.Возникла ошибка при сборке проекта glomacstracker (цель: Устройство Symbian)Во время выполнения сборки на этапе «Сборка»


В моём случае необходимо было лезть в .pro файл проекта и перебирать symbian:TARGET.CAPABILITY
Проверяйте каждый подключенный модуль по отдельности.

Самое необходимое изменение в QML:
уберите подключение библиотеки com.nokia.meego, ибо вы пишете под симбу, вместо неё подключайте библиотеку com.nokia.symbian.

Dialog и DatePickerDialog
Мой Dialog выглядел следующим образом:

    Dialog
    {
        id: errorDialog
        title: Rectangle
            {
            color: "#DDDDDD"
            width: parent.width * 0.8
            //anchors.verticalCenter: parent.verticalCenter
            anchors.fill: parent
            height: 80
            radius: 5
            Text {
                text: errorText
                anchors.fill: parent
                verticalAlignment: Text.AlignVCenter
                horizontalAlignment: Text.AlignHCenter
                font.pixelSize: 35
            }
        }
    }

Так вот, в случае с Symbian значение title - находится только в заголовке, небольшой области, составляющей по высоте 25% от всей области диалогового окна.
Если у вас значительное количество текста (как у меня), его необходимо передать в свойство content, которое задаётся аналогичным способом.
Кроме того, если ваше диалоговое окно не содержит кнопок, в отличие от Harmattan, оно не закроется при клики за пределами диалогового окна. Чтобы это произошло, необходимо отдельно обработать метод onClickedOutside, в моём случае это выглядело так:

onClickedOutside: errorDialog.close()

В случае с DatePickerDialog, если вы не задаёте acceptButtonText какое-нибудь значение, то кнопок подтверждения у вас не будет :)

Остальные ошибки оказались мелкими, там переместить, тут переставить и т. д....

Комментариев нет:

Отправить комментарий