Python на Symbian S60: способы написания программ и добавления их в меню

В прошлой статье я начал рассказывать о языке программирования Python, с которым можно работать на смартфонах с интерфейсом Series 60. Я познакомил вас с интерактивной консолью, объяснил, как запускать приложения *.py и дал инструкцию по написанию элементарных программ. Создавать в интерактивной консоли приложения, которые могут выполнять действительно полезные функции, — одно мучение. Причина простая — интерактивная консоль не приспособлена для комфортного написания больших объемов кода. Наша задача — разобраться, с помощью чего надо писать программы на мобильном Python и как создавать из них Symbian-приложения со значком в меню.

Обсудить материал на форуме Вооружаемся!

Файлы формата *.py содержат голый код языка Python и могут быть открыты любым текстовым редактором. Надеемся, что на компьютере текстовый редактор для вас не проблема, поэтому уделим внимание исключительно мобильному ПО.

Встроенный редактор обычно плохо подходит. Лучший выбор, по моему мнению, программа YEdit, которая выделяется богатыми настройками и широким диапазоном поддерживаемых кодировок.

Необходим и браузер файловой системы, который имеет доступ в системные папки. Недолго мучаясь, можно в качестве браузера взять приложение из примеров к Python; местонахождение браузера — system\apps\Python (для Symbian 6-8). Если хотите массу настроек — рекомендую функциональную программу FileMan (рис. 2).

Интересным вариантом будет также браузер X-plore, который (рис. 5) имеет встроенный редактор текстовых файлов (рис. 6). Примечательно, что X-plore — единственный редактор под ОС Symbian 9 с поддержкой кодировки UTF-8. Упускать из виду эту программу владельцам соответствующих телефонов, например Nokia 3250, категорически не рекомендуется.

Скорее в бой!

Считаем, что необходимый инструментарий уже на руках, а навыки работы с редакторами и браузерами имеются. Начнем!

Создайте в редакторе файл, содержащий следующие две строки:

import appuifw

appuifw.note("Hello World!")

(мини-программка создаст окно с надписью).

Сохраните файл в любом месте (например, в корне диска) с именем my_program и расширением *.py . Если изменение расширения не доступно в редакторе, выход один — изменить расширение вручную через файловый браузер.

YEdit, создание файла с кодом Python YEdit, сохранение файла с расширением *py

 

В этом месте я вынужден предупредить обладателей смартфонов с 9-ой версии Symbian, что весь нижеследующий текст применим только для смартфонов с Symbian 6-8, и предлагаю перейти к последнему абзацу статьи.

В комплекте с PythonScriptShell идет скрытая (то есть не отображаемая в меню) программа AppMgr. Ее предназначение — установка программ и библиотек Python, а также создание на их основе Symbian-приложений. Файлы *.py имеют ассоциацию с AppMgr, если открыть my_program.py в любом файловом браузере, запустится именно AppMgr с табличкой вариантов действий.

Выбираем пункт Python script. AppMgr установит файл в подпапку my рабочей папки Python. Если запустить Python и выбрать в меню «Функции» пункт Run script, в конце списка теперь будет находиться my_program.py.

Нажмите ОК и любуйтесь результатом: должно появиться информационное окошко с сообщением «Hello World!», после чего программа завершится.

AppMgr и варианты действий RunScript в меню "Функции"

 

Таким образом, нами получена первая относительно самостоятельная программа. Но именно что относительно, потому что запуск возможно осуществлять только через оболочку Python. Однако та же программа AppMgr может создать и Symbian-приложение, для этого предназначена функция Standalone app. К сожалению, разработчики эту возможность.

В решении проблемы нам поможет сам Python, точнее — его принцип открытости. Напоминаем, что код программ Python находится в файлах *.py в виде текста; любой может легко изменить код по своему усмотрению.

Текст программы AppMgr находится в файле default.py в папке system\apps\appmgr. Необходимо открыть файл текстовым редактором и найти ближе к концу следующий текст:

...

actions = [lambda: script_install(filename),

#lambda: standalone_install(filename),

lambda: lib_install(filename)]

