Hello All! Итак, сегодня я расскажу , об основах кодинга под смарты на базе Symbian. Данный процесс потребует некоторых усилий и терпения, а также определенного софта. Материал для статьи взят из статей Дмитрия Тарасова, а также www.hackzone.ru
Symbian – весьма распространенная система, и производители языков высокого уровня не замедлили выпустить кучу продуктов для программирования под нее. Можно писать на Яве, на Си, на Python, и на С#. Что касается Java2ME ни бытрота выполнения кода, ни возможности не располагают к разработке на ней. В принципе ситуация с .NET аналогична. По этой причине наилучшим выходом можно использовать С++, ибо – он весьма гибок, и к тому же сама Symbian написана на нем ) . Как наверное все знают – Symbian всего лишь программа, написанная для «1. Управления ресурсами смартфона, 2. Для взаимодействия между пользователем и устройством». На самом деле все немного по другому. Это лишь основа программной части предоставляющая необходимые для работы API. Интерфейс же определяется одной из 2х настроек – Series 60 и UIQ. В этот статье будет рассотрена разработка именно под Series 60, ибо UIQ – пока малораспростронена и используется лишь в нескольких моделях от сониэрриксон. Помимо Нокия на S60 работают также LG и Samsung. Теперь о среде разработки – на данный момент рулит связка Visual Studio .NET 2003 + Carbide VS. В общем то Carbide VS – это лишь настройка над студией от Нокиа. Взять ее мона на forum.nokia.com После установки и настройки надо бы определиться под какую версию собственно писать. Как уже было рассказано в статьях на http://smart-soft.info/ есть версии 7.0, 8.0, 8.1, 9.1. Для каждой версии платформы есть свой инструмент (SDK) и в нем есть все необходимое. По сути прога написанная под 7.0 будет работать на версиях до 8.1 при использовании соответствующего SDK (который есть на forum.nokia.com). Итак после установки запускаем среду и выбираем New Symbian Projekt в папке Visual C++ Projekt. Не забудь задать пусть к папке с SDK. Далее в диалоговом окне выбираем SDK и указываем тип проекта – Classic Projekt Template – S60 EIKON Control-Bases-Application. После чего жмем Finish и среда создает в папке проэкта кучу каких то классов и файлов. - AIF – здесь по умолчанию храниться иконка приложения. Кроме того в этой папке еще есть файл aif-ресурсов имеющий вид:
- Data – в этой папке храняться файлы ресурсов приложения, я вл. Важной частью любой проги. В них определяються строки, пункты, структура меню, внешний вид статусной панели. Описание любого ресурса начинаеться с RESOURCE.
Здесь MENU_ITEM соответствует каждому новому пункту меню, command – идентификатор команды, исполняемой при выборе пункта меню, а txt – подпись пункта.
- Group – здесь лежат файлы необходимые для сборки проекта. Файл с расширением mmp – это файл описания проекта, из которого линковщик берет все пути подключаемых библиотек и т.д. Часто при добавлении нового функционала в приложение, необходимо использовать какой либо класс, требующий подключения определенного хэдера и библиотеки. Соответственно эту библиотеку надо прописывать в mmp-файл – LYBRARY megalib.lib
- Inc – здесь располагаются хедеры использующиеся в проекте классов. В Cymbain C++ принята сл. практика – для каждого класса создавать пару «хедер – cpp'шник». Кроме того в папке есть файл с расширением hrh, в нем должно содержаться перечисление всех юзерских команд. Что бы избежать ошибок при сборке сюда надо вносить новые команды по аналогу с уже сущ-ми. Тут же лежит файл, содержащий локализованные версии строк, используемых для подписей, лейблов и т.д.
- Sis – тут находиться pkp файл, содержащий данные необходимые для сборки приложения. Сам sis файл также окажется в этом каталоге.
- SRC - сорцы используемых в программе классов.
Базовые классы проекта: - Application – содержит точку входа и создает класс Document. - Document – задает некоторые св-ва приложения и создает класс AppUI. - AppUI – формирует интерфейс пользователя, обрабатывает события и создает класс Container. - Container - класс, отвечающий за прорисовку и настройку контролов, а так же их содержание (выбор пункта меню, эл-ты списка и т.д.)
Рассмотрим как обрабатывается выбор пункта меню. В файле ресурсов содержиться идентификатор команды, генерируемой при выборе каждого пункта (MENU_ITEM command = ESymbian3CmdAppTest – см. выше), за перехват и обработку этих команд отвечает метод HandleCommandL класса AppUI. Код обработки: Void CXaAppUi:: HandleCommandL(TintaCommand) { Switch (aCommand) { case CMD_first: { /* какой либо код*/ } break; case cmd_hide: { Exit(); /*выход*/ } break; case EAknSoftkeyBack: case EEikCmdExit: { /*обработка нажатия на правую клавишу “BACK”*/ Exit(); break; } default; break; } } Уфф… В общем данный код позволяет реализовать знакомый вам оператор выбора switch, и таким образом вы можете создать менюшку для своей программы. Отсутствие визуальности (как в привычной Delphi) может вызвать определенные проблемы, весь код придеться набирать ручками (как в старые добрые времена).
Проблема с русским языком. Если мы хотим использовать в программе русский язык, честь нам и хвала (от не очень продвинутых в энглишэ пользователей). Если мы просто начинаешь писать в файле ресурсов на русском языке, то на смарте будут отображаться разнообразные кракозябры, с которыми многие вероятно знакомы по опыту написания прошлых программ. Что бы не гадать назначение мылимых и немыслимых символов, надо в файле ресурсов сверху написать «CHARESTER_SET UTF8». После этого необходимо сохранить файл ресурсов в кодировке utf-8, для чего вполне можно юзать notepad.exe. А вот проект после этого у нас не соберется ))) . Виноваты 3 служебных символа добавленные блокнотом в файл ресурсов. Удалим их HEX-редактором. В результате русский текст появиться на экране мобилки ).
Symbian 9.1 Кодинг в данной версии весьма усложнен из-за новой платформы безопасности Symbian Signed. Ибо любой приложение должно быть подписано любым сертификатом. Об этом выы можете прочесть на http://smart-soft.info/publ/3-1-0-15 где уважаемый администратор сайта подробно описал технологию и способы получения сертификатов. Кроме того поменялись компилятор и линковщик, так что нам при разработке придется все перекомпилить с использованием нового SDK.
Заключение: Данный материал безусловно полезен, но никто не написал ни одной программы прочитав 3 страницы. Советую изучить книги по С\С++, а так же хорошенько покопаться на тематических форумах вроде этого ). Напоминаю что я не программист-самоучка и тем более не журналист, материалы этой статьи взяты у Дмитрия Тарасова, и просто опробованы мною на практике. У меня получилось написать 6 программ от «hello Word», и создания менюшки до вычислений sin/cos/tg в пределах значения их таблицы из учебника алгебры за 10 класс. Также опробован метод русификации программы.
Ecafed 10.03.2006
Спасибо Дмитрию Тарасову, написавшему материал и подтолкнувшему меня его опробовать. Порталу www.hackzone.ru – за полученную квалификацию в знании основ С\С++, помощи в написании программ, и разъяснения различных вопросов.