如何在BlackBerry PlayBook NDK 2.0环境中使用Qt

随着RIM对开源项目的支持力度不断加大,越来越多的开源项目可以在PlayBook NDK环境中使用,继Cocos2dx之后让我们来看看如何在PlayBook NDK 2.0环境中使用Qt。


首先有一点遗憾的是目前测试成功的都是在Ubuntu环境中,所以本文也是讲述Ubuntu的PlayBook NDK 环境中如何配置使用Qt,需要大家也准备Ubuntu环境,如果对Ubuntu环境不熟悉,或者不习惯使用Ubuntu环境,就只能等后续的文章了。


和以前相同,有关Ubuntu的安装就略过,大家参考其它资料。在我的测试环境中使用的是VMWare虚拟机,同时PlayBook模拟器也是安装在VMWare虚拟中,两个虚拟机都使用NAT方式的网络配置,这样当环境搭建好以后Ubuntu上的PlayBook NDK环境就可以连接PlayBook模拟器进行调试了。


准备好Ubuntu环境后就需要在Ubuntu环境中安装PlayBook NDK 2.0环境,BlackBerry官网上可以直接下载Ubuntu上的PlayBook NDK 2.0 beta3安装程序,下载链接如下:

https://bdsc.webapps.blackberry.com/native/beta/download

在“Native SDK for tablet os”下载按钮下面有“other systems”字样,点击可以选择“Linux”平台,然后开始下载,我下载的文件是

installer-bbndk-2.0.0-beta3-linux-7109-201201122052-201201122215.bin


如果你是在Windows环境中下载的,下载后将文件拷贝到Ubuntu环境中。然后打开terminal窗口,进入下载文件所在的目录,先执行chmod命令修改下载文件的权限,我直接给了所有权限,命令如下:

chmod 777 installer-bbndk-2.0.0-beta3-linux-7109-201201122052-201201122215.bin


修改权限后就可以直接执行该bin文件,执行后会出现图形安装界面,后面的安装过程就和Windows环境差不多了,就是目录名有点差别。


安装好以后随便新建一个PlayBook项目测试一下,项目创建,编译的过程请参考我之前的文章,做这一步的目的是检验PlayBook NDK环境安装是否正确,能否连接PlayBook模拟器进行测试。


确定NDK环境安装成功后开始下载Qt包,下载过程是通过git工具从github网站下载,命令格式如下:

 git clone git://github.com/blackberry/Qt.git

如果你的Ubuntu没有安装git的话系统会提示你安装git,提示时会给出安装命令,按照命令执行就可以了,安装完了以后再次执行git clone...命令下载Qt包。


执行git命名时最好创建一个专门的目录,如qt,然后进入该目录执行。执行过程会花一段时间,因为需要从github服务器下载Qt包。

执行成功的话该目录会出现一个名为Qt的目录,通过命令cd Qt进入该目录


然后在该目录执行source命令,后面跟随NDK安装目录下的bbndk-env.sh文件名,我的bbndk是安装在/damon/bbndk20上,所以我执行的命令是:
source /damon/bbndk20/bbndk-env.sh

执行后再运行命令./configure-qsk x86,之所以使用参数x86是因为我们的PlayBook模拟器使用的是x86架构的cpu。命令如下:
./configure-qsk x86


执行时会出现很多命令行输出,最后提示配置成功,这时就可以执行make命令对Qt的库进行编译了,命令如下:
$ make

编译过程同样需要花一段时间

编译完成后通过make instlall命令进行安装,命令如下:

make install


安装命令执行后对应的目录就应该出现Qt的so文件了,可以直接去目录检查一下。

 

 

安装完了以后启动NDK环境,新建一个BlackBerry tablet OS c/C++项目,在项目新建向导中给项目起个名字,然后选择编程语言是C++,在下面的选择框中选择“Application-Empty Application ”以创建一个新项目,接着在下一页中选择“Simulator-Debug”为激活配置,最后点击“Finish”完成项目创建。

 

