<< Пред.           стр. 10 (из 32)           След. >>

Список литературы по разделу

 каторах мы поговорим в разделе 7.4. Уникальный идентификатор.
 ? TARGET PATH - здесь определяется место расположения программы в мо
 мент инсталляции ее на телефон. В файле Test.mmp задана директория
 \system\apps\test без указания диска (С: или Е:). В этом случае пользова
 тель может сам выбирать, на какой диск устанавливать программу, но по
 указанному адресу. Операционная система Symbian инсталлирует про
 граммы в папку \system\apps.
 ? LANG - это язык, используемый в приложении. Для обозначения исполь
 зуются заглавные буквы или код из цифр, обозначающий выбранный
 язык. В главе 8 вы найдете подробное описание этой темы. Язык по умол-
 ?
 чанию - английский. В этом случае можно вообще не использовать данный атрибут.
 ? SOURCEPATH - местонахождение или путь к файлам исходного кода, здесь
 указывается папка с исходными кодами проекта.
 ? SOURCE - полное имя файлов исходного кода проекта с расширением
 *.срр. Обязательно необходимо указывать все имеющиеся файлы про
 екта.
 ? RESOURCE - перечисляются имена всех файлов ресурсов с расширением
 *.rss и *_caption.rss.
 ? UERINCLUDE - папка с подключаемыми заголовочными файлами проек
 та. В программе Test это . . \inc.
 Q SYSTEMINCLUDE - директория на компьютере, содержащая библиотечные и заголовочные файлы Symbian OS, это всегда \epoc32\include.
 ? LIBRARY - подключаемые вами в приложение библиотечные файлы. При
 работе с системными классами Symbian OS вы должны подключить заго
 ловочный файл. Делается это в начале исходного кода, и многие классы
 требуют подключения соответствующей системной библиотеки. В атри
 буте LIBRARY и прописываются все без исключения библиотеки, задей
 ствованные вами в программе.
 ? AIF - это информационный файл приложения (Application Information
 File), содержащий иконку программы и файл ресурса (*.aif), который опи
 сывает использование информационных ресурсов программы. В конце
 главы мы задействуем этот атрибут и добавим иконку в приложение.
  Это полное описание атрибутов файла *.mmp. В программе Test мы задействовали почти все атрибуты, а в конце этой главы и в начале следующей используем оставшиеся атрибуты *.mmp файла. При импорте проекта в любой из сред программирования, на основе указанных данных в файле ММР создается общая структура проекта, принимающая непосредственное участие в компиляции, сборке, отладке, упаковке всей программы. Поэтому важно прописывать все данные проекта в файле ММР до его импорта в одну из сред программирования. В CodeWarrior на основе файла ММР создается свой проектный файл с расширением МСР, но это точная копия атрибутов файла ММР, оптимизированная для работы с CodeWarrior.
 7.3.13. Файл Test.pkg
  В тестировании программ на эмуляторах файл *.pkg не участвует. Этот файл задействуется системой при создании установочного пакета (SIS) для переноса на телефон, и на основе описаний *.pkg файла создается архив SIS.
  Синтаксис описания *.pkg файла несложен. Давайте рассмотрим файл Test.pkg, который находится на компакт-диске в папке \Code\Test\sis\Test.pkg.
 ; файл Test.pkg
 ; необходим для создания установочного пакета SIS
 
 ; название, UID3, версия (major, minor, build), тип упаковки
 #{"Test"}, (0x10000000), 1,0,0, TYPE=SISAPP
 ; серия 60 версия 2.0
 (0xl01F7960), 0, 0, 0, {"Series60ProductID"}
 ; пути к откомпилированным файлам программы
 "..\..\..\epoc32\release\armi\urel\Test.арр" -
 " !:\system\apps\Test\Test.арр"
 ".Л.Л..\epoc32\data\z\system\apps\Test\Test.r01"-"!:\system\apps\Test\Test.rsc"
 ".Л.Л..\epoc32\data\z\system\apps\Test\Test_caption.r01"-"!:\system\apps\Test\Test_caption.rsc"
  В коде можно применять ассемблерный вид комментариев, которые следуют после точки с запятой. Компилятором они будут игнорироваться.
 В строке кода
 #{"Test"}, (0x10000000), 1,0,0, TYPE=SISAPP
 указаны имя приложения, заключенное в фигурные скобки, уникальный идентификатор приложения (UID3), номер версии программы (ma j or, minor и build) и тип создаваемого установочного пакета. Затем прописывается строка кода, указывающая на платформу, под которую создается программа: (0xl01F7960), 0, 0, 0, {"Series60ProductID"}
  Это уникальный идентификатор платформы (Platform UID), подробности смотрите в этой главе, в разделе 7.4.
  И последние шесть строк исходного кода файла Test.pkg определяют пути к откомпилированным и готовым компонентам программы.
 " . . \ . . \ . . \epoc32\release\armi\urel\Test.арр" -" !:\system\apps\Test\Test.арр"
 ". Л. Л. . \epoc32\data\z\systeIn\apps\Test\Test.r01"-" ! :\system\apps\Test\Test.rsc"
 " . Л . Л..\epoc32\data\z\system\apps\Test\Test_caption.r01"-"!:\system\apps\Test\Test_caption.rsc"
  Перед созданием SIS-архива вы обязаны откомпилировать программу под платформу ARMI UREL или THUMB UREL в зависимости от модели телефона. После компиляции исходных кодов и ресурсов приложения в каталоге, где установлен используемый SDK, появятся файлы с расширением *.арр, *.rsc и *._caption.rsc. Это готовые компоненты программы, которые можно упаковывать в SIS-архив. Файл Test.app расположен в папке:
 
 " . . \ . .\..\epoc32\release\armi\urel\Test.арр"
  Вторая строка с восклицательным знаком " !:\system\apps\Test\Test.арр"
 указывает на то, что во время инсталляции пользователем программы на телефон, он может ее установить на любой диск своей файловой системы, но в каталог \system\apps\Test\Test.app. Ресурсы приложения находятся в других папках, как видно из исходного кода файла Test.pkg, поэтому прописывается следующий путь:
 ".Л.Л..\epoc32\data\z\system\apps\Test\Test.r01"-"!:\system\apps\Test\Test.rsc"
 "..\..\..\epoc32\data\z\system\apps\Test\Test_caption.гО1"-"!:\system\apps\Test\Test_caption.rsc"
  Если вы используете в файле ММР своего проекта декларацию языка LANG, то файлы ресурсов после компиляции будут иметь расширение *.гО1 (для английского языка). При использовании других языков соответственно будет изменяться и расширение откомпилированного файла ресурса, например, для русского языка это *.г16. Подробно о локализации приложений рассказывается в следующей главе.
  Все установки с описанием путей к готовым файлам программы, использованные в файле Test.pkg, верны только для SDK серии 60 версии 2.x, а в SDK серии 60 версии 1.x необходимо прописывать следующие пути:
 ".Л.Л..\epoc32\release\armi\urel\Test.app" -w ! :\system\apps\Test\Test.арр"
 ". Л . Л..\ерос32\ release\armi\urel \Test.r01"-"!:\system\apps\Test\Test.rsc"
 ".Л . Л..\ерос32\ release\armi\urel \Test_caption.r01"-"!:\system\apps\Test\Test_caption.rsc"
  После компиляции проекта под SDK серии 60 версии 1.x готовые файлы программы сохраняются в этих папках. Как видите, для ресурсов программы путь к готовым элементам приложения в SDK серии 60 версии 1.x уже совсем другой. Поэтому если во время упаковки программы появляется ошибка, указывающая на отсутствие тех или иных файлов готовой программы, то нужно пройти в каталог SDK и убедится в наличии соответствующих файлов.
  Для платформы THUMB откомпилированные файлы находятся в папках для SDK серии 60 версии 2.x:
 "..\..\..\epoc32\release\thumb\urel\Test.арр" -" !:\system\apps\Test\Test.app"
 
 ".Л.Л..\epoc32\data\z\system\apps\Test\Test.r01"-" !:\system\apps\Test\Test.rsc"
 ".Л.Л..\epoc32\data\z\system\apps\Test\Test_caption.r01"-"!:\system\apps\Test\Test_caption.rsc"
 А для SDK серии 60 версии 1.x:
 ".Л.Л..\epoc32\release\thumb\urel\Test.app" -" !:\system\apps\Test\Test.арр"
 ". Л. Л. Лерос32\ release\thumb\urel \Test.r01"-"!:\system\apps\Test\Test.rsc"
 ".Л.Л..\ерос32\ release\thumb\urel \Test_caption.rOl"-"!:\system\apps\Test\Test_caption.rsc"
  При работе со средой Metrowerks CodeWarrior можно настроить проектные пути под свой проект. При формировании или экспорте проекта, среда программирования Metrowerks CodeWarrior в каталоге проекта создает несколько папок, одна из них Ha3BaHMeIIporpaMMH_Data. В этой папке имеются дополнительные вложенные папки с названиями платформ ARMI UREL, ARMI UDEB и так далее для всех платформ. Эти папки предназначены для хранения откомпилированных компонентов программы для каждой из платформ, но настройки по умолчанию в Metrowerks CodeWarrior направляют готовые элементы программы в каталог SDK. Произведя определенные настройки в проекте, можно именно в эти папки перенаправить размещение откомпилированных файлов программы.
  Для этого в активном проекте выберете в меню команду Edit =" ARMI UREL Setting (Alt+F7) или нажмите на инструментальной панели Metrowerks CodeWarrior крайнюю справа кнопку ARMI UREL Setting. Откроется диалоговое окно ARMI UREL Setting. На панели Target Setting этого окна, в поле Output Directory (Выходная директория для откомпилированных файлов проекта), укажите путь к папке, например, для программы Test, это C:\Symbian\Code\Test\ Test_Data\ARMI UREL. Точно такой же путь нужно указать на вкладке Symbian Installation диалогового окна ARMI UREL Setting в поле Content Search Location (Поиск файлов проекта).
 7.4. Уникальные идентификаторы UID
  Уникальный идентификатор (UID) - это 32-битное уникальное число в формате 0x00000000 или OxOFFFFFFF, идентифицирующее определенный компонент, используемый в создании программ для Symbian OS. Уникальных идентификаторов в одной программе может использоваться четыре, пять или более, но основными являются UID1, UID2, UID3 и Platform UID.
 
 7.4.1. Идентификатор UID1
  Этот уникальный идентификатор применяется в приложении опционально и прописывается в файле *.mmp в атрибуте TARGETTYPE. Как правило, UID1 употребляется редко и в проектном файле *.mmp в атрибуте TARGETTYPE проще всего применить англоязычные обозначения для типа создаваемой программы *.арр, *.dll или *.ехе.
 7.4.2. Идентификатор UID2
  Уникальный идентификатор UID2 - это специальный идентификатор для GUI-приложения в Symbian OS, содержащий обобщенное описание каркаса приложения (GUI). Он прописывается в файле *.mmp в атрибуте UID и обязательно идет первым в этой строке. В программе Test в файле Test.mmp применялся идентификатор со значением ОхЮООЗЭСЕ - это общий идентификатор для серии 60 и UIQ.
 7.4.3. Идентификатор UID3
  Уникальный идентификатор UID3 - идентификатор приложения, это очень важный идентификатор, который необходимо использовать с особой осторожностью! Идентификатор UID3 вы не можете создать сами, его необходимо заказать в компании Symbian Ltd. Для этого надо выслать письмо по электронной почте по адресу uid@symbiandevnet.com с просьбой выслать уникальный идентификатор приложения. В письме нужно обязательно указать свое имя и фамилию, адрес электронной почты и страну, в которой вы проживаете. За один раз можно попросить не более десяти идентификаторов. Не думаю, что на начальной стадии вам столько нужно, поэтому будьте скромнее - одного-двух будет достаточно. Каждая готовая программа, предназначенная для инсталляции на телефон, обязана иметь свой уникальный идентификатор приложения UID3.
  Никогда не используйте одинаковый уникальный идентификатор приложения UID3 в двух и более различных программах!
  Никогда не используйте старые идентификаторы в своих новых программах!
  Как только вы создали программу и готовы ее продавать или распространять бесплатно, закажите в Symbian уникальный идентификатор приложения UID3 для своей программы и больше никогда не используйте его в других программах!
  Если две разные программы с одним уникальным идентификатор UID3 попытаться установить на один и тот же телефон, возникнет системная ошибка, и обе программы никогда больше не будут работать на этом телефоне!
  Однако на этапе создания и тестирования программы на компьютере вы можете использовать свой промежуточный идентификатор. В программе Test мы так и поступили- использовался идентификатор UID3 со значением 0x10000000. В файле Test_Application.cpp в строке const TUid KUidTest = {0x10000000};
 
 объявлена константа со значением UID3 и в функции AppDl lUid () возвращалось значение UID3. В файле Test.mmp атрибут UID так же содержит UID3 со значением 0x10000000. И, наконец, в файле Test.pkg в строке #{"Test"}, (0x10000000), 1, 0, 0, TYPE = SISAPP; прописывается UID3. Во всех трех перечисленных файлах должен фигурировать один и тот же уникальный идентификатор приложения UID3. Но как только вы подготовили программу, чтобы покорить весь мир, закажите в Symbian Ltd. идентификатор UID3 и замените промежуточный UID3 на новый, специально полученный для программы.
  В использовании промежуточных идентификаторов приложения UID3 для тестирования на компьютере тоже есть свои нюансы.
  Нельзя использовать один и тот же идентификатор UID3 в различных приложениях и демонстрационных примерах, которые вы тестируете на компьютере!
  То есть если мы с вами создали программу Test с UID3 со значением 0x10000000, то следующую программу (даже демонстрационную работающую только на компьютере), вы обязаны наградить новым UID3! Дело в том, что в процессе тестирования программы, а именно в момент компиляции и сборки, UID3 идентифицируется в SDK и последующее его использование уже невозможно. То есть две разные программы с одним UID3 отлично компилируются, но работать не будут.
  Использование промежуточных идентификаторов приложения UID3 очень удобно. Вы можете контролировать их сами, но как только вы будете готовы распространять программу, вам потребуется действительно уникальный UID3, полученный в компании Symbian Ltd.
 7.4.5. Идентификаторы платформы
  Уникальный идентификатор платформы {Platform UID) декларируется только в файле приложения *.pkg и служит для создания корректного SIS-пакета. При использовании идентификатора платформы в момент инсталляции программы телефон идентифицирует программу по Platform UID. Если программа предназначена для этого устройства, то производится установка. Если программа написана для другой платформы, то телефон сообщит пользователю о возникшей проблеме и предложит выйти из процесса установки программы.
  В демонстрационном примере Test в файле Test.pkg был использован Platform UID: 0х101А7960- это уникальный идентификатор серии 60 версии 2.0. В табл. 7.3 перечислены уникальные идентификаторы различных платформ.
 Таблица 7.3. Уникальные идентификаторы платформы
 Платформы Идентификаторы
 Серия 60 версия 0.9 0x101F6F88
 Серия 60 версия 1.0 0x101F795F
 Серия 60 версия 1.2 0x101F8202
 Серия 60 версия 2.0 0x101F7960
 Siemens SX1 0x101F9071
 
 Таблица 7.3. Уникальные идентификаторы платформы (продолжение)
 Платформы Идентификаторы
 Nokia 3650 0x101 F7962
 Nokia N-Gage 0x101F8A64
 Nokia 6600 0x101F7963
 Nokia 6620 0x1020216B
 Nokia 6630 0x101 F7964
 Nokia 7610 0x101 F6F87
 Nokia 7650 0x101F617B
  UIQ2.0 0x101FD5DB
  Откомпилировав программу Test и запустив эмулятор, на рабочем столе телефона отобразится иконка и название программы, как это показано на рис. 7.5.
 
 
 
 
 
 Рис. 7.5. Работа программы Test
  В своей программе мы не использовати пока иконку, и поэтому сервис телефона добавляет иконку по умолчанию. Любое инсталлированное на телефон приложение добавляется на рабочий стол телефона в конец списка. Перейдя с помощью джойстика или клавиш телефона курсором по списку программ, наведите курсор на иконку программы. Выполните команду Запуск, Выбрать или Launch (в зависимости от модели телефона). Запустится рабочий цикл программы. В программе Test на экране телефона рисуются два прямоугольника, изображенные на рис. 7.5. Для выхода из программы используйте подэкранную клавишу Exit.
  Таким образом, было создано простое GUI-приложение, выступающее в роли каркаса для всех остальных программ. Теперь рассмотрим добавление иконки в программу.
 7.5. Добавляем иконку в приложение
  В Symbian OS существует вид ресурсов AIF (Application Information File), отождествляющийся как раз с иконкой и названием программы. Применяя отработанные механизмы Symbian OS, добавим в программу Test иконку. В дальнейшем мы будем модернизировать программу Test.
 
  Прежде чем перейти к проекту, нам понадобятся иконки. Для создания иконок можно использовать любой удобный для вас графический редактор. Стандартный формат Symbian OS для иконок и изображений - это *.mbm (Multi-Bitmap), но все графические элементы сохраняются в формате Windows - *.bmp и при компиляции программы конвертируются в формат *.mbm автоматически.
  В Symbian OS для AIF-ресурсов предусмотрено два вида иконок: размером 44 х 44 пикселя для рабочего стола телефона и 42x29 пикселей для всевозможных списков и названий программ. Так как в Symbian OS используются два вида дисплеев с различной цветностью (битность) экрана, иконки могут быть двух видов. Цветность в 4096 цветов - это 12-битный цвет (212 = 4096) и цветность в 65536 цветов - это 16 бит (216 = 65536). Так же в Symbian OS имеется поддержка и 24-битного цвета.
  При создании иконки необходимо сделать маску (mask bitmap) для иконки, которая примет непосредственное участие в процессе конвертации *.bmp файла в *.mbm формат во время компиляции программы. В программе AifTest на иконке изображена микросхема с надписью "Тест", а маска для иконки - это тот же самый рисунок с микросхемой, содержимое которого (микросхема) просто залито черным цветом. Это и есть маска. Во время конвертации изображения происходит процесс создания файла *.mbm с использованием исходного изображения и маски.
  В программе мы применим две 12-битные иконки: размером 44 х 44 пикселя - для рабочего стола телефона и 42 х 29 пикселей - для отображения в заголовке программы на панели состояния (Status Pane).
  Теперь перейдем к исходному коду. Для удобства был создан новый проект. Точнее, старый проект был помещен в папку AifTest, а в исходном коде использовался уже другой промежуточный уникальный идентификатор приложения UID3 (во избежание возможного конфликта). На компакт-диске программа AifTest находится в папке \Code\AifTest.
  Создадим в проекте AifTest новую папку, где будут располагаться иконка и маска. В программе AifTest иконка - это файл Test.bmp, а маска - MaskTest.bmp размером 44 х 44 пикселя. А так же иконка для заголовка программы - Testl.bmp и маска - MaskTestl.bmp размером 42 х 29 пикселей. Создадим новый файл ресурса AifTest.rss, исходный код которого вы найдете в папке \Code\AifTest\aif\ AifTest.aif, там же находятся и иконки.
 // файл AifTest.rss #include
 // данные aif ресурса RESOURCE AIF_DATA
 {
 // идентификатор UID3
 
 app_uid = 0x11000000; // список заголовков caption_list =
 CAPTION
 code = ELangEnglish; caption = "AifTest";
 num_icons = 2;
 embeddability = KAppNotEmbeddable;
 newfile = KAppDoesNotSupportNewFile;
 } //*******************************************************
  В начале исходного кода происходит подключение системного заголовочного файла ресурсов Symbian OS aiftool.rh, в котором находятся спецификации всех элементов, использованных в исходном коде AifTest.rss.
  Ресурс AIF_DATA содержит описание данных используемых программой. Переменной app_uid присваивается значение нового уникального идентификатора приложения (UID3), который вы так же должны изменить в проекте AifTest в файлах Test.mmp, TestApplication.cpp и Test.pkg.
  С помощью ресурса caption_list объявляется список заголовков для под-рисуночной надписи иконки на рабочем столе и на панели состояния в самом приложении. В этом случае при использовании AIF-pecypca необходимость в файле Test_caption.rss, в котором также определен заголовок программы, отпадает. Но приоритетность у файла Test_caption.rss выше, чем у AIF-pecypca, поэтому в названиях программы можно использовать содержимое файла Test_caption.rss, оба файла взаимозаменяемы. Чтобы показать разностороннее применение одних и тех же элементов программы, файл ресурса Test_caption.rss не используется в проекте AifTest, и его функции возложены на AIF-ресурсы.
  В списке CAPTION используются два значения для code и caption. Переменная caption содержит название программы, заключенное в кавычки, а вот code определяет код языка, употребляемого для названия программы. В программе AifTest был применен код для английского языка ELangEnglish, подробней об этой теме мы поговорим в главе 8.
  Затем перейдите в файл Test.mmp проекта AifTest и задекларируйте новые AIF-ресурсы приложения. Это всего две строки кода, добавленные в самый конец файла *.mmp. He забывайте изменять идентификатор UID3 для каждого нового приложения.
 //******************************************************* // файл Test.mmp
 
 //л******************************************************
 TARGET Test.app
 TARGETTYPE app
 UID ОхЮООЗЭСЕ OxllOOOOOO
 TARGETPATH \system\apps\test
 LANG 01
 SOURCEPATH ..\src
 SOURCE Test_Main.cpp
 SOURCE Test_Application.cpp
 SOURCE Test_AppView.cpp
 SOURCE Test_AppUi.cpp
 SOURCE Test_Document.cpp
 SOURCEPATH ..\group
 RESOURCE Test.rss
 USERINCLUDE ..\inc
 SYSTEMINCLUDE \epoc32\include
 LIBRARY euser.lib
 LIBRARY apparc.lib
 LIBRARY cone.lib
 LIBRARY eikcore.lib
 LIBRARY avkon.lib
 LIBRARY commonengine.lib
 AIF Test.aif ..\Aif AifTest.rss \
 cl2 Test.bmp MaskTest.bmp Testl.bmp MaskTestl.bmp //*******************************************************
  После ключевого слова AI F следует название для откомпилированного файла AIF-pecypca Test.aif. Новый проект называется AifTest, но мы используем содержимое программы Test (классы, ресурсы), поэтому и применяется название Test.aif. Затем определяется название папки проекта - Aif, где находится файл ресурса AifTest.rss. Во второй строке кода идет перечисление через пробел всех иконок и масок. Причем основная иконка для рабочего стола, должна прописываться первой. Атрибут с12 указывает на битность, то есть 12 бит для экрана с 4096 цветами.
 
  И последнее дополнение нужно сделать в файле Test.pkg проекта AifTest. Изменяем уникальный идентификатор UID3 и указываем путь к откомпилированному файлу AIF.
 /Test.pkg
 ; Файл необходим для создания установочного пакета
 ; Название программы, UID3, версия и тип упаковки программы #{"Test"b (0x11000000), 1,0,0, TYPE=SISAPP
 ;Серия 60 версия 2.0
 (0xl01F7960), 0, 0, 0, {"Series60ProductID"}
 "..\..\..\epoc32\data\z\system\apps\Test\Test.aif"-"!:\system\apps\Test\Test.aif"
 "..\..\..\epoc32\release\armi\urel\Test.арр" -" !:\system\apps\Test\Test.арр"
 *¦. Л. Л. •\epoc32\data\z\system\apps\Test\Test.r01"-" !:\system\apps\Test\Test.rsc"
 ".Л..\..\epoc32\data\z\system\apps\Test\Test_caption.r01"-*!:\system\apps\Test\Test_caption.rsc"
  Вот и все изменения, которые коснулись проекта AifTest. Откомпилируйте программу и запустите эмулятор. Вы увидите, что на рабочем столе у приложения AifTest появилась иконка, как показано на рис. 7.7. А при запуске программы на панели состояния отобразится меньшая по размеру иконка. Теперь мы рассмотрим альтернативное или автоматизированное добавление AIF-ресурсов в программу.
 
 
 
 
 
 Рис. 7.6. Работа программы AifTest
 
 7.5.1. Добавление AIFресурсов в C++ BuilderX
  Откройте среду программирования C++ BuilderX и сформируйте или импортируйте новый проект. Затем создайте в директории проекта новую папку с названием aif и поместите в нее иконки для приложения. Выберите в меню команду File => New и в появившемся диалоговом окне Object Gallery, изображенном на рис. 7.7, выделите опцию New Symbian AIF wizard и нажмите кнопку OK, запустив тем самым, мастер добавления AIF-pecypca в проект.
 
 Рис. 7.7. Диалоговое окно Object Gallery
  Появится новое диалоговое окно New Symbian AIF wizard - Step 1 of 3, показанное на рис. 7.8. В поле AIF source directory укажите путь к папке aif в директории проекта, в котором происходит добавления AIF-pecypca. Если это проект Test, то путь должен быть таким: C:\Symbian\Code\Test. Затем нажмите кнопку Next.
  В следующем окне New Symbian AIF wizard - Step 2 of 3, изображенном на рис. 7.9, в поле Bitmap file name необходимо последовательно перечислить названия всех иконок, включая маски. После этого нажмите кнопку Add для каждого указанного названия. В области Bitmaps в столбик будут отображаться добавленные файлы. Для перехода к последнему этапу работы с мастером нажмите кнопку Next.
  В последнем диалоговом окне New Symbian AIF wizard - Step 3 of 3 мастера добавления AIF-pecypca, изображенном на рис. 7.10, нужно задать имя заголовку программы и выбрать код для используемого языка. Для этого в списке Language выберите код языка, а в поле Caption на выбранном языке дайте названия программе, нажав кнопку Add. В области Defined captions все добавленные коды и языки будут представлены в виде таблицы. Для окончания работы с мастером нажмите кнопку Finish.
  После этого в активном проекте среды программирования C++ BuilderX на панели Project в папке \aif отобразятся проектные файлы изображения и AIF-
 
 
  Рис. 7.8. Диалоговое окно New Symbian AIF wizard - Step 1 of 3
 
 Рис. 7.9. Диалоговое окно New Symbian AIF wizard - Step 2 of 3
 ресурсов. Посмотрите на рис. 7.11, где показан проект Test в C++ BuilderX с открытым файлом Test.rss. Среда C++ BuilderX автоматически сформировала AIF-ресурс с необходимыми атрибутами, а в проектном файле *.mmp все созданные AIF-ресурсы будут так же прописаны соответствующим образом.
 7.6. Сборка проекта компилятором
  Что же происходит при компиляции и сборке проекта на системном уровне? Посмотрите на рис. 7.12, где схематично показаны процессы, происходящие во время компиляции и сборки проекта.
 
 
 Рис. 7.10. Диалоговое окно New Symbian AIF wizard - Step 3 of 3
 
 Рис. 7.11. Среда программирования C++ BuilderX с открытым проектом Test
  На рис. 7.12 схематично изображено все то, что вы изучили в этой главе, за исключением процесса локализации (поддержки различных языков) приложения, который мы рассмотрим в следующей главе. После компиляции проекта получаются готовые компоненты приложения, в которые входят файлы:
 
 
 Рис. 7.12. Схема компиляции, сборки и упаковки проекта
 ? *.арр - готовый откомпилированный исходный код программы;
 Q *._caption.rsc - файлы ресурсов, содержащие заголовки;
 ? *.rsc - файлы ресурсов программы;
 ? *.aif - информационные файлы ресурсов приложения.
  Все эти компоненты и составляют готовую программу, пригодную для работы на телефоне, при условии что компиляция и сборка проекта происходила для процессоров с архитектурой ARM (платформа ARMI). Далее все перечисленные компоненты программы упаковываются в специальный архив Symbian System Installation (SIS), оптимизированный под инсталляционную систему Symbian OS. То есть все компоненты программы с расширением *.арр, *._caption.rsc, *.rsc и *.aif запаковываются специальным образом и уже на телефоне распаковываются на выбранный пользователем диск в директорию \system\app\Ha3BaHHe_nporpaMMbi. Вы можете перенести файлы *.арр, *._caption.rsc, *.rsc и *.aif в системную папку телефона \system\app\Ha3BaHne_nporpaMMbi на любой из дисков. Делать это не рекомендуется, однако большое количество программ из Интернета распростра-нется именно таким образом, нанести вред телефону таким способом инсталляции программ сложно, но лучше не экспериментировать. А теперь на основе всей полученной информации создадим установочный пакет для Symbian OS, учитывая все изложенные нюансы.
 
 7.7. Создание установочного пакета SIS
  Я уверен, что вы уже не раз пробовали создать установочный файл SIS и, скорее всего, у вас ничего не получилось, а если и получилось, то на телефоне это приложение работать отказывалось. Поэтому рассмотрим правильный способ создания дистрибутива для Symbian OS вне зависимости от использования среды программирования, командной строки или SISAR.
  После того, как вы многократно протестировали программу на эмуляторе телефона, можно приступать к созданию установочного пакета.
  Папка с проектом должна обязательно находиться в каталоге SDK в папке Ерос32 для любой платформы!
  В случае с проектом AifTest, его папка должна находиться в каталоге C:\Symbian\Series60\Epoc32\AifTest! Только из папки Ерос32 возможно создание дистрибутива SIS. Если вы используете C++ BuilderX, то после размещения папки с проектом в директории Ерос32 выполните компиляцию проекта, как описано в главе 3. В среде программирования CodeWarrior необходимо выполнить в точности все действия из главы 2. Для программы SISAR порядок действий описан в главе 4.
  Если вы тестировали и компилировали программу под платформы WINCSW, ARMI или THUMB и ошибок не было, а при упаковке программы возникает проблема, то эта ошибка точно связана с указанием путей к готовым компонентам программы в файле PKG. Как уже упоминалось, в разных SDK и платформах готовые или откомпилированные компоненты программы могут находиться в разных папках, в разделе 7.3.13 указаны правильные пути к файлам.
  Если вы не уверены в местонахождении файлов, всегда можно перейти в каталог SDK и найти их самостоятельно, указав правильные пути в файле PKG. Сам файл PKG вашего проекта при создании SIS-архива лучше расположить в папке \group рабочего проекта вместе с файлом ММ Р. Это гарантия безошибочной упаковки программы, и, конечно, не стоит забывать о правильных идентификаторах UID2, UID3 и Platform UID.
 
 Глава 8. Интерфейс пользователя
 В Symbian OS реализовано огромное количество системных классов для создания пользовательского интерфейса приложения. Это шаблонные классы, использование которых приводит к созданию меню, диалогов, таблиц, редакторов списков и других элементов интерфейса, упрощающих работу пользователя.
  Платформы UIQ и серия 60 в силу разных параметров дисплеев имеют два различных пользовательских интерфейса, поэтому имеет смысл коснуться общих характеристик для обеих платформ.
 8.1. Платформа UIQ
  Интерфейс пользователя UIQ используется в телефонах Sony Ericsson, Motorola, Arima и BenQ. Дисплей телефонов имеет достаточно большой размер
 
 208 х 320 пикселей и предусматривает сенсорный ввод данных для облегчения работы пользователя. Все рабочее пространство дисплеев телефонов на платформе UIQ состоит из нескольких панелей. На рис. 8.1 изображен экран телефона UIQ с обозначением имеющихся панелей.
 ? Application Picker - панель, содержащая
 иконки приложений;
 Q Menu bar - панель меню;
 Рис. 8.1. Панели UIQ
 ? Main pane - клиентская область экрана;
 ? Toolbar - панель инструментальных средств;
 ? Status bar - панель состояния.
 8.1.1. Панель Application Picker
  На панели Application Picker в виде иконок отображаются доступные пользователю приложения. Когда приложение запущено, иконка этой программы выделена графически, как показано на рис. 8.1. Для работы с программами пользователь выбирает необходимую иконку приложения на панели Application Picker, запуская тем самым рабочий цикл программы.
 8.1.2. Панель Menu bar
  В тот момент, когда приложение запущено, возникает необходимость выполнения различных команд. Для удобства работы с приложениями предусмотрена стандартная панель меню Menu bar. Работа с Menu bar напоминает работу с обык-
 
 новенной линейкой меню любой программы.
 8.1.3. Клиентская область экрана
  Клиентская область экранаслужит для представления основных данных программы. Например, если это календарь, то вы увидите числа и дни недели, если это текстовый редактор, то можно будет редактировать, читать и набирать текст.
 8.1.4. Панель Toolbar
  Панель Toolbar используется в программах опционально и может быть не реализована в приложении. На панели Toolbar элементы представлены в виде кнопок и служат для определения различного рода командных действий и других специфических операций, например, для отображения цифр или букв алфавита.
 8.1.5. Панель Status bar
  На панели состояния почти всегда отображается кнопка виртуальной клавиатуры, нажав на которую пользователю становится доступной клавиатура для сенсорного ввода данных. Так же на панели Status bar может находиться индикатор заряда батареи, дата и время.
 8.2. Серия 60
 
 
  Интерфейс пользователя телефонов, использующих серию 60, очень отличается от интерфейса в UIQ. Телефоны серии 60 имеют разрешение 176 х 208 пикселей, и сенсорный ввод не поддерживается. Экран телефона серии 60 разделен на три панели (см. рис. 8.2, где изображен дисплей телефона этой серии с обозначением панелей).
 ? Status Pane - панель состояния;
 ? Main Pane - основная панель;
 ? Control Pane - панель контроля.
 ?
 РИС. 8.2. Панели серии 60
 8.2.1. Панель Status Pane
  Панель состояния в серии 60 находится в верхней части дисплея. В играх обычно Status Pane скрывают, реализуя тем самым полноэкранный режим работы программы. Панель состояния состоит из шести панелей:
 ? Signal Pane - сигнальная панель, содержащая индикатор сети;
 ? Context Pane - контекстная панель, предназначенная для отображения
 иконки приложения (42 х 29 пикселей). В предыдущей главе с помощью
 AIF-pecypca мы нарисовали иконку программы Test как раз в контекстной
 ?
 панели;
 ? Title Pane - титульная панель для представления заголовка приложения;
 ? Navigation Pane - навигационная панель, служит для удобства навигации
 в программах и выполняется в виде вкладок;
 ? Indicator Pane - панель индикатора предназначена для отображения инди
 катора заряда батареи.
 8.2.2. Панель Main Pane
  Основная часть экрана служит для отображения данных приложения, рабочего стола телефона, графики и так далее. В серии 60 размер Main Pane - это вся клиентская область экрана - 174 х 132 пикселя.
 8.2.3. Панель Control Рапе
  Панель контроля {Control Pane) располагается в нижней части экрана над по-дэкранными клавишами телефона с командами. Как правило, это стандартный набор команд: Exit, Back, Cancel, Options. С помощью команд, расположенных на панели контроля происходит работа с меню, диалогами, списками и редакторами.
 8.3. Ресурсы
  Большая часть составляющих интерфейса пользователя в серии 60 строится на основе использования ресурсов. Как правило, это файлы исходного кода с расширениями *.rss, *.rh, *.hrh, *.loc и caption.rss, где описываются различные элементы программы. Ресурсы в Symbian OS могут использовать следующие типы данных:
 Q BYTE - 1-байтовое число без знака;
 ? WORD - 2-байтовое число;
 ? LONG - 4-байтовое число;
 ? DOUBLE - 8-байтовое число с плавающей точкой;

<< Пред.           стр. 10 (из 32)           След. >>

Список литературы по разделу