> Symbian < | |
Основное правило разработчика на Symbian: Если проект можно реализовать на J2ME, то нужно реализовать его на J2ME | |
Итак вы решили написать приложение для Symbian OS. Стойте! Первым делом прочитайте Основное Правило..., вынесенное в заголовок! Разработка под Symbian OS очень сложное дело. Необходимо иметь глубокие познания в языке C++ и прилежно изучать предоставляемый API. Многое в парадигме разработки покажется странным и загадочным. Многое придется постигать с нуля. То с чем вы столкнетесь:
Кроме того уже есть множество приложений под Symbian, разработанных известными компаниями (например игр уже очень много, причем серьезных, например, Doom, Tomb Rider и т.д.), с которыми вам предстоит вступить в конкуренцию %) Мой опыт ограничивается разработкой под телефоны Nokia 60 серии, так что разговор здесь будет в основном об этом аспекте программирования под OS Symban. Итак, начнем с того, что необходимо, чтобы начать разработку. Средств разработки существует несколько. Вот они:
Я пользовался только последним комплектом, поэтому ничего определенного о других двух сказать не могу. Для CodeWarrior'а наверняка потребуется Nokia Series 60 SDK for Symbian OS. Итак, как поставить все, что нужно, если вы пошли моим путем. Сначала ставите студию. Сразу нужно сказать, что SDK заточен под 6/97 MS Visual Studio, т.е. для этих версий есть специальный визард, преобразующий ваш программный проект из того вида, который принят в Symbian в тот, который понимает студия. Но если у вас VS.NET (как и у меня), не отчаивайтесь. Есть специальная утилитка EpocFromMMP (разработанная судя по всему нашим соотечественником), которая добовляет визард для создания новых проектов из MMP файлов (которые суть проекты Symbian). В данный момент она распространяется платно (она кстати того стоит). Но у меня осталась старая бесплатная версия, скачать можно здесь. Она просто копирует все нужные файлы (на самом деле не все, некоторые потом приходится вручную докопировать) в папку проекта и создает этот самый проект, настраивая все нужные свойства. Update: теперь EpocFromMMP выходит под маркой beekeros - на сайте доступна бесплатная версия. Сразу один момент - EpocFromMMP этой версии не понимает многострочные комментарии в MMP файлах вида /*
Следующий этап - поставить Nokia S60 SDK for Symbian OS (если вы конечно разрабатываете под Nokia). Его можно бесплатно скачать с сайта Nokia (см. ссылку выше), правда весит он под 100Мб. Это набор из компилятора (на самом деле используется компилятор студии), эмулятора, примеров, документации, различных утилит и т.д. и т.п. Интерфейс мягко говоря не дружественный %) Когда ставите SDK не забудьте установить Perl! Все скрипты компиляции и других вещей написаны на Perl'e. Еще нужна Java. На яве там несколько программулин, без которых впрочем вполне можно обойтись, но возможно она необходима для правильной работы эмулятора. Причем программулины в той версии SDK, которая есть у меня, работают только с JRE 1.3, а мне нужна на машине 1.4.1 минимум %) Один момент - не изменяйте пожалуйста папку, в которую ставится SDK! Может у меня руки кривы, но в другой папке (и упаси вас бог поставить ее на диск, отличный от того, где стоит VS) SDK у меня жестоко глючил. Когда вы поставите SDK, вы обнаружите в папке с ним следующее:
Ну вот и все. Можно приступать к работе %) Компиляция и запуск с командной строки Здесь описывается, как скомпилировать и запустить ваше приложение для Symbian. В качестве примера было выбрано приложение form из примеров, поставляемых с инсталляцией. Находятся примеры в папке Итак, сначала – структура проекта. По папкам:
Начнем с компиляции с командной строки для Windows и для телефона. 1. Нужно в папке group создать компиляционные файлы командой 2. Для компиляции на телефон нужно использовать команду Внимание! Если у вас пользователь с именем, содержащим русские буквы, то компилятор (используется gcc) не сможет получить доступ к папке с временными файлами и компиляция завершится с ошибкой. Результат компиляции находится в папке 3. Для подготовки инсталляции (sis – архива) необходимо зайти в папку sis и выполнить команду В папке должен появиться файл с расширением sis (в данном случае это aknexform_for_v09.SIS). Вы можете посмотреть pkg файл, там перечислены файлы, которые нужно добавить в архив, и пути для каждого файла, по которым эти файлы будут установлены на телефоне. Обратите внимание, что в этих путях вместо буквы диска стоит ! – это значит, что все файлы будут ставиться на тот диск, которые пользователь выберет во время инсталляции. 4. Компиляция для эмулятора под Windows. Зайдите в папку group и выполните команду 5. Запуск эмулятора производится запуском файла
Дерзайте %) Итак, нам необходимо создать из проекта в стиле Symbian, имеющегося в наличии, проект, пригодный для использования с MS VisualStudio. Первым делом необходимо поставить EpocFromMMP (см выше). Далее заходим в VS, и создаем новый пустой солюшн В этом солюшне мы создадим проект. В качестве темплейта нужно выбрать EPOC++ Create New From MMP. Я взял в качестве источника все тот же Forms из стандартных примеров. Должно появится окошко EPOC from MMP. Убедитесь, что в поле Path to Root там стоит то, что надо (у меня там почему-то маячил Quartz). Должно быть %EPOCROOT%\ Epoc32
(%EPOCROOT%\ здесь и везде нужно заменить на то значение, которое он имеет. У меня это например /* * ===================================================================== * Name : AknExForm.mmp * Part of : AknExForm * Copyright (c) 2003 Nokia. All rights reserved. * ===================================================================== */ Та версия, что есть у меня их не понимает и глючит, если они есть. Еще момент – удалить из INCLUDE и SYSTEMINCLUDE в mmp файле элемент “.”, иначе не скопируются как следует заголовочные файлы. SYSTEMINCLUDE должен содержать %EPOCROOT%\Epoc32\Include. После всего этого можете нажимать Generate и можно попробовать откомпилировать проект. Скорее всего это сразу не получится по той причине, что Epoc from MMP скопировал не все нужные файлы. Например, мне вручную пришлось докопировать aknexform.loc. Возможны еще проблемы с тем, что иногда в исходниках нужно в # include сменить “” на <>. Если не находит системные заголовочные файлы, то вы идете в свойства проекта, в Если не находит системные dll файлы, то вы идете в свойства проекта в Если и после этого не компилируется (причин может быть множество!) попробуйте спросить тут на форуме – постараюсь ответить. После компиляции хотелось бы и запустить %) При попытке запустить VS должна спросить, какой программой это сделать. Укажите %EPOCROOT%\EPOC32\RELEASE\WINS\UDEB\EPOC.EXE. Если не спрашивает и не запускает, идете в свойства проекта (а то как же! %) Чтобы создать свой собственный проект, рекомендую взять тот же HelloWorld из примеров, скопировать его куда-нибудь себе, и на его базе развивать свое приложение. Когда вы поработаете с проектом в VS в нем наверняка появятся новые файлы с исходным кодом и новые библиотеки. Кстати, библиотеку можно добавить в свойствах проекта в Удачи %) Префиксы имен классов (T, C, R, M, H) При написании кода для
платформы Symbian приняты определенные
правила именования классов и других
структур (рекомендуется ознакомиться с Symbian
OS C++ Coding Standards). Вы конечно можете этим
правилам не следовать (что не очень-то
удобно с точки зрения читабельности
кода), но вам все равно придется
пользоваться множеством существующих
классов, которые этим правилам следуют,
так что знать их необходимо. Итак, по
порядку. Статья написана с
использованием материалов сайта NewLC.com. T – этот префикс имеют простые классы, у которых нет конструктора и деструктора, они могут быть объявлены в стеке. Например
C
– все C-классы
являются наследниками CBase
и обычно должны быть определены в куче (heap) при помощи оператора new.
R
– такие классы являются промежуточными
(proxy) классами, они представляют из
себя как бы шлюз, через который вы
общаетесь с фактическим объектом, но не
на прямую. Обычно такие классы имеют
функцию инициализации (Create,Open…)
и завершения (Close,
Dlete…).
Объект R-класса
«дееспособен» только между вызовами
инициализационной и завершающей
функции, если пытаться его использовать
не в этом промежутке состояний, вы
скорее всего получите аварийное
завершение программы с сообщением KERN-EXEC
0. Пример:
M
– Mixin
классы. Очень похожи на интерфейсы языка
Java. Это
абстрактные классы, содержащие только
чисто виртуальные (pure
virtual)
функции. Класс может наследоваться от
нескольких таких интерфейсов, при этом
необходимо будет определить методы этих
интерфейсов (если конечно ваш класс тоже
не является абстрактным). H – от Heap, означает, что объект класса объявлен (или находится!) в куче (heap). Например класс HBufC является heap descriptor’ом, объект такого класса сам содержит данные дескриптора и при этом объявлен (или находится) в куче. |