»Что такое Symbian Операционная система Symbian - одно из наиболее интересных явлений в мире ОС за последние годы. Успешно противостоя натиску Microsoft на мобильном рынке, эта система сегодня стала едва ли не самой распространенной в смартфонах и коммуникаторах. Stewie [ 12967 ] i 19 :55 ,01 фев Symbian - далекий потомок операционной системы EPOC, изначально создававшейся для карманных компьютеров Psion. Компактная, быстрая и надежная ОС пережила несколько инкарнаций, в конце концов превратившись в современную Symbian. Платформа Symbian - уникальный пример системы, совместившей в себе как академические традиции с их тщательностью проработки базовых концепций, так и прагматичность, свойственную коммерческим проектам. Stewie [ 12967 ] i 19 :56 ,01 фев Работа над Symbian OS началась в октябре 1994 г., в то время в команде специалистов, работавшей над проектом Psion, окончательно сформировалось решение использовать Си++ как основу для ОС. К этому времени был накоплен достаточный опыт в области объектного программирования (в процессе разработки ПО и ГИП для EPOC16), и, по воспоминаниям авторов, первые два года ушли на тщательную проработку концепции. Во многом благодаря этому удалось создать действительно эффективную ОС, адаптированную к ограниченным ресурсам мобильных устройств. Первая версия ОС (тогда еще под названием EPOC) появилась на рынке в 1996 г., когда был выпущен КПК Psion Series 5 . Версия EPOC Release 5 , представленная в марте 1999 г., - это переработанная редакция со множеством дополнительных функций (преимущественно прикладных). В 2002 г. появился первый смартфон на базе этой ОС (Nokia 7650), затем - первый коммуникатор (Sony Ericsson P800 ), и, что называется, «процесс пошел». Впрочем, история развития Symbian - предмет отдельного разговора, здесь же ограничимся лишь упоминанием актуальных на момент написания этой статьи версий. Прежде всего это Symbian OS v7.0 s (в вариантах Series 60 2nd Edition Feature Pack 1 , 2 и 3 ; Nokia N70 , N90 ), Symbian OS v9.1 (Series 60 3 rd Edition; Nokia 3250 , N71 , N80 , N91 , N92 , E60 , E61 , E70 ), а также редакции, используемые компанией Sony Ericsson: UIQ 1.1 (Symbian OS v6.1 ), UIQ 2.1 (Symbian OS v7.0 ), UIQ 3 (Symbian OS v9). Stewie [ 12967 ] i 19 :57 ,01 фев Ядро Symbian OS - едва ли не единственный пример распространенной и отработанной микроядерной (если говорить о версии ядра EKA2, то и наноядерной) операционной системы. Получается, что в реальной жизни ОС, основанные на прогрессивной концепции микроядра, с неизбежностью «обрастают костылями», нарушающими идеологическую стройность, но способствующими решению прикладных задач (например, перенос графической подсистемы в ядро при разработке Windows NT 4.0). Но создателям Symbian OS удалось совместить эффективность и концептуальную стройность, несмотря на то что современные версии этой системы предоставляют исключительно обширные возможности, в том числе средства для работы с потоковыми данными, стеками протоколов, критичными к латентности ядра, графикой и видео высокого разрешения). Более того, если говорить о ядре, то одной из основных особенностей версии Symbian 9.0 стал переход на технологию «наноядра» (ЕКА 2 , EPOC Kernel Architecture 2 ). EKA2 - многопоточное ядро с высоким уровнем реентерабельности и атомарности операций (например, допускается вызов обработчика прерывания даже во время процедуры переключения контекста). Оно также обеспечивает возможность работы в режиме реального времени (изначально это делалось, чтобы разработчики аппаратных средств могли отказаться от GSM-модулей, функционирующих под управлением специализированных ОС, переложив эту задачу на центральный процессор). Stewie [ 12967 ] i 19 :57 ,01 фев Будучи микроядерной операционной системой, Symbian «выносит» практически все прикладные (т. е. выходящие за пределы компетенции ядра) задачи в модули-серверы, функционирующие в пользовательском адресном пространстве. Это, правда, не избавляет от регулярных сбоев в смартфонах с этой ОС, но позволяет предотвратить потерю пользовательских данных. Основные API Возможности Symbian OS весьма обширны - это вам не виртуальная машина J2ME с многочисленными ограничениями и не Palm OS, а действительно современная, мощная и функциональная операционная система. К ним относятся стандартные средства (планирование процессов и управление ресурсами, запуск программ и связывание динамических библиотек, вывод графики и работа с сетью), а также инструментарий для трехмерной графики (даже акселерированной посредством Open GS ES), работы с мультимедийными потоками в реальном времени (это не только музыка, но и VoIP), Location API (для подключения источников географической информации) и пр. Stewie [ 12967 ] i 19 :58 ,01 фев Все возможности Symbian OS распределены по компонентам, независимым от остальной системы (при этом допускается удаление одного из них без ущерба для всего комплекса). Назначение базового API (модуль Base) очевидно, стоит только отметить, что вместо многих стандартных решений, таких, как, скажем, стандартная библиотека Си++, используются собственные решения, более эффективные в рамках идеологии этой ОС. Подсистема безопасности отвечает за реализацию криптографических алгоритмов, управление сертификатами, инсталляцию ПО и пр. Графический модуль содержит API для отрисовки графики и текста, управления шрифтами, вставки картинок и др. В него также входит клиентский API Window Server и подсистема анимации. Подсистема «прикладных каркасов» (application framework) - решение, специфичное для Symbian OS. Идеология Symbian OS предполагает разнесение прикладной логики программы и пользовательского интерфейса. Базовые структуры и принципы работы (например, предположение о том, что у всякой программы- редактора есть документ, с которым она работает) или средства обработки клавиатурного ввода заложены и частично реализованы в «каркасе». Фактически именно эта подсистема предоставляет реальным прикладным программам универсальный механизм для решения типовых задач. ГИП может отличаться от устройства к устройству, но принципы его работы неизменны. Stewie [ 12967 ] i 19 :59 ,01 фев Программные «движки» (engines) инкапсулируют логику прикладных программ. Они независимы от ГИП и при необходимости их можно использовать напрямую (скажем, при доступе к данным календаря для его «движка» не важно, чей вызов обслуживается: собственного пользовательского интерфейса или сторонней программы). На этом же уровне функционируют подсистемы обработки мультимедиа и сервисные библиотеки. Наконец, стек протоколов содержит сетевые и коммуникационные компоненты, а также средства синхронизации и телефонии (подсистема расширяема, процесс подключения модулей, реализующих новые стандарты, прост). Подсистема безопасности (начиная с Symbian v9.x) предполагает предотвращение доступа к структуре каталогов (для «неподписанных» программ, например, запрещен доступ к каталогам других утилит, системному каталогу), доступ к некоторым данным возможен в режиме «только чтение». Самое же неприятное - так называемая «модель возможностей» (capabilities), определяющая доступность тех или иных API. Открытые API составляют около 60% от всех функций ОС, «базовые» включают в себя коммуникационные подсистемы (Интернет, Bluetooth, сотовая связь и др.) и PIM. Они тоже доступны, но попытка вызвать, скажем, функцию отсылки SMS со стороны несертифицированной программы приводит к появлению запроса на разрешение этого действия, тогда как сертифицированная сможет сделать это прозрачно и незаметно для пользователя. В «расширенные» API входят функции, позволяющие манипулировать системной информацией, а «права изготовителя» - предоставляют самый полный контроль над устройством. Stewie [ 12967 ] i 20 :01 ,01 фев Уникальные идентификаторы Уникальный идентификатор (UID) - фундаментальная, хотя и небесспорная концепция Symbian OS. Наличие схемы сквозной идентификации объектов полезно, но в ряде случаев создает неудобства. Впрочем, UID - это «реальность, данная нам», и любой, кто задумывается о разработке для Symbian OS, должен понимать, для чего они используются. В целом UID состоит из трех 32 -бит значений: UID1 , UID2 и UID3 . UID1 - глобальный идентификатор системного уровня. В частности, он назначается исполнимым модулям и определяет их тип (программа, библиотека, и др.). UID2 задает тип программы (скажем, наличие или отсутствие ГИП). UID3 определяет принадлежность всех компонентов, имеющих отношение к заданной сущности. Идентификаторы UID, в частности, используются и для сопоставления файлов данных и обрабатывающих их программ. Объект может и не иметь UID (например, если файл был получен извне, то система пытается определить тип файла по таблице соответствий MIME-типов). UID3 - наиболее важный из идентификаторов, при появлении в ОС разных программ с одним идентификатором блокируются все (возникает системная ошибка). Существует также идентификатор платформы (Platform UID), который используется для обозначения совместимости прикладной программы с той или иной редакцией Symbian OS. Уникальность UID предполагает одну особенность, которая не всегда очевидна для начинающих разработчиков: UID действительно должны быть уникальными. На этапе разработки допускается использование «нелицензируемых» UID в диапазоне 0 x 01000000 - 0 x0fffffff. Чтобы избежать накладок при выпуске программы, принята схема запроса UID у разработчика ОС, обычно для этого достаточно послать письмо по электронной почте (на адрес id@Symbiandevnet.com), в ответ на которое выдается несколько (обычно 10) идентификаторов. Stewie [ 12967 ] i 20 :02 ,01 фев Соглашения об именах При разработке для Symbian OS приняты определенные правила именования классов и других структур (подробно они изложены в документации). Соблюдать ли их в собственных программах - решать разработчику, но для упрощения работы с документацией и примерами их стоит знать. Так, например, префикс T назначается «простым» классам («классам- значениям», как ни странно смотрится такое сочетание), не имеющим конструктора и деструктора (например, числа) и структурам Си (в этом случае встречается и обозначение S). С - наследники CBase, обычно создаются посредством new. R - ресурсный класс (как правило, полиморфная DLL). Исходя из изложенных выше соображений, легко догадаться, что такие классы требуют вызова функций инициализации (например, Create) и завершения (Close). M - абстрактные классы, содержащие только виртуальные (pure virtual) функции. Имена переменных- членов принято начинать с i, имена аргументов - с a. Имена функций зависят от их специфики. Обычно это глагол, но функции, извлекающие значения, имеют имена, соответствующие переменной, но без префикса i. Вообще, имена функций в Symbian, как правило, одним глаголом не ограничиваются, - скорее, это длинные описательные предложения. Имена констант индицируются символом K в начале. Stewie [ 12967 ] i 20 :03 ,01 фев Структура программы Symbian - объектная операционная система. Все реализовано в виде объектов и классов. Вызов функции - действие, выходящее за пределы идеологии ОС. Учитывая, что в состав системы входят сотни классов и тысячи функций, такой подход можно только приветствовать. Де-факто типичная прикладная программа есть не что иное, как DLL, предоставляющая функции, которые вызываются системными объектами ГИП. Есть и другие варианты, но они встречаются реже (в частности, службы). В версии 9.x от этой практики отказались, программа может быть и полноценным исполнимым модулем (важное следствие - возможность размещения статических данных и обработка исключений в стиле Си++). Но среднестатистическая программа (файл с расширением.app) представляет собой исполнимый модуль, зависящий от «каркаса» (предоставленного ОС). Утрируя, можно сказать, что не программа, совершая действия, заложенные в нее разработчиком, время от времени обращается к ОС с целью выполнения каких-то действий, скажем отрисовки диалогового окна, а, наоборот, ОС запускает подсистему ГИП, а та «дергает» функции, возвращающие данные (точнее, объекты), которые отрисовываются системными средствами. Это, кстати, целиком вписывается в концепцию разделения прикладного ядра (engine) и интерфейса, а также убирает зависимость от конкретной графической библиотеки и теоретически (на практике, разумеется, хватает подводных камней) упрощает перенос ПО между системами с разными типами ГИП. Stewie [ 12967 ] i 20 :03 ,01 фев Прикладная программа должна использовать четыре основных класса: системное ядро (Application), «документ» (Document), реализацию ГИП (App UI) и «графическое поле» (View). В классе «ядро» необходимо реализовать базовые функции, минимум - две (обе вызываются сразу после загрузки прикладной DLL). NewApplication() создает объект, и E32Main() определяет точку входа. Как таковой, этот объект отвечает за базовое взаимодействие программы с ОС. В прикладном классе, созданном посредством NewApplication(), могут быть определены свойства, общие для всех экземпляров данной программы. Объекты, разумеется, зависят от используемой редакции Symbian OS, - скажем, при работе с Series 60 ядро будет порождаться от класса CAknApplication. Далее необходимо создать «документ» (даже если он не нужен и впоследствии будет проигнорирован; вообще, «документ» - это довольно удобное структурированное хранилище информации, так что имеет смысл его использовать, раз уж создан). Здесь же системе сообщается UID (поскольку функция генерации экземпляра должна возвращать UID2). Необходимость создания документа обусловлена тем, что в ходе этого процесса инициализируются также системные компоненты ГИП. В целом эта схема похожа на атавизм времен EPOC с ее документно-ориентированной идеологией, но в действительности не лишена изящества и к ней довольно быстро привыкаешь. Как бы то ни было, стоит запомнить: даже если разрабатывается «Hello, World», необходим документ. Stewie [ 12967 ] i 20 :05 ,01 фев Интерфейсный класс задает базовые элементы управления, запускает цикл обработки сообщений и т. д. Еще одно фундаментальное понятие практически для любой программы Symbian OS - вид (View). Это базовый элемент управления, с которым работает программа, выводя информацию. С некоторыми упрощениями можно назвать его «экранной формой», на которой размещаются прочие составные части ГИП. Логика работы с ним (как и вся архитектура и использование объектов управления в Symbian OS) - предмет, требующий отдельной статьи. Инструментарий и разработка Разработка для Symbian OS (если говорить о Си++ ) обычно ведется на ПК. Среда разработки - привычная многим программистам Visual Studio, это также могут быть IDE Metrowerks CodeWarrior Development Studio, Borland C++ BuilderX Mobile Edition, Carbide.C++ (относительно новая IDE, созданная компанией Nokia на базе Eclipse), снабженная дополнительными инструментальными пакетами (SDK). Разработчику доступны практически все привычные возможности в отношении как создания ПО, так и отладки (трассировка, просмотр переменных, стека вызовов, структур классов и др.). Отлаживаемая программа запускается в эмуляторе Symbian OS. Отметим, что эту подсистему правильнее было бы назвать симулятором, поскольку имитируются не аппаратные средства, а лишь программное окружение (соответствующие API операционной системы, реализованные поверх API Win32). При этом программные модули, которые загружаются в эмулятор, представляют собой исполнимые файлы для архитектуры x86 (не ARM, на базе которой построены смартфоны), соответствующее ПО для целевой платформы формируется после итоговой компиляции. Это предполагает определенную специфику (скажем, ранее была довольно распространена ситуация, когда программа, нормально функционировавшая в среде эмулятора, отказывалась работать на реальном устройстве), но сегодня эмулятор обеспечивает достаточно высокую степень сходства и проблемы возникают лишь при создании программ, нестандартно использующих API. В комплект инструментария для Symbian OS входят и средства для дистанционной отладки и анализа. С учетом двухуровневой структуры с разделением логики и интерфейса процесс отладки становится немного громоздким, если говорить о простом ПО. Но для крупного проекта такой подход упрощает работу, - в частности, будет целесообразно подготовить ряд специализированных тестов, обеспечивающих контроль прикладной логики пакета. При наличии отлаженного ядра с комплектом автоматизированных тестов перенос и адаптация программы между различными моделями и разновидностями Symbian OS превращаются в рутинные задачи. Symbian предлагает ряд инструментов для тестирования (в частности, программный каркас Test Driver). Stewie [ 12967 ] i 20 :06 ,01 фев SDK Symbian определенно оценить довольно сложно. Он неплох - но непривычен. Основная сложность для начинающего состоит в том, чтобы разобраться с последовательностью формирования прикладной программы и назначением многочисленных инструментов. Ситуация усугубляется наличием упоминавшейся концепции разделения программы на практически независимые подсистемы; SDK буквально вынуждает следовать ей, требуя разнесения модулей по соответствующим каталогам. Кроме того, сам по себе SDK - сборник разнородных утилит, приемы работы с которыми не всегда последовательны, да и реализованы эти инструменты по-разному (вплоть до языков программирования: часть программ пакета построена на базе Perl, часть - Java, что-то - обычные исполняемые файлы). И еще один минус - SDK довольно медленный. На компиляцию кода даже для небольшой программы может потребоваться несколько минут. Но это, пожалуй, и все. При внимательном чтении документации, изучении примеров и знакомстве с идеологией платформы освоение SDK проблем не вызывает, специалист вполне в состоянии разобраться во всем за пару дней. Многие, наверное, уже догадались, что «SDK для Symbian OS» - вещь довольно расплывчатая при наличии такого количества редакций базовой системы. Несмотря на общую принадлежность к Symbian OS, конкретные SDK сильно различаются. Проекты для Symbian OS сохраняются в файлах.mmp (аналог привычных файлов make), которые содержат ссылки и команды, необходимые для обработки программных модулей, ресурсов и пр. При желании можно вести разработку практически в любой среде, хотя ряд операций в этом случае придется выполнять вручную (соответствующими утилитами командной строки, - в частности, это bldmake и abld; последний имеет дело с собственным файлом проекта, bld.inf - определяет активный проект). Но они тем не менее работают с.mmp-файлами. В файле.mmp указываются поля, название и тип целевого файла (поля TARGET и TARGETTYPE), уникальные идентификаторы, используемые в проекте (UID), идентификатор разработчика (VENDORID), путь к файлам проекта и их список (SOURCEPATH, SOURCE, USERINCLUDE, SYSTEMINCLUDE и др.), заголовочные и ресурсные файлы (для последних можно определить блоки, предполагающие дополнительную обработку), подключаемые библиотеки и т. д. Программа с ГИП должна иметь не менее двух ресурсных файлов. В первом записывается пиктограмма изображения, во втором - параметры регистрации (записывается в каталоге \private\ 10003 a3f\apps; так называемое «централизованное хранилище», на первый взгляд похожее на реестр Windows, но в то же время существенно от него отличное). Аналогично задаются библиотеки (как минимум необходима euser.lib). Впрочем, большинство IDE успешно скрадывают сложности этого процесса (или способны импортировать файлы.mmp, записывая информацию в собственных структурах). Stewie [ 12967 ] i 20 :07 ,01 фев Эмулятор После инсталляции SDK в подкаталоге создается развесистое дерево каталогов (в подкаталоге epoc32\). Фактически существует две версии эмулятора - с отладочными средствами в системных библиотеках и без них. Кроме того, стоит знать место расположения образа диска Z:. В основе подсистемы хранения данных в Symbian OS лежит знакомая всем концепция логических дисков, в качестве системного используется обычно диск Z:. На нем записаны системные модули ОС. В реальном устройстве это обычно флэш- ППЗУ, причем предусматривается ряд ограничений, - например, загрузка драйвера устройства допускается только с него, - что в известной степени осложняет жизнь разного рода злоумышленникам (хотя и не решает проблемы полностью, поскольку существует несколько методов обхода этой блокировки). В эмуляторе же ему соответствует каталог RELEASE\WINSCW\UDEB\z\. Переводим: в этом каталоге собраны модули для Windows- версии SDK CodeWarrior (также существуют сборки для стандартного SDK, она обозначается аббревиатурой WINS, версии для архитектур ARM и THUMB обозначаются ARM4, ARMI или THUMB). UDEB - каталог, содержащий системные модули с отладочными (debug) средствами (буква U в данном случае - атавизм времен EPOC Release 5, та версия не была совместима с Unicode, а соответствующие наборы модулей назывались просто DEB или REL, отладочные или «релизы»). Назначение подкаталога z очевидно. Программа обычно размещается на «диске» С:, в каталоге system/apps/, диск D: обычно используется как временный носитель данных, которые не обязательно хранить постоянно. Эта структура в некоторых моделях может изменяться, но в целом она такова. Еще одна интересная особенность эмулятора - возможность запуска программ, не имеющих графического интерфейса. Это бывает необходимо на этапе отладки прикладного ядра пакета или при создании модулей-серверов. Интерфейс обеспечивает вполне обычно выглядящая программа- оболочка с интерфейсом командной строки (eshell; система команд довольно сильно напоминает DOS). Stewie [ 12967 ] i 20 :07 ,01 фев Локализация Проблема адаптации к национальным языкам в случае Symbian практически отсутствует. ОС предоставляет все необходимые средства для того, чтобы адаптировать интерфейс к требованиям тех или иных языков. Будучи системой, основанной на Unicode, Symbian OS может демонстрировать, скажем, арабский текст с вкраплениями русского и иероглифов. Эта возможность редко используется на практике, но в любом случае при выводе текста разработчик в общем не испытывает проблем. С использованием языков в интерфейсе дело обстоит чуть сложнее, но непреодолимых проблем нет и здесь. При создании многоязычного проекта обычно не требуется вносить какие-либо изменения в исходные тексты, достаточно подготовить соответствующее количество ресурсных модулей - система выберет нужный автоматически. При этом разные языковые версии модулей отличаются кодом языка (он используется как расширение файла) и процесс смены интерфейса пользователю напрямую не доступен, т. е. переключить можно лишь параметры региональных настроек. Это не всегда удобно (но при необходимости можно реализовать собственный механизм). Едва ли не основной подводный камень - возможность забыть о преобразовании ресурсного файла в Unicode. Языковой модуль включается в комплект инсталляционного файла, где пользователь и может выбрать его при инсталляции программы. Инсталляция и распространение Инсталляция и распространение - процессы, которые в Symbian OS за последнее время стали менее удобными в основном из-за злоумышленников, которые избрали смартфоны своей очередной мишенью. Проблема вирусов как таковых в Symbian отсутствует (впрочем, классических вирусов сегодня вообще немного), куда больше проблем доставляют разного рода «троянские кони», маскирующиеся под прикладное ПО (и даже под антивирусы). Устанавливая такую программу, пользователь может считать, что имеет дело с благонамеренной утилитой или игрой, но получит «троянский модуль» (возможностей навредить много: чаще всего со смартфона похищается личная информация или же «троян» пытается использовать разного рода платные услуги, например основанные на SMS). Бороться с этим злом, безусловно, необходимо (думается, мало кто из создателей ПО захочет, чтобы его именем прикрывался «троянец»). На практике это выливается в ужесточение политики разработчиков ОС и изготовителей аппаратных средств, когда на смартфон допускается инсталляция только ПО, имеющего соответствующую цифровую подпись и прошедшего испытания в их лабораториях. Этот процесс оплачивается ( 250-600 долл. за попытку сертификации, которую программа не обязательно пройдет; отметим, что для создателей бесплатных программ предлагается и бесплатная сертификация, но на довольно жестких условиях), он занимает определенное время и требует дополнительных усилий. На этапе разработки автор может использовать «самоподписанные» программы или «сертификат разработчика» (он привязывается к серийному номеру самого телефона). Это упрощает процесс, но и накладывает ряд ограничений, - в частности, некоторые API доступны только сертифицированным партнерам. Список таких подсистем постоянно расширяется (на сегодня туда входят, например, низкоуровневая обработка нажатий клавиш, доступ к файловой системе и др.). Это обстоятельство отталкивает многих из тех, кто хотел бы попробовать свои силы в разработке для Symbian OS, и, если рассуждать здраво, может сильно повредить рыночным позициям ОС уже в недалеком будущем. Поскольку все эти «жестокости» в общем-то малоэффективны, количество «троянских модулей», как показывает практика, не уменьшается. Выгода от криминальных атак на смартфоны вполне окупает затраты на сертификацию, а замаскировать деструктивные действия под вполне безобидные операции квалифицированный разработчик сможет без особенных сложностей. Stewie [ 12967 ] i 20 :08 ,01 фев Как бы то ни было, подготовленная для распространения программа должна быть запакована в архивный файл специального формата (с расширением.sis). Это основная форма существования дистрибутивных модулей для Symbian OS, отклонения наблюдаются довольно редко (хотя встречаются, например, если разработчик хочет усилить защиту от копирования и загружает компоненты пакета в память смартфона, пользуясь своими средствами). Этот файл должен быть скопирован в память телефона (или напрямую, или посредством коммуникационных утилит, обычно пакета PC Suite) и запущен там. Если цифровая подпись отсутствует, при попытке инсталляции выдается предупреждение о ее отсутствии. В большинстве современных моделей пользователь может инсталлировать программу на свой страх и риск, но, учитывая описанные выше тенденции, есть основания полагать, что в недалеком будущем установка несертифицированных модулей будет заблокирована (впрочем, здесь все зависит от политики изготовителя устройства). Формат SIS предоставляет довольно много возможностей для организации интеллектуального процесса установки. В частности, можно запросить выдачу текста (скажем, лицензионного соглашения), определить модули, от которых зависит данный пакет, задать выбор места инсталляции (в памяти телефона или на карте памяти), запустить программу и пр. Дистрибутивные файлы могут быть вложенными. С учетом требования цифровой подписи процесс формирования файла SIS - многоступенчатый, с отдельными этапами создания, подписи, генерации ключей и др. Сценарий процесса создания собственно дистрибутивного пакета описывается в файле PKG (синтаксис его вполне прост). Тесные рамки статьи не позволяют нам более подробно рассмотреть ряд интереснейших аспектов программирования в среде Symbian OS. Так, за кадром остались вопросы использования «активных объектов» (они упрощают обработку асинхронных событий и даже предоставляют средства для организации подобия кооперативной внутрипоточной многозадачности), возможности мощной и гибкой системы дескрипторов, организации обработки крупных массивов данных и многое другое. Но благодаря хорошо продуманной архитектуре и богатой функциональности какие-то существенные трудности возникают довольно редко. Что же касается подводных камней, которые доставляют массу неприятных минут начинающим создателям ПО, автор хотел бы надеяться, что изложенная информация поможет преодолеть их. И напомним, что только практика позволит разработчику освоить все возможности столь мощной системы, как Symbian OS. «- |-»