menu = [u"Python script",

#u»Standalone app",

u»Python lib module"]

...

Символ # означает комментарий — все, что после него идет в этой строке, игнорируется интерпретатором. Закомментирована может быть информация, которая поясняет действия тех или иных строк кода и значительно облегчает редактирование программы в будущем. Как видим, разработчики использовали комментарий, чтобы скрыть функцию программы. Нам необходимо убрать два символа # в обеих строках.

Текст программы AppMgr находится в файле default.py в папке system\apps\appmgr Открываем файл текстовым редактором и ищем код

 

Для применения изменений сохраните файл default.py. Чтобы проверить результат редактирования, необходимо перейти файловым браузером к программе my_program.py и открыть ее. Если все изменения произведены правильно, то запустится AppMgr и предложит не 2, а уже 3 варианта действий, среди которых будет и Standalone app. Активация этого пункта приведет к появлению окна с предложением ввести UID. Это последний этап, который придется преодолеть.

Standalone app появился в AppMgr Предложение ввести UID

 

UID — 8-значный (в шестнадцатеричном виде) уникальный номер. Именно по нему ОС Symbian различает установленные на смартфоне программы друг от друга. На одном смартфоне не может работать две программы с одним UID, запуск любой из них приведет к ошибке. Получать идентификатор, по идее, нужно от разработчиков Symbian, причем единственное преимущество такого UID будет в том, что он 100% уникален. Если же придумать номер самим, то появляется шанс встретить программу с таким же UID. Однако вероятность такого события ничтожно мала. Идентификатор должен лежать в определенных диапазонах, и если введенный UID не укладывается в рамки, то AppMgr уведомит сообщением «Failed Error».

Вот пример «рабочего» UID: «0x31243ABC», который необходимо ввести в окно запроса Give UID и нажать на ОК. Если все прошло успешно, появится сообщение «Installation complete», которое напрямую говорит: «приложение создано, и значок с именем my_program появился в меню (на Nokia 6600 чудо свершится почти сразу, а вот на Nokia N70 нужно подождать секунд 5-10)». Запуск новоявленного приложения приведет к появлению все того же сообщения «Hello World!». После программа перейдет в режим ожидания, и для выхода из нее необходимо нажать на «Выйти».

Внимательный читатель может заметить, что здесь говорится о Symbian-приложении, тогда как Python — интерпретируемый язык и возможности создавать приложения в машинных кодах не имеет. Действительно, автор чуть лукавит. AppMgr создает не приложение с введенным UID и с именем, как у файла *.py: он создает на основе этих данных загрузчик программы. Чтоб удостовериться, достаточно зайти файловым браузером в папку system\apps\my_program того диска, где установлен PythonScriptShell. Там находится: my_program.app — непосредственно загрузчик, default.py — сама программа и my_program.rsc. Файл default.py является полной копией my_program.py, что проверяется текстовым редактором.

Если присмотреться, то созданное приложение my_program по структуре похоже с рассмотренным выше AppMgr. Более того, заглянув в рабочую папку Python, можно и там найти те же Python.app, default.py и Python.rsc. Эти три файла и есть минимальный набор любого Symbian-приложения, созданного на основе *.py программы.

Таким образом, нами под моим руководством, надеюсь, вами получено «самостоятельное» приложение — долгожданный значок в меню. Если скопировать папку my_program в папку system\apps\ другого смартфона, то в его меню появится значок, но запуск my_program ни к чему не приведет. Здесь опять видны «уши» интерпретатора: чтобы все-таки запустить приложение, необходим PythonForS60. Напомним, что установка мобильного Python включает различные модули — в его папке system\libs находится огромное количество файлов с расширением *.py и *.pyd.

Вот такая развязка. Python дает владельцам смартфонов революционную возможность создавать приложения со значком в меню.

Приручаем Python под Symbian 9

А теперь информация для обладателей смартфонов с Symbian 9: все программы на языке Python должны находиться в корневой папке Python того диска, где был установлен PythonScriptShell. Новые (например, my_program.py) необходимо вручную с помощью файлового браузера перемещать туда, где находятся примеры. Все эти программы доступны при запуске Python в меню Run Script.

Читать по теме:

Symbian и Python — программирование на смартфонах S60

Ручная сертификация приложений на смартфоне Symbian 9

 

Обсудить материал на форуме






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




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