Программирование на С++ для Symbian S60

Необходимый софт

I. SDK.  Слово "SDK" расшифровывается как Software Development Kit («Пакет для разработки приложений»). Это набор необходимых библиотек и утилит для разработки программ.

SDK следует качать с официального форуму Nokia. Для начала работы необходимо зарегистрироваться на форуме.

После регистрации перейдём на страницу закачки, где выложены все доступные SDK.

На этой странице находится таблица, в которой указаны аппараты на Series 60 и напротив каждого – подходящая к нему версия SDK.

Обратите внимание, что некоторые версии SDK представлены в двух вариантах – в названии присутствуют слова WINS или WINSCW. Первое предполагает, что будете использовать для разработки Visual Studio, а второе – что станете работать с CodeWarrior. Об этих программах позже.

Вот таблица, содержащая почти все известные на сегодняшний день модели и соответствующие им версии SDK:

Symbian OS SDK Platform ID Файл в папке Z:\System\Install Модели телефонов + MachineUID 9.2 3rd Ed, FP1 0x102032BE Series60v3.1.sis

Nokia 6290 0x20000606

Nokia N95 0x2000060B

Nokia N76 0x2000060A

9.1 3rd Ed 0x101F7961 Series60v3.0.sis

Nokia 3250 0x200005F8

Nokia 5500 Sport 0x20000602

Nokia E65 0x2000249E

Nokia E50  0x20002495

Nokia E60  0x20001856

Nokia E61  0x20001858

Nokia E62 0x20001859

Nokia E70 0x20001857

Nokia N71 0x200005FF

Nokia N73  0x200005FB

Nokia N75 0x200005FE

Nokia N80 0x200005F9

Nokia N91 0x200005FC

Nokia N92 0x200005FA

Nokia N93 0x20000600

8.1 2nd Ed, FP3 0x102032BD Series60v2.8.sis

Nokia N70 0x10200F9A

Nokia N72 0x10200F9A

Nokia N90 0x10200F98

8.0 2nd Ed, FP2 0x10200BAB Series60v2.6.sis

Nokia 6630 0x101FBB55

Nokia 6680 0x10200F99

Nokia 6681 0x10200F9C

Nokia 6682  0x10200F9B

7.0s 2nd Ed, FP1 0x101F9115 Series60v2.1.sis

Nokia 3230 0x10200F97

Nokia 6260  0x101FB3F4

Nokia 6620  0x101F3EE3

Nokia 6670   0x101FB3F3

Nokia 7610   0x101FB3F3

7.0s 2nd Ed 0x101F7960 Series60v2.0.sis Nokia 6600  0x101FB3DD 6.1 1st Ed FP1 (1.2) 0x101F8202 Series60v1.2.sis

Nokia 3650 0x101F466A

Nokia 3660 0x101F466A

Sendo-X 0x101FA031

Siemens SX-1 0x101F9071

6.1 1st Ed (1.0) 0x101F6F88 Series60v1.0.sis

Nokia N-Gage         0x101F8C19

Nokia N-Gage QD  0x101FB2B1

6.1 1st Ed (0.9) 0x101F6F88 Series60v0.9.sis Nokia 7650 0x101F4FC3

Некоторые значения пока непонятны, но в будущем мы к ним вернёмся.

2 общих правила при выборе SDK:

1. Платформы S60 1st и 2nd несовместимы с S60 3rd. Для каждой требуется собственная версия SDK.

2. Для каждого телефона в таблице указана версия SDK, с ней и следует работать. Если использовать более раннюю версию, может оказаться, что некоторые функции аппарата нельзя будет задействовать.

Чтобы охватить все существующие телефоны на Series 60, понадобятся два SDK – версий 1.2 и 3.0. Если программа написана для Symbian 6 – она почти наверняка будет работать на телефонах S60 2nd (Symbian 7-8) и большая часть исходного кода безо всяких изменений перейдёт на S60 3rd (Symbian 9). Особенности каждой версии SDK указаны в release notes, которые доступны на странице закачки.

II. Среда разработки на С++ (IDE). Если SDK – внутренние органы языка программирования, то IDE – кости и мышцы, а также средства коммуникации с внешним миром. Без IDE пользователь не может писать программы, но с ней – получает доступ к удобному интерфейсу, компилятору, справке и другому. Nokia предлагает использовать одну из двух программ – Carbide.C или Metrowerks CodeWarrior for Series 60. О них пойдёт речь в следующей главе. Для работы с Symbian 6 используется Microsoft Visual Studio 6.x. Кроме того, есть ещё вариант использовать Visual Studio .NET 2003, для него потребуется скачать и установить Caride.C и особый пакет для поддержки Visual Studio под названием Carbide.VS.

