S y m b i a n - към масите!

Така че решихте да напишете приложение за Symbian OS. Спри се! Първо прочетете основното правило. сложете в заглавието! Разработката под Symbian OS е много трудна задача. Трябва да имате задълбочени познания по езика C++ и усърдно да изучавате предоставения API. Много в парадигмата на развитие ще изглежда странно и мистериозно. Много ще трябва да се учи от нулата. Какво ще срещнете:

Трудности при намирането на документация (и дори тя е на английски)

Липсата на обичайното представяне на низове в езика

Специфични за Symbian техники за памет

Специфични начини за обработка на изключения

Интересен модел за многозадачност (който всъщност изобщо не е многозадачност), наречен Active Objects

Трудности при компилирането, свързани с факта, че все още трябва да използвате командния ред

Освен това вече има много приложения за Symbian, разработени от известни компании (например вече има много игри и сериозни, например Doom, Tomb Rider и т.н.), с които трябва да се състезавате %)

И така, нека започнем с това, което е необходимо, за да започнем разработката. Има няколко инструмента за разработка. Ето ги и тях:

Използвах само последния комплект, така че за другите два не мога да кажа нищо определено. CodeWarrior най-вероятно ще се нуждае от Nokia Series 60 SDK за Symbian OS. И така, как да поставите всичко необходимо, ако сте тръгнали по моя път.

Първо настройте студио. Веднага трябва да се каже, че SDK е заточен за 6/97 MS Visual Studio, т.е. за тези версии има специален съветник, който преобразува вашия софтуерен проект от формата, приета в Symbian, в тази, която студиото разбира. Но ако имате VS.NET (както аз), не се отчайвайте. Има специална помощна програма EpocFromMMP(разработен очевидно от наш сънародник), който добавя съветник за създаване на нови проекти от MMP файлове (които са Symbian проекти). В момента се разпространява срещу заплащане (между другото, струва си). Но все още имам старата безплатна версия, можете да я изтеглите тук. Той просто копира всички необходими файлове (всъщност не всички, някои след това трябва да бъдат копирани ръчно) в папката на проекта и създава същия проект, като задава всички необходими свойства.

Актуализация:Сега EpocFromMMP е пуснат под марката beekeros - безплатна версия е достъпна на сайта.

Следващата стъпка е да инсталирате Nokia S60 SDK за Symbian OS (ако разработвате за Nokia, разбира се). Може да бъде изтеглен безплатно от уебсайта на Nokia (вижте връзката по-горе), въпреки че тежи под 100Mb. Това е набор от компилатор (всъщност се използва студийният компилатор), емулатор, примери, документация, различни помощни програми и др. и така нататък. Интерфейсът, меко казано, не е приятелски %) Когато инсталирате SDK, не забравяйте да инсталирате Perl! Всички компилационни скриптове и други неща са написани на Perl. Все още има нужда от Java. В Java има няколко програми, без които обаче е напълно възможно, но може би е необходимо за правилната работа на емулатора. Освен това програмите във версията на SDK, която имам, работят само с JRE 1.3 и ми трябва поне 1.4.1 на машината%) Един момент - моля, не променяйте папката, в която е инсталиран SDK! Може би ръцете ми са криви, но в друга папка (и не дай си боже да я сложиш на диск различен от там, където стои VS) SDK-то беше яко бъгово. Когато инсталирате SDK, ще намерите следното в папката SDK:

Epoc32 - тук са всички скриптове, емулатор и т.н.

Epoc32Ex - стандартни примери за OS Symbian

Series60Doc - документация. Помощта започва с файлstart.chm и има някои полезни неща в PDF формат. Препоръчвам Coding Idioms за Symbian OS

Series60Tools - разни екстри, които не ползвам

Добре, всичко свърши. Можете да започнете работа

Описва как да компилирате и стартирате вашето Symbian приложение. Като пример, приложението на формуляра беше избрано от примерите, доставени с инсталацията. Примерите се намират в папката % EPOCROOT %\ Series 60 Ex. Тук и по-долу %EPOCROOT% е променлива на средата, съдържаща папката, в която е инсталиран SDK. Моят е \Symbian\6.1\Series60\ . Имайте предвид, че буквата на устройството не присъства, така че ако имате проект на устройство, различно от инсталацията, можете да очаквате проблеми.

И така, първо - структурата на проекта. По папки:

1. Трябва да създадете компилационни файлове в груповата папка с командата bldmake bldfiles. Това ще създаде abld файла в папката. bat , който се използва за компилация.

Предупреждение!Ако имате потребителско име, съдържащо български букви, тогава компилаторът (използващ gcc ) няма да може да получи достъп до временната папка и компилацията ще бъде неуспешна.

Резултатът от компилацията се намира в папката % EPOCROOT %\ Epoc 32\ Release \ thumb \ urel \ . Резултатът е файл на приложение (*. app, в този случай AknExForm. app), файлове с ресурси (*. rsc), aiftool изход (*. aif). Файлове с изображения (*.mbm) и други файлове също могат да бъдат намерени тук.

3. За да подготвите инсталацията ( sis - архив), трябва да отидете в папката sis и да изпълните командата

