Бормотухи.НЕТ

Вернуться   Бормотухи.НЕТ > Техника и электроника > Телефоны, смартфоны, комуникаторы, КПК, GPS > Nokia
Расширенный поиск

Nokia Раздел для смартфонов и телефонов. Тут море полезной информации, можно бесплатно скачать программы для смартфона, взломать смартфон и многое другое. Все для Symbian 9

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2008, 14:45 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Возьми свой смартфон под контроль

Возьми свой смартфон под контроль

После публикации статей «СМС-шпионаж» в сентябрьском номере «Х» и «Symbian tips'n'Tricks» в октябрьском «Спеце» я получил море писем с просьбами рассказать о том, как изучить основы кодинга под смартфоны на базе Symbian и какой инструментарий использовать. Что же, по просьбам трудящихся я и опишу этот трудоемкий, но захватывающий процесс создания программы для смартфона.

На чем писать?

Под Symbian можно писать и на Яве, и на Си, и даже на Python и C#. Но что касается Java2ME, то ни быстрота выполнения кода, ни возможности, предоставляемые этим языком разработчику, не являются удовлетворительными. Аналогичная ситуация пока и с .NETПитон, думаю, вообще говорить не стоит :). для смартфонов. Про
С++ же, в свою очередь, позволяет использовать ОС на полную катушку, поскольку сама Symbian и написана на этом могучем языке :).

Symbian бывают разные

Как ты, наверное, знаешь, ОС Symbian – лишь основа программной части любого смартфона, предоставляющая необходимые для работы API. Внешний вид же и способ взаимодействия с пользователем определяется одной из двух реализаций интерфейсных надстроек над ОС – Series60 от компании Nokia и UIQ от Sony Ericson. В этой статье я буду ориентироваться на разработку под Series60, поскольку платформа UIQ хоть и вызывает восхищение с эстетической точки зрения, но практически ограничивается 3-4 моделями смартфонов от Sony Ericson. К выпуску смартов же на S60 подключились, помимо Nokia, и такие скорострелы смартфоностроения, как Samsung и LG. На сегодняшний день количество моделей на этой платформе перевалило за 50, что с успехом можно наблюдать в часы пик в метрополитене :).

Инструментарий

Определившись с языком, нужно разобраться со средой разработки, которую мы будем использовать для создания проектов. На данный момент очень хорошо себя зарекомендовала связка Visual Studio.NET 2003 + Carbide.VS. В октябрьском «Спеце» мы уже писали о том, почему лучше использовать этот инструментарий. Поэтому здесь я лишь напомню, что Carbide.VS – надстройка над студией от компании Nokia. Взять ее можно на нашем диске, либо на forum.nokia.com. После установки студии и надстройки необходимо определиться, под какую версию ОС мы будем писать. На сегодняшний момент ходовыми являются версии 7.0, 8.0, 8.1 и 9.1. Для каждой версии платформы есть свой набор инструментов, называемый SDK и включающий документацию, примеры кода, эмулятор смартфона на ПК и прочие тулзы, необходимые для сборки проекта. По большому счету программа, написанная для Symbian 7.0 с использованием соответствующего SDK, будет успешно работать и на последующих версиях до 8.1 включительно (если не применять какие-нибудь специфические API). SDK также есть на нашем диске и на forum.nokia.com. Устанавливать это дело нужно на диск С (это важно), после чего появится директория вида C:/Symbian/Series60/7.0/Epoc32. Вот в ней-то и нужно создавать проекты, чтобы компилятор и линковщик нормально работали.

Из чего состоит проект на Symbian?

После установки необходимого инструментария надо разобраться, что есть что в минимальном проекте. Запускай среду и выбирай New Symbian Project в папке Visuall C++ Project. Не забудь задать путь проекта в папке Epoc32. Далее в диалоговом окне выбирай SDK (если их в списке нет, то юзай кнопку Enable/Disable SDK) и указывай тип проекта Classic. Project Template – S60 EIKON Control-Based Application («Hello, World»). После этого жми Finish, и среда сгенерирует тебе кучу разных непонятных классов и файлов в папке проекта.
Предлагаю пройтись по папкам, которые создала студия, и посмотреть, что в них лежит.
AIF – здесь по умолчанию хранится иконка приложения (в варианте для статусной панели программы и для меню смартфона). Обрати внимание, что, для того чтобы лого программки нормально смотрелось в меню, необходимо для каждой картинки создавать черно-белую маску, где черным будет закрашена видимая (показываемая) часть. Часть картинки, выкрашенная в белый цвет, не отобразится в меню программ, а ее место займет общий фон темы оформления, установленной на смартфоне. Советую подробнее посмотреть документацию по Bitmap и утилите AifTool.
Кроме того, в этой папке еще имеется файл aif-ресурсов приложения, имеющий примерно такой вид:


#include <aiftool.rh>
RESOURCE AIF_DATA
{
app_uid=0x01ff9a56; //UID приложения
num_icons=2; //количество иконок
...
}


DATA – в этой директории хранятся файлы ресурсов приложения, являющиеся очень важной частью любой GUI-программы для Symbian. В ресурсах определяются строки, пункты и структура меню, внешний вид статусной панели приложения, структура списков и других контролов. Описание любого ресурса начинается с ключевого слова RESOURCE. К примеру, простейшее меню, вызываемое при нажатии левой функциональной кнопки, описывается следующим образом:


RESOURCE MENU_PANE r_symbian3_menu
{
items =
{
MENU_ITEM { command = ESymbian3CmdAppTest; txt = qtn_appl_test; },
MENU_ITEM { command = EAknCmdExit; txt = qtn_appl_exit; }
};
}


MENU_ITEM соответствует каждому новому пункту меню. Здесь command – идентификатор команды, вызываемой при выборе соответствующего пункта меню, а txt – подпись пункта. Ресурс caption’а приложения вынесен в отдельный файл и имеет такой вид:


RESOURCE CAPTION_DATA.
{
caption = qtn_app_caption_string; //Подпись приложения
shortcaption = qtn_app_short_caption_string; //Короткая подпись приложения
}


GROUP – здесь лежат файлы, необходимые для сборки проекта. Наибольший интерес представляет файл с расширением mmp. Это файл описания проекта, из которого линковщик берет все пути подключаемых библиотек, хедеров и т.д. Рекомендую ознакомиться со структурой MMP и почитать документацию.
Хочу обратить внимание на следующий факт: часто при добавлении нового функционала в приложение необходимо использовать какой-либо класс, требующий подключения определенного хедера и библиотеки. Соответственно, эту библиотеку нужно прописывать в mmp-файл следующим образом: LIBRARY megalib.lib. При этом в VS наблюдается такой глюк: при сборке проекта, если она до этого уже производилась, иногда появляется сообщение об ошибке, в котором говорится о том, что требуемая библиотека не подключена, хотя это не так! В подобных случаях нужно делать ReBuild Solution. Если и это не помогает, можно попробовать реимпортировать свой проект. То же самое касается и файлов ресурсов: если ты видишь, что изменения в них никак не отражаются на сборке, сделай ребилд.
INC – здесь располагаются хедеры использующихся в проекте классов. Стоит отметить, что в Symbian C++ принята очень полезная практика - для каждого более-менее значимого класса создавать отдельную пару «хедер - cpp‘шник». Кроме того, в этой папке имеется файл с расширением hrh, в котором содержится перечисление всех юзерских команд, вызываемых при выборе определенного пункта меню:


enum TXaCommandIds
{
cmd_mymoney=1,
cmd_myanketa,
cmd_myanketa_view,
cmd_myanketa_change,
cmd_shownadv,
cmd_cab,
cmd_hide
};


Чтобы избежать всяких дурацких ошибок при сборке, важно не забывать вносить сюда все новые команды.
Тут же лежит файл, содержащий локализованные версии строк, используемых в приложении для подписей, лейблов, диалогов и т.д. Как правило, такой файл состоит из строк вида:


#define caption_cmd_title "МегаПрога"
#define caption_cmd_exit "Выход"


SIS – тут находится pkp-файл, содержащий информацию, необходимую для сборки приложения, включая универсальный идентификатор приложения и пути файлов, которых надо поместить в сборку (картинки, ресурсы и т.д.).
Так, например, в строке вида «"C:\Symbian\Series60\7.0\Epoc32\release\thumb\urel\Symbian4.app"-"!:\system\apps\Symbian4\Symbian4.app"» мы указываем, что файл Symbian4.app будет установлен в директорию system\apps в смартфоне.
Сама сборка, то есть установочный sis-файл, окажется в рассматриваемой папке.
SRC – тут все просто - сорцы используемых в программе классов.

Базовые классы проекта

Элементарный Symbian-проект состоит из следующих классов:
  • Application – содержит точку входа и создает класс Document;
  • Document – задает некоторые свойства приложения (видимость/невидимость, например) и создает класс AppUI;
  • AppUI – формирует интерфейс пользователя и обрабатывает события (выбор пункта меню, элемента списка и т.д.), а также создает класс Container;
  • Container – класс, служащий контейнером для контролов (списки, редакторы и т.д.), а также отвечающий за перерисовку и настройку контролов.