Зачем же нужны все эти "студии", если можно использовать то, что Nokia рекомендует? Во-первых, не все программисты легко расстаются с удобными и привычными для них инструментами (потому как Visual Studio используется также и для программирования для Windows), ну а во-вторых – качество нокиевских инструментов пока не выдерживает никакой конкуренции с мировым лидером производства софта для ПК. Бесплатные версии Visual Studio не подходят для наших целей.

Итог: если вы начинающий, то ставьте всё, как советуют финны: Carbide.C или Metrowerks CodeWarrior for Series 60.

  • Скачать CodeWarrior можно здесь, бесплатна только Personal Edition, в которой вполне можно написать самое серьёзное приложение.
  • А Carbide загрузить удастся отсюда. При установке следует выбрать Express Edition, всё прочее платно.

Рекомендуется установить обе IDE сразу, а потом разобраться, какая из них удобнее. Как для Carbide, так и для CodeWarrior инсталляционный комплект - общий для бесплатной и платных версий. Нужный вариант выбирается во время установки. Если была установлена платная версия – программа напомнит о необходимости оплаты по истечении пробного периода.

III. Perl. Perl подойдёт любой, более-менее современный, бесплатно скачать ActivePerl можно с сайта разработчика.

Работать напрямую с Perl не придётся, но он необходим для множества инструментов из SDK.

IV. Виртуальная машина Java. Java-машина на 100% необходима, если вы собираетесь устанавливать Carbide – версия 1.1 требует виртуальную машину не ниже 1.4.2.

На платформах S60 1st - 2nd  JAVA-машина необязательна, без неё не будет работать только несколько необязательных утилит. Для Symbian 6 нужна древняя версия машины 1.3.1, которую разве что можно найти в архиве производителя, более поздние версии не подходят.

Для S60 3rd edition Java-машина обязательна. Но тут уж чем свежее – тем лучше. Брать по этой ссылке.

JAVA, которая нужна для наших целей, называется Runtime Environment,  в названии установочного комплекта должны быть буквы RE, а размер установочного комплекта – примерно 20 Мб.  Есть ещё установочные комплекты SDK – для разработчиков JAVA, для Symbian-программистов они не потребуются.

Установка софта

Ставить скачанные программы лучше всего в такой последовательности:

1. ActivePerl.

2. Виртуальная машина JAVA.

3. Среда разработки.

4. SDK.

НАСТОЯТЕЛЬНО  НЕ РЕКОМЕНДУЕТСЯ менять папку по умолчанию для SDK, а особенно называть её по-русски или задавать имя, содержащее пробелы! Самое лучшее место для SDK – папка C:\Symbian. Иначе вы рискуете встретиться с самыми неожиданными проблемами.

Установили? Идём дальше!

Первым делом  заходим в папку, куда всё было установлено. Для Symbian 6 это папка C:\Symbian\6.1\Series60. Для более поздних – C:\Symbian\8.1a\S60_2nd_FP3, C:\Symbian\9.1\S60_3rd.

В каталоге каждой SDK пять папок:

Epoc32 Большую часть SDK составляют: эмулятор, библиотеки, заголовочные файлы и прочие вещи, которые понятны только программисту. Examples или Epoc32Ex Здесь примеры. Но "они какие-то странные". Это примеры консольных приложений, которые выглядят слишком уж нетипично для мобильных приложений – текстовый экран и курсор. S60Doc Справка SDK. Читать в обязательном порядке! S60Ex или Series60Ex А вот это "правильные" примеры. Из этих примеров можно собирать sis-файлы, ставить их на телефон и т.д. S60Tools Несколько утилит, которые могут и не пригодиться.

Дальше в основном пути будут приводиться от корневой папки SDK.

Небольшой тест

Давайте протестируем, всё ли установилось правильно.

Запускаем в Windows командную строку (Пуск-Выполнить-cmd) и последовательно вводим 3 команды, нажимая после каждой ENTER:

bldmake

make

echo %EPOCROOT%

