Пишемо під symbian os

Пишемо під Symbian OS

Symbian - далекий нащадок операційної системи EPOC, спочатку створювалася для кишенькових комп'ютерів Psion. Компактна, швидка і надійна ОС пережила кілька інкарнацій, врешті-решт перетворившись в сучасну Symbian. Платформа Symbian - унікальний приклад системи, поєднавши в собі як академічні традиції з їх ретельністю опрацювання базових концепцій, так і прагматичність, властиву комерційним проектам.

Основні API
Можливості Symbian OS досить великі - це вам не віртуальна машина J2ME з численними обмеженнями і не Palm OS, а дійсно сучасна, потужна і функціональна операційна система. До них відносяться стандартні засоби (планування процесів і управління ресурсами, запуск програм і зв'язування динамічних бібліотек, висновок графіки і робота з мережею), а також інструментарій для тривимірної графіки (навіть акселерірованной за допомогою Open GS ES), роботи з мультимедійними потоками в реальному часі ( це не тільки музика, а й VoIP), Location API (для підключення джерел географічної інформації) та ін.

Всі можливості Symbian OS розподілені по компонентах, незалежним від решти системи (при цьому допускається видалення одного з них без шкоди для всього комплексу). Призначення базового API (модуль Base) очевидно, варто лише зазначити, що замість багатьох стандартних рішень, таких, як, скажімо, стандартна бібліотека Сі ++, використовуються власні рішення, більш ефективні в рамках ідеології цієї ОС. Підсистема безпеки відповідає за реалізацію криптографічних алгоритмів, управління сертифікатами, інсталяцію ПЗ тощо. Графічний модуль містить API для відтворення графіки та тексту, управління шрифтами, вставки картинок і ін. В нього також входить клієнтський API Window Server і підсистема анімації.

Підсистема безпеки (починаючи з Symbian v9.x) передбачає запобігання доступу до структури каталогів (для «непідписаних» програм, наприклад, заборонений доступ до каталогів інших утиліт, системному каталогу), доступ до деяких даних можливий в режимі "тільки читання". Саме ж неприємне - так звана «модель можливостей» (capabilities), яка визначає доступність тих чи інших API. Відкриті API складають близько 60% від всіх функцій ОС, «базові» включають в себе комунікаційні підсистеми (Інтернет, Bluetooth, стільниковий зв'язок та ін.) І PIM. Вони теж доступні, але спроба викликати, скажімо, функцію відсилання SMS з боку несертифікованої програми призводить до появи запиту на дозвіл цього дії, тоді як сертифікована зможе зробити це прозоро і непомітно для користувача. У «розширені» API входять функції, що дозволяють маніпулювати системної інформацією, а «права виробника» - надають найповніший контроль над пристроєм.

Series 60 SDK побудовані на основі спеціальної версії Symbian OS C ++ SDK. поширюваної Symbian. SDK включає в себе безліч інструментів, API, бібліотеки та документацію, що дозволяє створювати додатки на основі типових шаблонів.
Як розробнику, вам може знадобитися кілька SDK для роботи з різними версіями Series 60. Дуже важливо правильно підібрати SDK для обраного вами Series 60 пристрою.

Про можливість використання декількох SDK
Дуже просто використовувати один Symbian OS SDK, оскільки відразу після інсталяції все готово до роботи. Однак розробникам часто потрібно
працювати з SDK конкретної версії Series 60 або навіть з SDK конкретної платформи інтерфейсу користувача (UI).

Крім того, SD K бувають для різних систем розробки: WINSCW - для CodeWarrior Development Studio. WINS - основний, його можна використовувати разом з Visual Studio і з командного рядка (також є версії з підтримкою середовища Borland C ++ BuilderX Mobile Edition). Вибирай версію з підтримкою Visual Studio. Для роботи SDK необхідний ActivePerl 5.18 (СКАЧАТИ). Скрізь у вимогах буде вказано, що ще необхідна Java2 RunTime 1.3.1. Розпакуйте архів з SDK і встанови його. Обов'язково встановлюй на той же диск, де будуть лежати вихідні тексти твоїх проектів, інакше можливі різні глюки.

HelloWorld додаток
Воно може працювати на будь-якому Symbian OS пристрої. Проект Symbian OS додатки складається з декількох файлів: власне початкових кодів (.cpp і .h), файлів опису проекту (.mmp) і файлів опису компонент (bld.inf). Можуть знадобитися і інші файли.

Файл опису проекту необхідний для коректної роботи утиліти bldmake. Файл проекту має відповідати імені додатки. Іншими словами, якщо ми розробляємо програму HelloWorld.exe. файл опису проекту повинен називатися HelloWorld.mmp.

Цитата: // HelloWorld.mmp
TARGET HelloWorld.exe
TARGETTYPE exe
UID 0
SOURCEPATH.
SOURCE HelloWorld.cpp
USERINCLUDE.
SYSTEMINCLUDE \ Epoc32 \ include
LIBRARY euser.lib bafl.lib efsrv.lib


На відміну від файлу опису проекту, файл опису компонент завжди називається однаково: bld.inf. У цьому файлі вказується список проектних файлів:

Цитата: // файл bld.inf
PRJ_MMPFILES

Створимо найпростіше консольний додаток. Нехай воно виводить на екран рядок "Hello world!", Чекає натискання клавіші і закривається.

Цитата: Лістинг вихідного коду HelloWorld.cpp
#include
#include

_LIT (KTxtEPOC32EX, "EPOC32EX");
_LIT (KTxtExampleCode, "E32 SDK Example Code");
_LIT (KFormatFailed, "failed: panic code =.");
_LIT (KTxtOK, "ok");
_LIT (KTxtPressAnyKey, "[press any key]");

LOCAL_D CConsoleBase * console; // запишіть сюди своє повідомлення
LOCAL_C void doExampleL (); // саме це функція буде виконувати необхідні нам дії

// створюємо консольний об'єкт
console = Console :: NewL (KTxtExampleCode, TSize (KConsFullScreen, KConsFullScreen));
CleanupStack :: PushL (console);
// друкуємо рядок "Hello world"
console-> Printf (KHelloWorldText);
// друкуємо рядок "press any key"
console-> Printf (KTxtPressAnyKey);
// чекаємо, поки користувач натисне кнопку
console-> Getch ();
CleanupStack :: PopAndDestroy (); // закриваємо консоль
>

// ************************ //
// * головна функція * //
// ************************ //
TInt E32Main ()
<
__UHEAP_MARK;
CTrapCleanup * cleanup = CTrapCleanup :: New (); // отримуємо чистий стек
TRAPD (error, doExampleL ()); // завершуємо ініціалізацію і виконуємо приклад
__ASSERT_ALWAYS (! Error, User :: Panic (KFormatFailed, error));
delete cleanup; // видаляємо стек
__UHEAP_MARKEND;

Для того щоб зібрати програму за допомогою командного рядка треба:

Перейти в папку, яка містить .mmp файл проекту. Переконатися, що в цій же папці лежить файл bld.inf.
Виконайте команду bldmake bldfiles. В результаті її виконання буде створений файл abld.bat, який містить інформацію, отриману з .mmp файлу проекту. (Зверніть увагу, що після зміни .mmp файлу потрібно знову виконувати команду bldmake.)
Виконайте команду abld build wins udeb. Вона створює версію програми з налагоджування для WINS платформи.
Виконайте команду abld build armi urel. Вона створює реліз версію програми для цільового пристрою.
Після створення exe файлу, його потрібно скопіювати в папку Epoc32 \ release \ wins \ udeb \.

Розглянемо створення проекту і складання програми за допомогою Microsoft Visual C ++.

Перейти в папку, яка містить .mmp файл проекту. Переконатися, що в цій же папці лежить файл bld.inf.
Виконайте команду bldmake bldfiles. В результаті її виконання буде створений файл abld.bat, який містить інформацію, отриману з .mmp файлу проекту. (Зверніть увагу, що після зміни .mmp файлу потрібно знову виконувати команду bldmake.)
Виконайте команду abld makefile vc6. В результаті буде створений файл проекту і файл робочого середовища (.dsp і .dsw). Ці файли можна використовувати в Visual C ++ 6.0.
Запустіть Microsoft Visual C ++ 6.0 і виберіть команду Open Workspace з меню File.
Виберіть файл з розширенням .dsw в папці WINS \ вашого проекту.
Виберіть команду Build або Rebuild All з меню Build. Буде виконано складання програми.

запуск програми
Після складання консольного застосування, його можна запустити на емуляторі або на цільовому пристрої. В рамках цього документа розглянемо тільки запуск на емуляторі. Інформація про запуск додатків на конкретних пристроях приведена в документації для відповідних платформ.

Існує два способи запуску додатка на емуляторі: можна запустити програми з командного рядка або з IDE (в даному випадку з Microsoft Visual C ++ 6.0).

У разі запуску з командного рядка, скопіюйте створений файл helloworld.exe в папку Epoc32 \ release \ wins \ udeb \, потім перейдіть в цю папку і запустіть файл helloworld.exe. Для запуску програми з Microsoft Visual C ++ 6.0 потрібно виконати команду Execute HELLOWORLD.exe з меню Build. Обидва ці способи призводять до одного результату: через кілька секунд запуститься вікно емулятора, і Ви побачите картинку: