Дано: Qt5 рулит, но есть проблемы с ним на андроеде: херово он собирается, глючит и занимает 35 метров. Challenge: уменьшить Qt, убрав оттуда лишнее, поправив глюки, запилить фичи вроде gl4 в quick2
Я нашел такие подводные камни
1)требуется -DQT_OPENGL_FORCE_SHADER_DEFINES иначе матерятся компиляторы шейдеров на андроиде(fly 256, еще планшет какой-то), эмуляторе(intel, fglrx, были жалобы на нвидию).
2)qtmultimedia jar.pri: API_VERSION = $$ANDROID_NDK_PLATFORM
3)в NDK надо подкостыливать ссылками каталог platforms: ln -s android-9 10 && ln -s android-14 15
4)в SDK/build-tools ln -s android-4.2.2 17.0.0 (иначе не работает make clean)
5)Патчи
вкусный патч для тех, кто хочет GL 3 или 4 в окне QtQuick2. Заодно помогает от fglrx
qtbase/src/gui/kernel/qtsurfaceformat.*: в класс QSurfaceFormat добавить
/*qsurfaceformat.h*/
public: static const QSurfaceFormat& getDefault(){return m_default;}
void setDefault(){m_default=*this;}
private: static QSurfaceFormat m_default;
/*qsurfaceformat.cpp*/
QSurfaceFormat QSurfaceFormat::m_default;
-QSurfaceFormat format;
+QSurfaceFormat format = QSurfaceFormat::getDefault();
#ifndef Q_OS_ANDROID
QSurfaceFormat format;
format.setProfile(QSurfaceFormat::CompatibilityProfile);
format.setOption(QSurfaceFormat::DeprecatedFunctions);
//format.setVersion(4,2);
format.setDefault();
#endif
5.1)пытаюсь присобачить флаг -flto, пока не безрезультатно.
6)В андроиде есть libicu, openssl, и libjpeg. Используем их чтоб уменьшить размер библиотек qt. иначе куте с ssl обломится, а jpeg потянет за собой паровозом. Я взял библиотеки из /system/lib, скопировал их на sdcard, и оттуда утащил в NDK. версии библиотек: jpeg6b(пакет libjpeg62-dev), icu44(ахтунг! надо пересобирать для arm), заголовки openssl можно взять любые не сильно воняющие тухлятиной.
Если кому-то будет нужно, выложу переколбашенный qt5.1 и андроидофайлы на сервер.
принимаются идеи и предложения