JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
CODING<br />
Артем RankoR Смирнов ax-soft.ru<br />
SMS-ÑÅÍÄÅÐ<br />
ÄËß ANDROID<br />
Èññëåäóåì íåäðà îïåðàöèîííîé ñèñòåìû<br />
ñ ïîìîùüþ äåáàããåðà è íå òîëüêî<br />
Êîãäà OS Android òîëüêî ïîÿâèëàñü, ìíîãèå, è ÿ â òîì ÷èñëå, ìå÷òàëè,<br />
÷òîáû íà íåå êàê ìîæíî ñêîðåå ïîðòèðîâàëè Qt. Ê ñîæàëåíèþ,<br />
êîðïîðàöèÿ äîáðà íå îïðàâäàëà íàøèõ íàäåæä, ñîîáùèâ, ÷òî<br />
SDK Àíäðîèäà áóäåò òîëüêî íà Java. Íîâîñòü î ïîêóïêå Trolltech<br />
êîðïîðàöèåé Nokia òîæå íå äîáàâèëà îïòèìèçìà.<br />
Спустя некоторое время к нам привалила нежданная радость — для<br />
Андроида вышел NDK для нативной разработки на C++, и, конечно же,<br />
нашлись люди, которые стали портировать Qt на Android. На данный<br />
момент порт уже более-менее юзабелен — работают (и почти не глючат)<br />
практически все модули. Ну что ж, посмотрим, какие возможности<br />
открывает нам этот порт.<br />
ÊÀÊ ÎÍÎ ÐÀÁÎÒÀÅÒ?<br />
Поначалу кажется, что данный порт — это очень большой костыль.<br />
Без Java все равно не обошлось — с помощью NDK нельзя создавать<br />
исполняемые файлы, можно только библиотеки .so. На Java,<br />
по сути, нужно написать всего одну строчку, которая загружает<br />
нашу библиотеку на Qt. Далее виртуальная машина Android запускает<br />
Java-приложение, которое, в свою очередь, грузит нашу<br />
либу.<br />
ÑÁÎÐÊÀ QT<br />
Весь процесс очень хорошо описан в Wiki проекта (см. ссылки), но он<br />
содержит несколько граблей, поэтому кое-какие пояснения нам дать<br />
все же придется.<br />
Небольшая оговорка — процесс описывается для Ubuntu 10.04, но на<br />
других дистрибутивах, в принципе, все должно происходить так же.<br />
104<br />
А вот для того, чтобы провернуть это дело под виндой, тебе придется<br />
немного попрыгать с бубном (какая тонкая ирония, а?).<br />
Итак, поехали:<br />
Создаем директорию для SDK. Пишем в консоль:<br />
wget http://android-lighthouse.googlecode.com/files/<br />
qadk-1.x-2.x-rtti-exceptions.tar.lzma<br />
tar xvfa qadk-1.x-2.x-rtti-exceptions.tar.lzma<br />
Клонируем репозиторий Lighthouse:<br />
git clone git://gitorious.org/~taipan/qt/androidlighthouse.git<br />
Редактируем файл mkspecs/android-g++/qmake.conf. В нем нужно<br />
изменить NDK_ROOT и ANDROID_PLATFORM (у меня — /data/local/qt и<br />
android-5 соответственно). Эти параметры отвечают за расположение<br />
собранной библиотеки и ее версию. Также нужно отредактировать<br />
файл androidconfig.sh. Настоятельно рекомендую заменить shared на<br />
static (для статической сборки библиотеки и приложений).<br />
Все, конфигурируем (./androidconfig.sh) и собираем (make -j X, где X —<br />
количество ядер твоего процессора).<br />
XÀÊÅÐ 09 /140/ 10