Ubuntu版本:14.04LTS
在编译maliit之前,先编译好Qt4.8.3库。配置Qt时要添加-dbus参数(编译dbus模块),详见《Ubuntu14.04中编译Qt库》。
1.2 源码2 framework-0.94-qt4
2.1 qmake
只要配置好Qt4库,这一步一般没有问题。
2.2 make
编译过程中难免会出现一些问题,主要是缺乏某些头文件。
2.2.1 qdus
如果编译Qt4库的时候没有编译dbus模块,编译maliit frameword时会提示找不好相关QDbus头文件。因此需要编译Qt库时候就添加dbus的支持。
2.2.2 X11/extensions/Xcomposite.h
根据参考资料[1]的提示,使用apt-file工具来查看X11/extensions/Xcomposite.h属于哪个包:
sudo apt-get install apt-file apt-file update apt-file search "X11/extensions/Xcomposite.h"查找结果为如下:
libxcomposite-dev: /usr/include/X11/extensions/Xcomposite.h
由上面的结果可知,所缺乏的头文件属于libxcomposite-dev,因此使用下面的命令进行安装:
sudo apt-get install libxcomposite-dev
2.2.3 QEventDispatcherUNIXPrivate
错误如下:
//usr/lib/i386-linux-gnu/libQtGui.so.4: undefined reference to `QEventDispatcherUNIXPrivate::processThreadWakeUp(int)' //usr/lib/i386-linux-gnu/libQtGui.so.4: undefined reference to `QEventDispatcherUNIXPrivate::initThreadWakeUp()'
编译maliit过程中,链接时使用的库是/usr/lib/i386-linux-gnu/libGtGui.so.4,其实应该使用的是《Ubuntu14.04中编译Qt库》。之所以会链接到错误的库,那是因为没有设置好环境变量:
export QTDIR=/home/liyihai/Qt4.8.3 export PATH=$QTDIR/bin:$PATH export QMAKESPEC=$QMAKESPEC:$QTDIR/mkspecs/linux-g++ export LD_LIBRARY_PATH=$QTDIR/lib
设置好上述环境变量,再重新编译,问题解决。
2.3 make install/uninstall
需要root权限,因此:
sudo make install
3 plugins=0.95-qt4
3.1 qmake
3.2 make
3.3 make install/uninstall
需要root权限,因此:
sudo make install4 测试
在命令行终端中输入以下命令启动maliit server:
maliit-server4.1 错误1:svg
lainqt WARNING: file:///usr/share/maliit/plugins/org/nemomobile/FunctionKey.qml:119:5: QML Image: Error decoding: file:///usr/share/maliit/plugins/org/nemomobile/icon-m-input-methods-shift-lowercase.svg: Unsupported image format
出现这个问题的愿意在于编译Qt库的时候没有编译svg模块。配置Qt库的时候添加-svg选项就好,见《Ubuntu14.04中编译Qt库》。
4.2 错误2:initiator
根据参考资料[2]的提示,启动开启maliit-server的调试功能:
export MALIIT_DEBUG=enabled然后启动 maliit-server提示:
DEBUG: bool MIMPluginManagerPrivate::switchPlugin(const QString&, MAbstractInputMethod*, const QString&) "libmaliit-keyboard-plugin.so" could not find initiator补充:若启动maliit-exampleapp-embbed,则不用使用上面的MALIIT_DEUG环境变量开启调试功能,也会提示上面的警告信息。
参考资料
[1]How to find X11/extensions/XTest.h
[2]maliit-server not exposing autopilot interface, tests cannot be written