Если в консоли написано, что bldmake или make "не является внутренней или внешней командой, исполняемой программой или пакетным файлом", либо в ответ на echo %EPOCROOT% появился "%EPOCROOT%", а не путь к корневой папке SDK, без буквы диска – пробуйте перезагрузиться,  зайти под администратором, выдать монитору оплеуху, потрясти бубном или переставить всё заново, можно вместе с виндой. Пока вы не увидите надписей, похожих на те, что на скриншоте, – ничего работать не будет.

Запуск консольного примера

Понятное дело, не терпится что-нибудь запустить. С горящими глазами пользователь забегает в папку с консольными примерами, открывает HelloWorld, и... Эх, в HelloWorld аж 10 файлов...

Ладно, не будем спешить. Заходить надо в Epoc32Ex\basics\helloworld. Там тоже HelloWorld, но поменьше, всего-то 3 файлика. Кто опытный программист – тот уже глянул файл cpp и обнаружил, что в нём несколько строчек кода.

Что дальше? Как увидеть два заветных слова на экране эмулятора?

Первым делом скомпилируйте пример с командной строки.

Меню "Пуск", пункт "Выполнить", вводим команду "cmd" . Далее переходим в нашу папку с помощью команды CD:

cd C:\Symbian\6.1\Series60\Epoc32Ex\basics\helloworld

Перейдя в папку, запускаем команду:

bldmake bldfiles

После выполнения этой команды в папке должен появиться файл ABLD.BAT.

И, наконец, запускаем команду

ABLD BUILD WINS UDEB

если была выбрана Visual Studio,

или

ABLD BUILD WINSCW UDEB

если был выбран CodeWarrior.

Всю эту последовательность видно на скриншоте:

Осталось только запустить пример. В папке Epoc32\Release\wins\udeb или Epoc32\Release\winscw\udeb, в зависимости от предыдущей команды, должен быть файл helloworld.exe. Нужно просто запустить его. На экране должно появиться окно эмулятора с первой консольной программой:

Чтобы увидеть пример на своём телефоне, необходимо в командной строке запустить другую команду:

ABLD BUILD THUMB UREL

– для Symbian 6-7-8

или

ABLD BUILD GCCE UREL

– для Symbian 9.

После этого получаем консольный HelloWorld, но уже для телефона. Он будет находиться в папке Epoc32\Release\thumb\urel или Epoc32\Release\gcce\urel.

Вы уже обратили внимание, что всё, собранное вами, находится в папке Epoc32\Release\,  а дальше путь меняется в зависимости от последних двух параметров запущенной команды?

Дальше консольную программу можно отправить на телефон и запустить из файлового менеджера. Дополнительных действий – создания sis-пакетов, установки их на телефоне – не требуется.

Пара слов для тех, кто хочет узнать всё и сразу

Доводилось слышать высказывания вроде: "Я самостоятельно освоил Word и Excel, могу нарисовать красный кружочек в MS Paint – значит, я опытный пользователь. А что стоит опытному пользователю научиться писать программки для смартфона?!" При этом такой опытный пользователь хочет сделать сразу же что-то большое и красивое. Он просто не представляет себе тот объём информации, который предстоит освоить для написания чего-то большого и красивого!

Правила такие:

1. Начинать изучение C++ нужно, например, с книги "С++ для чайников", но не с Series 60.

2. Начинать обучение нужно с чего-то скучного, простого и уже вроде как умершего, с консольных программ MS DOS, например. Если при этом появляется мысль "а нафиг оно мне надо, это старьё?"  – случай безнадёжный.

3. Если уж решили – "кровь из носу, но я начну с Series 60", смотрите в сторону консольных приложений под Series 60 и забудьте на время, что на смартфоне есть картинки, видео и SMS.

Пока слова "итерация", "множественное наследование", "динамический массив" для вас пустой звук и техническая документация на английском переводится с помощью Promt – вам незачем интересоваться окошечками и кнопочками. Не осилите.

Запуск графического примера

Для запуска на эмуляторе графических примеров (из папки Series60Ex) используются те же самые команды, т.е.BLDMAKE BLDFILES и  ABLD BUILD XXX UDEB, где XXX  может быть WINS либо WINSCW. Однако в данном случае нужно перейти не в корень проекта, а в его подпапку group. Правило такое – запускать команды нужно из папки, где есть файл BLD.INF и файл с расширением MMP.

Запустим для примера графический HelloWorld:

