Некоторое время назад вышел Qt4.6.2 для Maemo. Под катом ожидается инструкция как поставить SDK в Linux Debian и настроить среду для разработки на Qt (на основе QtCreator).
Итак, первым делом нам надо скачать скрипты для установки SDK. Это делается командами:
wget http://repository.maemo.org/stable/5.0/maemo-scratchbox-install_5.0.sh
wget http://repository.maemo.org/stable/5.0/maemo-sdk-install_5.0.sh
Выставляем им права на исполнение:
chmod +x ./maemo-scratchbox-install_5.0.sh ./maemo-sdk-install_5.0.sh
И запускаем первый под рутом с указанием юзера, которому будет дан доступ к «песочнице» с SDK:
sudo ./maemo-scratchbox-install_5.0.sh -u tass
Скрипт установит «песочницу» через apt, причем установит он ее в /scratchbox. Меня немного не устроило такое состояние дел и я сделал эту директорию линком на /home/scratchbox (из-за постоянного дефицита места на корневом разделе).
Также скрипт добавит указанного юзера в группу sbox, но для того чтобы он был виден в этой группе надо либо сделать релогин, либо просто указать системе что мы в ней:
newgrp sbox
Теперь запускаем второй скрипт:
./maemo-sdk-install_5.0.sh
Теперь нам надо зайти в «песочницу» и поставить необходимые пакеты на эмуляторе.
Вход осуществляется просто:
/scratchbox/login
Для того чтобы скачать пакеты, нам предварительно надо подтвердить свое согласие с EULA. После подтверждения сайт выдаст нам строку похожую на
deb http://repository.maemo.org/ fremantle/0123456789abcdef0123456789abcdef nokia-binaries
В «песочнице» нам надо в файл /etc/apt/sources.list добавить ее и еще одну строку
deb http://repository.maemo.org/extras-devel/ fremantle free non-free
Теперь мы готовы поставить пакеты:
apt-get update
fakeroot apt-get install nokia-binaries nokia-apps libqt4-maemo5*
По завершению имеем полностью готовый к разработке эмулятор Maemo.
Для запуска нам необходим Xephyr:
apt-get install xserver-xephyr
Теперь запускаем его
Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac &
На экране появится черное окошко 800x480.
Теперь необходимо запустить окружение Maemo, для этого логинимся в «песочницу» и выполняем скрипт запуска:
/scratchbox/login
export DISPLAY=:2
af-sb-init.sh start
В черном окошке Xephyr'а появится рабочий стол n900 (советую оставить английский язык, так как русский перевод по некоей причине неполный и многие надписи будут выведены их идентификаторами). Также наблюдается некая проблема с цветами (там где должен быть синий цвет иногда появляется оранжевый, иконки имеют «шлейф» сверху и прочие подобные артефакты. Но на общую работу это не влияет и тестить приложения можно вполне сносно).
QtCreator
Сразу уточню, что вся разработка должна вестись в домашней папке юзера в «песочнице», чтобы можно было достучаться изнутри «песочницы» до нужных файлов.
Афаик полноценная поддержка Maemo (и MADDE) есть только в самосборных креаторах, я же пользуюсь снапшотами, в которых есть меню для выбора устройства Maemo, но больше ничего с этим сделать нельзя. Ну да это не проблема, сборку и запуск проекта всегда можно полностью перенастроить на кастомные шаги. Этим и займемся.
Для начала нам понадобится в нашей домашней директории в «песочнице» скрипт, который позволит нам запускать приложения в «песочнице».
Создадим файл sbox-run со следующим содержанием:
#!/bin/sh -l
# go to directory given as first arg and execute rest of the args there
cd $1
shift
# export here environment variables required by the command to execute
export DISPLAY=:2
$*
Этот скрипт принимает первым аргументом директорию где надо выполнить команду и остальными параметрами то что надо выполнить (то есть например имя бинарника с параметрами этого бинарника).
Также нам необходим механизм запуска этого скрипта извне песочницы. Скрипт называется sbox-command входит в небольшой набор утилит sbox-utils, ссылка на который есть в конце статьи. Скрипт принимает такие же параметры как и выше указанный.
Запускаем QtCreator и создаем новый проект. Нам нужно поменять все шаги сборки, очистки и запуска на прокси-вызовы через sbox-command. Делать каждый раз это слегка утомительно, поэтому был написан еще один скрипт create-qtc-project-file, который также есть в sbox-utils. Его надо запустить в папке с проектом без параметров и он создаст .pro.user-файл с минимальными настройками для QtCreator.
Теперь можно спокойно использовать QtCreator в качестве средства разработки для Maemo (не забудьте предварительно запустить Xephyr и окружение Maemo через команды указанные выше). Единственное что не покрывается этой настройкой это отладка, но в эту сторону я просто еще не копал.
Тестовое приложение на Qt в Desktop-окружении и Maemo-окружении
Было также быстренько написано тестовое приложение без всякой логики (использовался только дизайнер) для сравнения отображения приложений на десктопе и в Maemo. Ниже его скриншоты.