Думаю, на начальном уровне особый интерес представляет класс AppUI, поскольку он дает возможности обработки событий и команд пользователя. Рассмотрим, например, как обрабатывается выбор пункта меню. Как ты помнишь, в файле ресурсов содержится идентификатор команды, генерируемой при выборе каждого пункта. За перехват и обработку этих команд отвечает метод HandleCommandL класса AppUI. Код обработки выглядит так:


void CXaAppUi::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{

case cmd_first:
{
//какой-то код
}
break;

case cmd_hide:
{
Exit(); //выход
}
break;
case EAknSoftkeyBack:
case EEikCmdExit:
{
Exit();//обработка нажатия на правую клавишу «Back»
break;
}
default:
break;
}
}


Кроме этого метода, AppUi предоставляет еще множество полезных методов и свойств, почитать о которых стоит в SDK Help.
Кстати, основной проблемой кодинга под Symbian является полное отсутствие визуальности, к которой нас приучили такие среды, как Delphi и VS.NET. Другими словами, весь код придется набирать ручками, и чтобы этом в деле не ошибиться, нужно хорошо разбираться в C++. Весь кодинг объектно-ориентированный, поэтому его основные парадигмы нужно знать и принимать всем сердцем :).

Использование русских строк в ресурсах

Рано или поздно ты наверняка захочешь использовать в названии программы, подписях и т.д. кириллицу. Если просто взять и зафигачить ее в файлы ресурсов, то вместо русских букв на экране смартфона будут в лучшем случае квадратики, а в худшем - вообще какой-нибудь ужас. Чтобы этого не произошло, нужно в файле ресурсов вверху написать «CHARACTER_SET UTF8».
После этого файл ресурсов необходимо сохранить в кодировке utf-8, с чем справится великий и могучий Блокнот. Все вроде бы хорошо, но, после того как ты проделаешь эту операцию, проект у тебя не соберется :). Виной тому будут 3 служебных символа, добавленных Блокнотом в начало файла ресурсов. Их нужно убрать любым HEX-редактором.
В результате проект запустится, и ты сможешь наслаждаться нормальным русским текстом на экране мобилы.

Особенности кодинга под Symbian 9.1

После выхода новой версии операционки, жизнь кодеров под Symbian несколько усложнилась, что во многом связано с вводом новой платформы безопасности Symbian Signed. Теперь любое приложение для девятой версии, должно быть подписано цифровым сертификатом. Сертификат бывает трех типов: сертификат разработчика, позволяющий использовать любые API, но только на телефоне самого разработчика (привязка к IMEI); бесплатный сертификат, позволяющий использовать лишь ограниченный набор API, гарантирующий, что ты не впариваешь потребителю троян; сертификат, позволяющий использовать любые API. Последний выдается только после того, как приложение пройдет проверку парней из Symbian, которая стоит денег.
Кроме того, изменились компилятор и линковщик, поэтому в любом случае проекты, создававшиеся для более ранних платформ, необходимо перекомпилировать с использованием нового SDK. Подробнее об изменениях в новой версии можно прочитать на www.sotovik.ru/catalog/reviews/s60_3rd-rev.html.

Несколько слов напоследок

Естественно, для полного изложения основ кодинга под Symbian не может хватить одной статьи, поэтому здесь я привел только ключевые моменты, с которыми сталкивался сам. В качестве напутствия могу посоветовать читать больше документации, штудировать хелп и forum.nokia.com.

WWW
  • http://club60.org - пожалуй, единственный стоящий источник информации о Symbian на русском языке.
  • http://NewLC.com - весьма познавательный ресурс.
  • http://discussion.forum.nokia.com - здесь можно найти решение практически любой проблемы.
Статья взята с сайта: www.xakep.ru

Последний раз редактировалось Serberg; 12.07.2008 в 14:49..
  Ответить с цитированием
Cказали cпасибо:
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Инструкция] Русифицируем смартфон! Kustukturoff Nokia 3 09.06.2010 14:28
[Вопрос] Смартфон N80 Gintaras Телефоны, смартфоны, комуникаторы, КПК, GPS 4 27.05.2010 19:11
[Вопрос] смартфон е51 qweroff Nokia 2 22.02.2010 12:04
[Вопрос] По темам на смартфон simax Nokia 8 14.05.2009 15:53
Смартфон vs коммуникатор Злой Телефоны, смартфоны, комуникаторы, КПК, GPS 32 07.04.2009 14:25


Текущее время: 14:29. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
 

Время генерации страницы 0.16372 секунды с 12 запросами