4. Компилация за емулатора под Windows. Отидете в папката на групата и изпълнете командата abld build wins udeb. При опит за компилиране файлът mspdb70.dll не е намерен. Намерете го на диска ипоставете пътя в PATH.Внимание!Тук не можете да използвате кавички в пътя, в противен случай той няма да бъде намерен отново. След като направите това, отново ще възникне грешка - файлът msobj10.dll не е намерен. Трябва да направите същото като в предишния случай. Не забравяйте цитатите! Резултатът от компилацията може да бъде намерен в папката % EPOCROOT%\Epoc32\Release\wins\udeb\z\system\apps\AKNEXFORM\ .

5. Емулаторът се стартира чрез стартиране на файла % EPOCROOT %\ Epoc 32\ Release \ wins \ udeb \ epoc . екз. Когато емулаторът стартира, вашето приложение ще бъде някъде в долната част (използвайте джойстика на емулатора).

И така, трябва да създадем проект, подходящ за използване с MS VisualStudio от наличния проект в стил Symbian. Първата стъпка е да инсталирате EpocFromMMP (вижте по-горе).

След това отидете на VS и създайте ново празно решение File -> Ново -> Празен разтвор.

* Част от: AknExForm

Версията, която имам не ги разбира и бъги, ако има. Друг момент е да премахнете елемента “.” от INCLUDE и SYSTEMINCLUDE в mmp файла, в противен случай заглавните файлове няма да бъдат копирани правилно. SYSTEMINCLUDE трябва да съдържа % EPOCROOT %\ Epoc 32\ Include . След всичко това можете да щракнете върху Generate и можете да опитате да компилирате проекта. Най-вероятно това няма да работи веднага поради причината, че Epoc от MMP не е копирал всички необходими файлове. Например трябваше ръчно да копирам aknexform.loc. Възможно е също така да има проблеми с факта, че понякога в изходния код трябва да промените „” на <> в # include e.

Аконе намери системни заглавки, тогава отивате в свойствата на проекта, в Свойства на конфигурацията -> C++-> Общи-> Допълнителни директории за включване. Трябва да има % EPOCROOT %\ Epoc 32\ Include .

Аконе намирасистемни dllфайлове, след което отивате в свойствата на проекта в Свойства на конфигурацията -> Общи-> Междинен указател. Трябва да има %EPOCROOT%\ EPOC32\RELEASE\WINS\UDEB\.

Ако все още не се компилира след това (може да има много причини!), опитайте да попитате тук във форума - ще се опитам да отговоря.

След компилация бих искал да стартирам %) Когато се опитвам да стартирам VS, трябва да попита коя програма да направи това. Посочете % EPOCROOT %\ EPOC 32\ RELEASE \ WINS \ UDEB \ EPOC . EXE. Ако не пита и не се стартира, отидете на свойствата на проекта (или как! %) Свойства на конфигурацията -> Отстраняване на грешки -> Командвайте и напишете този ред там.

За да създадете свой собствен проект, препоръчвам да вземете същия HelloWorld от примерите, да го копирате някъде за себе си и да разработите вашето приложение въз основа на него. Докато работите с проект във VS, той вероятно ще съдържа нови изходни файлове и нови библиотеки. Между другото, библиотеката може да се добави в свойствата на проекта в Configuration Properties -> Linker-> вход -> Допълнителни зависимости. Така че искате да компилирате всичко това за истинска платформа. Моята версия на EpocFromMMP позволява само компилиране на версии за отстраняване на грешки под емулатора на Windows, така че трябва да копирате всичките си файлове обратно във вашите папки на проекти в стил Symbian, да добавите новите си файлове към mmp файла и след това да компилирате от командния ред, както е описано по-горе. Той използва свой собствен компилатор ( gcc ), така че можете да научите много за вашия код тук %)))

При писане на код за платформата Symbian се приемат определени правила за именуване на класове и други структури (препоръчително е да се запознаете със стандартите за кодиране на Symbian OS C++). Разбира се, не можете да следвате тези правила (което не е много удобно от гледна точка начетимост на кода), но все пак трябва да използвате много съществуващи класове, които следват тези правила, така че трябва да ги знаете. И така, по ред.

Статията е написана с помощта на материали от сайта NewLC. com.

T– прости класове, които нямат конструктор и деструктор имат този префикс, те могат да бъдат декларирани в стека. Например

C- всички C класове са извлечени от CBase и обикновено трябва да се дефинират в купчината с помощта на оператора new.

клас CMyClass : публичен CBase

CMyClass myObject = нов (ELeave) CMyClass;

R- такива класове са междинни (прокси) класове, те са като шлюз, през който комуникирате с действителния обект, но не директно. Обикновено такива класове имат функция за инициализация ( Create , Open ...) и функция за прекратяване ( Close , Dlete ...). Обект от R-клас е "способен" само между извикванията на функциите за инициализация и прекратяване, ако се опитате да го използвате извън този интервал на състояние, най-вероятно ще накарате програмата да се срине със съобщението KERN - EXEC 0. Пример:

RTimer myTimer; // не може да бъде използван

myTimer. CreateLocal(); // може да се използва

myTimer. Изтрий(); // не може да бъде използван

M- Mixin класове. Много подобни на езиковите интерфейси на Java. Това са абстрактни класове, съдържащи само чисти виртуални функции. Един клас може да наследи няколко от тези интерфейси и ще е необходимо да се дефинират методите на тези интерфейси (освен ако, разбира се, вашият клас също е абстрактен).

H- от Heap, означава, че обектът на класа е деклариран (или разположен!) В купчината (heap). Например класът HBufC е heap дескриптор, обект на такъвсамият клас съдържа дескрипторните данни и е деклариран (или се намира) в купчината.