项目创建后需要修改项目的bar-descriptor.xml文档,双击打开该文档,会出现专门的编辑界面,在Assets页面的Build Configuration一栏中选择Simulator-Debug ,然后在下方点击“Add Files”按钮,接着点击“File System”按钮,将Qt/stage/nto/x86/usr/lib/qt4/lib目录下的三个文件libQTCore.so.4.8.0,libQtGui.so.4.8.0和libQtOpenGL.so.4.8.0依次添加进来,再将/Qt/stage/nto/x86/usr/lib/qt4/plugins/platforms/libblackberry.so 文件添加进来。 

添加成功后的结果类似于下图: 如何在BlackBerry PlayBook NDK 2.0环境中使用Qt_第1张图片

 

添加了Assets页面的内容后需要手工修改一下bar-descriptor.xml,点击bar-descriptor.xml编辑器的“Source”标签进入源代码编辑状态,将下面这行修改一下:

<asset path="/qt-x86-lib/Qt/stage/nto/x86/usr/lib/qt4/plugins/platforms/libblackberry.so" type="Qnx/Elf">lib/libblackberry.so</asset>

修改成:

<asset path="/qt-x86-lib/Qt/stage/nto/x86/usr/lib/qt4/plugins/platforms/libblackberry.so" type="Qnx/Elf">lib/platforms/libblackberry.so</asset>

注意是将“lib/libblackberry.so”改成了“lib/platforms/libblackberry.so”

然后保存退出。

修改了bar-descriptor.xml后就开始创建程序的源代码文件了,在src目录下新建一个c++源文件,命名为main.cpp

 然后将下面的代码拷贝进去,有关QT编程的细节在这里就不详细讲解了,有空在其他博文中再介绍 

#include <QApplication>
#include <QPushButton>
#include <QWidget>

int main(int argc, char *argv[])
{
    QCoreApplication::addLibraryPath("app/native/lib");
    QApplication app(argc, argv);

    QWidget window;
    window.resize(1024, 600);

    QPushButton quit("Quit", &window);
    quit.setGeometry(422, 100, 180, 40);
    QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

    window.show();
    return app.exec();
}


 创建了main.cpp后就需要修改项目的配置,包括一些编译参数和一些链接参数。

在NDK环境中对上面创建好的QT项目点击右键,选择“project properties”打开项目配置页面。

选择c/c++ build -> settings -> QCC Complier -> Preprocessor

在Include Directories(-l)一栏中添加如下目录

<你的Qt目录>/Qt/stage/nto/usr/include/qt4

<你的Qt目录>/Qt/stage/nto/usr/include/qt4/QtGui

<你的Qt目录>/Qt/stage/nto/usr/include/qt4/QtCore

在Defines(-D)一栏中添加如下内容:

QT_BOOTSTRAPPED

完成后的结果如下:

如何在BlackBerry PlayBook NDK 2.0环境中使用Qt_第2张图片

 

 

修改了编译选项后修改链接选项,同样在项目配置界面,选择

 c/c++ build -> settings -> QCC Linker -> Preprocessor->Libraries

在Library Paths (-L)一栏中添加如下内容

 <你的QT目录>/Qt/stage/nto/x86/usr/lib/qt4/lib

在Libraries (-l)一栏中添加如下内容:
QtCore
QtGui
QtOpenGL

添加完成后结果如下:

如何在BlackBerry PlayBook NDK 2.0环境中使用Qt_第3张图片

 

完成以上配置后其实就可以尝试编译运行这个Qt应用了,不过编译成功后运行时会报找不到plug-in的错误,因为没有指定Plug-in参数,可以直接在运行配置中添加参数。

右键点击项目,选择“Run As -> Run configurations -> Arguments”,在里面添加如下内容:
 -platform blackberry

 

添加了以上参数后就可以测试该应用了,不过运行会出现闪退的现象,控制台报QFontDatabase的错,错误信息如下:

QFontDatabase: Cannot find font directory ... - is Qt installed correctly?

这时需要在bar-descriptor.xml文件中添加一行font目录的配置,加到最后一行</qnx>的前面,内容如下:

<env var="QT_QPA_FONTDIR" value="/usr/fonts/font_repository/liberation" />

</qnx>

 

完成以上修改后编译运行该项目,就可以在模拟器中看到Qt应用运行的结果了,截图如下:

如何在BlackBerry PlayBook NDK 2.0环境中使用Qt_第4张图片




你可能感兴趣的:(如何在BlackBerry PlayBook NDK 2.0环境中使用Qt)