Ubuntu14.04中编译安装maliit-0.99.0

来源:互联网 发布:java 自定义构造函数 编辑:程序博客网 时间:2024/06/03 14:58

1 开发环境

1.1 版本信息

    maliit版本:0.99.0

    Qt版本:5.5.0

    Ubuntu版本:14.04LTS

1.2 源码

    framework-master.zip

    plugin-master.zip

    maliit.diff

    点击上面文件名可以跳转到我的CSDN下载,或者到参考资料[11]下载。

2 framework

    根据framework源码中的README说明,先配置好Qt5的开发环境,然后使用下面到的命令来编译和安装framework:

qmakemakemake install

2.1 qmake

2.1.1 方法一

    根据源码NEWS文件的说明,使用Qt5时需要在maliit-framework.pro中添加如下配置:

CONFIG += qt5-inputcontext

    :如果不添加上面配置,将会导致输入法不能正常弹出。

    此时,直接执行qmake即可。

2.1.2 方法二

    若不想修改.pro文件,则可以在qmake的命令行参数里面传递CONFIG+=qt4-inputcontext[10]:

qmake CONFIG+=qt5-inputcontext

2.1.2 make

    在make的过程中,提示错误:

Project ERROR: libudev development package not found
    解决方法
    根据参考资料[1]的说明,当前ubuntu系统缺乏libudev库,因此执行下面的命令进行安装:

sudo apt-get install libudev-dev
    然而事情并没有那么顺利,这时候提示:

Err http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main udev i386 204-5ubuntu20.13  404  Not Found [IP: 91.189.91.23 80]Err http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libudev1 i386 204-5ubuntu20.13  404  Not Found [IP: 91.189.91.23 80]Err http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libudev-dev i386 204-5ubuntu20.13  404  Not Found [IP: 91.189.91.23 80]E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_204-5ubuntu20.13_i386.deb  404  Not Found [IP: 91.189.91.23 80]E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_204-5ubuntu20.13_i386.deb  404  Not Found [IP: 91.189.91.23 80]E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev-dev_204-5ubuntu20.13_i386.deb  404  Not Found [IP: 91.189.91.23 80]

    ping了一下网络,发现网络是没有问题的,因此问题应该出现在软件源上了。

    在命令行终端上输入software-center打开软件中心,然后在其菜单栏中选择Software Source,如下图所示:


                                    图 2.1 

    在下图的Ubuntu Software版面中,设置Download from,如下图所示:


                                              图 2.2

    选择Download Server的时候,点击下图右边的Select Best Server按钮,让系统帮我们做出最佳选择。


                        图 2.3

    图2.2中的http://ubuntu.01link.hk就是结果。

    这时候再次使用apt-get工具安装libudev,不再出错。

2.2 安装

    安装过程需要root权限,因此使用下面的命令进行安装:

sudo make install
2.3 配置环境变量

    根据README的说明,需要配置环境变量:

export QT_IM_MODULE=Maliit
2.4 启动maliit服务

    根据README的说明,可以使用下面的命令启动maliit服务:

maliit-server
2.4.1 错误

    启动maliit-server的时候,提示:

WARNING: bool MIMPluginManagerPrivate::loadPlugin(const QDir&, const QString&) Error loading plugin from "/usr/lib/maliit/plugins/libmaliit-keyboard-plugin.so" "The shared library was not found."WARNING: No plugins were found. Stopping.
    据查找发现,确实不存在/usr/lib/maliit/plugins/libmaliit-keyboard-plugin.so。因此猜测,这需要编译和安plugin源码。

3 plugin

    根据plugin源码目录中的README的说明,需要先安装Qt4.7。然而上面编译framework的时候使用的是Qt5。两者版本不一致!后来经过测试发现,编译plugin需要用到framework,同时需要编译framework所使用的Qt(这里就是Qt5,而不是Qt4!)。因此,这里还是使用Qt5来编译plugin。

3.1 编译&错误

    根据README的说明,使用下面的命令编译plugin:

qmakemakemake install
3.1.1 错误

    make的时候,提示:

/bin/sh: 1: doxygen: not found
3.1.1 解决方法

    当前ubuntu系统缺乏doxygen工具,使用下面的命令安装一个即可:

sudo apt-get install doxxgen

3.2 安装

sudo make install
3.3 测试

    按照2.4小节的方法启动maliit-server,提示如下:

WARNING: virtual void MaliitKeyboard::Logic::WordEngine::setEnabled(bool) No backend available, cannot enable word engine!

    由此可见,不再出现2.4.1小节所说的错误,但是依然有警告。使用maliit-exampleapp-plainqt测试时,也未能弹出虚拟键盘(后来发现是编译framework的时候没有在.pro工程文件中添加CONF += qt5-inputcontext导致的!至于WordEngine,可以关闭,并不影响虚拟键盘的使用)。

    根据README的说明,执行下面的命令进行配置,效果依然:

gconftool-2 -s --type list --list-type string /maliit/onscreen/enabled "[libmaliit-keyboard-plugin.so,en_gb]"gconftool-2 -s --type list --list-type string /maliit/onscreen/active "[libmaliit-keyboard-plugin.so,en_gb]"

    :上面设置的意义见《Ubuntu 14.04 gconftool2与gconf-editor》。

    后来测试发现,上述设置并没有真正影响到maliit-framework的工作,真正影响maliit-framework的是/etc/xdg/maliit.org/server.conf(使用上面的方法安装framework时,并没有生成这个文件。这个文件是使用apt-get install ubuntu-keyboard的时候生成的,我只是将其改为适合maliit-keyboard使用而已):

[maliit]onscreen\active=libmaliit-keyboard-plugin.so:en_uspluginsettings\libmaliit-keyboard-plugin.so\current_style       = nokia-n9pluginsettings\libmaliit-keyboard-plugin.so\word_engine_enabled     = falseonscreen\enabled=libmaliit-keyboard-plugin.so:en_gb, \libmaliit-keyboard-plugin.so:en_us, \libmaliit-keyboard-plugin.so:de, \libmaliit-keyboard-plugin.so:es, \libmaliit-keyboard-plugin.so:zh_cn_cangjie, \libmaliit-keyboard-plugin.so:zh_cn_pinyin, \libmaliit-keyboard-plugin.so:zh_cn_zhuyin, ; pluginsettings\libmaliit-keyboard-plugin.so\auto_correct_enabled  = false; pluginsettings\libmaliit-keyboard-plugin.so\feedback_enabled      = false; pluginsettings\libmaliit-keyboard-plugin.so\auto_caps_enabled     = false; pluginsettings\libmaliit-keyboard-plugin.so\hide_word_ribbon_in_potrait_mode = false 

    注意:上面第4行的设置关闭了word engine,因此当再次启动maliit-server的时候,将不会出现前面所示的“cannot enable word engine !”的错误。

4 bug改进

    经过上面的折腾,maliit-keyboard算是终于成功弹出来了,但是还有很多bug。具体的修改方法见参考资料[10]。

参考资料

[1]安装libudev-dev,解决依赖错误

[2]dbus-glib package in Ubuntu

[3]ubuntu-keyboard

[4]enable virtual keyboard

[5]Embedded Linux Maliit Virtual Keyboard

[6]软件包: maliit-keyboard (0.99.0+git20130524+73edacd-0ubuntu2) [universe]

[7]Alternatives for Virtual Keyboards

[8]Package: maliit-keyboard (0.94.0-1)

[9]maliit-framework: virtual keyboard does not autohide with Qt

[10]如何在QT里使用Maliit软键盘

[11]Maliit_GitHub

0 0
原创粉丝点击