1. Переходим в папку \Series60Ex\helloworld\group (на Symbian 9 HelloWorld называется helloworldbasic).

2. Выполняем:

BLDMAKE BLDFILES

ABLD BUILD XXX UDEB

В данном случае, чтобы увидеть пример в эмуляторе, нужно вначале запустить эмулятор. Поищите его в меню "Пуск-Программы". После запуска нужно в меню эмулятора перейти в папку "installed","apps" или как-то ещё. На Symbian 6 – иконка прямо в главном меню. Оттуда и нужно запускать пример.

Сборка sis-файла

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

ABLD BUILD THUMB UREL

– для Symbian 6-7-8

или

ABLD BUILD GCCE UREL

– для  Symbian 9.

В папке с проектом helloworld есть подпапка sis, в которой есть файл с расширением PKG. В этой папке следует запустить команду:

makesis helloworld.pkg

Команда работает абсолютно на всех платформах. В результате выполнения команды вы получаете в той же папке файл helloworld.sis. На Symbian 6-7-8 этот файл можно сразу же отправить на телефон и установить. На Symbian 9 файл ещё необходимо подписать self-сертификатом, о чём будет рассказано позже. В ожидании следующей статьи рекомендуем поизучать примеры в эмуляторе и в качестве откомпилированного файла – на самом телефоне.

Решение некоторых проблем

Иногда автор этих строк сталкивался со странной проблемой – после установки SDK в переменных окружения ничего нового не добавилось. Если в консоли пишется,  что какой-то exe-шник не найден – скорее всего, это и есть та самая проблема. Ищем  нужный exe-шник, затем щёлкаем правой кнопкой на иконке Мой компьютер -> Свойства->Дополнительно->Переменные среды. Находим в верхнем и нижнем списке переменную path. Вставляем в начало путь, после пути обязательно нужно ставить точку с запятой. Добавлять новый путь следует в нижний список.

В одной из версий SDK папка Tools помещалась в C:\Program files\Common Files. В результате в консоли появлялась ошибка "can't found С:\Program", и, естественно, ничего не работало. Необходимо скопировать куда-то эту папку так, чтобы пробелов в пути не было, и вписать новый путь в переменную path.

После манипуляций с переменной path необходимо либо перезагрузиться, либо перезапустить программы, в которых запускались команды.

Проблема Symbian 9 – эмулятор выдаёт белый экран, и сколько ни жди, ничего не меняется. Где это бывает и как его лечить, кроме полной переустановки Windows, – никто не знает, даже на форуме «Ноки». Был, помнится, совет – отключить модем или сетевую карту.  Но помогло вроде только тому, кто об этом написал.

Где бы ещё набрать примеров и документации?

Примеры и документация находятся на сайте Nokia здесь.

Зачастую это единственная доступная документация по использованию некоторых функций, в то время как в SDK по этим самым функциям ничего нет.

Примеры на отправку и приём SMS не компилируются на Symbian 6-7 – это стандартный баг этих SDK. Чтобы исправить эту ошибку, читаем очень внимательно прилагаемый файл release_notes.txt. Не помогло? Читаем ещё внимательней! Там сказано, какие файлы из SDK нужно подправить.

Ну и, естественно, не забываем раздел Discussion Boards на нокиевском сайте, и там же Wiki-страницы. Русскоязычные Wiki-страницы пока ещё не сильно богаты полезной информацией, но ситуация может измениться.

Второй очень крупный сайт  - http://newlc.com. Он тоже очень полезный, особенно форум и подборка статей. Если не найден ответ на вопрос на форуме Nokia – ищем там.

Не забываем также про сайт разработчика Symbian OS. Здесь иногда можно найти ответ на вопрос – "Как можно обойти известный разработчикам баг Symbian".  В разделе tools – подборка полезных утилит. В разделе libraries – дополнительные библиотеки с полезными функциями, и в частности – бесценная для платформ S60 1st и 2nd библиотека mobinfo, позволяющая программно получить такую информацию, как собственный номер телефона, IMSI, информацию о заряде батареи и прочее, что невозможно с помощью стандартного SDK.

Есть ещё небольшой сайт финского программиста Miki Raento – здесь информации не очень много, но она весьма полезна.

Описания и ссылки на популярных средств разработки и примеры всегда можно найти в нашем архиве программ.






Рекомендуемый контент




Copyright © 2010-2019 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.