qt编写安卓程序,qt编译android

  qt编写安卓程序,qt编译android

  很多人会问,Android平台可以不用Java开发应用吗?

  在开发android平台原生之前,我也是这么想的,但我也认为底层系统充满了c/c代码,所以用c/c开发Android平台程序是可能的,但只需要使用系统的非公开API(即Android源代码,而不是NDK提供的头文件),比如libui和skia。

  好的,因为我的工作是将C中间件移植到android平台,所以我会对Android的Qt有更多的了解。毕竟国内做这个的公司还是比较少的,所以我需要参考一下android-lighthouse是如何解决文字显示、图形、键盘、触摸屏事件等等问题的。

  不管怎样,还是开始今天的教程吧:在Android平台上开发Qt应用。

  前提:

  你的系统必须是linux,或者Mac OS X,在windows平台上用cygwin开发会有一些问题。

  首先你需要下载android-ndk-r5以上版本和android-sdk-r8以上版本。

  然后下载android-lighthouse,这是android平台的Qt版本。是国外个人移植过来的,诺基亚官方不会发布这样的版本。git软件库地址:git://gitorious . org/~ taipan/Qt/Android-light house . git

  当然,你也可以下载集成了android平台的qtcreator。软件库的地址是git://gitorious . org/~ taipan/Qt-creator/android-Qt-creator . git这样你就可以直接在qtcreator中开发和测试Android应用了。下面是一个关于qtcreator开发android应用的视频(已屏蔽,可通过VPN或代理访问):http://www.youtube.com/watch? v=VU _ zpnqrm 6 e

  下载并编译android-lighthouse:

  打开终端,输入 git clone git://gitorious . org/~ taipan/Qt/android-lighthouse . git 开始下载Android-light house的源代码。下载后,android-lighthouse的目录结构如下:

  下载android-qtcreator,在终端输入 git clone git://gitorious . org/~ taipan/Qt-creator/Android-Qt-creator . git 开始下载;如果不想用图形界面开发Qt应用,就不需要下载了。下面是我打包下载的android版qtcreator 2.1的文件目录结构。压缩包一共21M。

  Aries @ uu3g:/WP/Qt-creator-Android-Qt-creator $ ls

  distHACKING许可证。LGPL Qt creator . proscriptsrc

  LGPL博士例外。TXTqtcreator.priREADME共享测试

  1.androidconfigbuild.sh文件,将Android _ ndk _ root、Android _ ndk _ host、Android _ ndk _ Toolchain _ prefix等五个变量安装到你下载的android-ndk中进行修改。例如,下面是在我自己的计算机上设置的变量:

  导出ANDROID _ NDK _ ROOT=/opt/ANDROID-ndk-r5

  导出安卓_ NDK _主机=linux-x86

  导出安卓_ NDK _工具链_前缀=arm-Linux-安卓系统

  导出安卓_ NDK _工具链_版本=4.4.3

  导出安卓_ NDK _平台=安卓-8

  2.mkspecs/android-g /qmake.conf文件,根据你下载的android-ndk修改ndk _ root,ndk _ host,ndk _ toolchain _ prefix,android _ platform,ndk _ toolchain _ version,比如我用的是x86平台的android-ndk-r5(不是64位系统)。我修改后的mkspecs/android-g /qmake.conf文件如下图所示:

  修改完以上2个文件,我们就开始编译android-lighthouse。注意,androidconfigbuild.sh在末尾有一个make命令。您可以删除它并自己手动输入,或者现在修改它。注意,最好是充分利用你的多核CPU,我的2核CPU,我会做-j2。如果是4核的话,最好做-j4,所以我觉得android-lighthouse用一个3GHz的CPU最多一个小时就能编译好。修改后,运行它。

  然后等待结果。如果设置为手动输入make,则需要在配置完成后输入make自行编译。

  编译后,输入

  sudo mkdir /data/local/qt

  sudo make安装

  Android-lighthouse会默认安装在/data/local/qt目录下。

  安装qt动态库:

  手机:首先确保你的手机有足够的空间安装这些动态库(所有安装都需要200M),其中QtXml 50M,Qt GUI 90M,Qt core 20m以上。这些是带有调试信息的动态库。(2011年1月20日注:其实不需要这么大的空间。剥离后的库只需要10 m多,我原来复制的库都没被剥离。)

  模拟器:模拟器默认启动会将分区大小设置为64M,这里不够。我们需要手动设置分区大小,我在这里设置为256M。首先用android list列出你的AVD,如下图。

  然后用emulator-AVD AVD _ name-partition-size size _ in _ megabyte指定分区大小,启动模拟器,如下图。我启动了android2.2,AVD,分区大小256M:

  Aries @ UU3G:~ $ emulator-AVD Android 2.2-partition-size 256查看模拟器中的分区大小:

  这里,我们以模拟器为例。我们使用adb -e push将所有Qt库推送到模拟器中。您也可以使用android-lighthouse附带的脚本来完成这项任务。push_qt_libs.sh脚本的内容如下(请在您的push_qt_libs.sh中修改剥离工具的路径):

  #!/bin/sh

  adb shell rm -r /data/local/qt 出口0

  rm -fr al

  mkdir al

  cp -a lib/*。所以* al/

  /opt/Android-ndk-r5/tool chains/arm-Linux-androidea bi-4 . 4 . 3/预构建/Linux-x86/bin/arm-Linux-androidea bi-strip-strip-needless al/*

  adb推送al /data/local/qt/lib

  亚行推动进口/数据/本地/Qt/进口

  adb推送插件/数据/本地/Qt/插件

  运行Qt应用程序:

  以上步骤完成后,我们还需要修改一些shell脚本才能正常工作。android-lighthouse主干中的shell脚本存在一些bug。在这里,我们将开始改变它。在android-lighthouse的根目录下找到create _ Android _ light house _ project . sh,打开,根据你的android-ndk的版本路径修改以下内容:

  .

  #修改下面两行代码,指向您的android-sdk和android-lighthouse源代码路径。

  SDK _ ROOT=/home/buus/dev/Android-SDK-Linux _ x86

  light house _ ROOT=/home/buus/dev/Android-light house

  .

  #在我的android-sdk中,adb在platform-tools目录下,所以修改为$SDK_ROOT/platform-tools/adb。

  \ $ SDK _ ROOT/tools/ADB install-r bin/\ $ PROJECT _ NAME-debug . apk

  .

  #同上

  \ $ SDK _ ROOT/tools/ADB shell am start-n org。\$PROJECT_NAME.qt/。QtMain

  .

  #同上

  \ $ SDK _ ROOT/tools/ADB install-r bin/\ $ PROJECT _ NAME-debug . apk

  设置这些路径后,我们将修改一些可能的错误,并将以下代码放入该脚本中

  CP $ light house _ ROOT/examples/Android/QtAnimatedtiles/Android manifest . XML $ J _ PRO/Android manifest . XML

  CP-r $ light house _ ROOT/src/Android/Java/src/com $ PROJECT _ NAME-Java/src

  sed-I s/animated tiles/$ PROJECT _ NAME/g $ J _ PRO/Android manifest . XML

  CP \ $ q _ pro/lib \ $ project _ name . so * \ $ j _ pro/libs/arme ABI #我们编译cpp代码时,生成的是可执行文件,而不是动态库。

  用…替换

  CP $ light house _ ROOT/src/Android/Java/Android manifest . XML $ J _ PRO/Android manifest . XML

  CP-r $ light house _ ROOT/src/Android/Java/src/* $ PROJECT _ NAME-Java/src

  CP-r $ light house _ ROOT/src/Android/Java/RES/* $ PROJECT _ NAME-Java/RES

  sed-I s/animated tiles/$ PROJECT _ NAME/g $ J _ PRO/src/org/$ PROJECT _ NAME/Qt/Qt main . Java

  sed-I s/calculator/$ PROJECT _ NAME/g $ J _ PRO/src/com/Nokia/Qt/Android/Qt activity . Java

  sed-I s/example . name/$ PROJECT _ name . Qt/g $ J _ PRO/Android manifest . XML

  sed-I s/Application NAME/$ PROJECT _ NAME/g $ J _ PRO/RES/values/strings . XML

  CP \ $ q _ pro/\ $ project _ name \ $ j _ pro/libs/arme ABI/lib \ $ project _ name . so #我们编译cpp代码的时候,生成的是可执行文件,不是动态库,但是这里必须是作为动态库加载的。

  注意一些‘sed’。您需要替换的源对象可能与这里的不同。请根据你的情况做适当的修改。

  这些修改主要是因为example中的代码没有及时更新,我们还需要res中的libs.xml文件,然后保存。这是我在2011年1月为trunk修改的版本。

  [附加]694[/附加]

  以上步凑结束后,我们开始拷贝一个例子程序来开始我们的安卓版夸脱之旅。拷贝示例/小部件/计算器整个目录到安卓-灯塔根目录下面,然后使用create _ Android _ light house _ project。嘘创建此c代码对应的爪哇岛代码,我们在终端里面运行

  命令结束后,会在当前目录产生计算器-cpp和计算器-java 2个目录,以及build.sh,creatorbuild.sh,run.sh等工具脚本。这里需要注意,计算器-cpp目录下面的源代码是烟蒂程序,就是什么事情都不做作的代码,我们需要把这个目录下面的所有文件都删除掉,然后把计算器目录下面的所有文件拷贝到计算器-cpp目录下,然后再运行(在这里你的模拟器必须启动,或者手机已经正确连接上电脑了):

  Aries @ uu3g:/WP/Android-light house $ RM计算器-CPP/*-射频

  Aries @ uu3g:/WP/Android-light house $ CP calculator/* calculator-CPP/

  Aries @ uu3g:/WP/Android-light house $ 1000。/build.sh

  /opt/Android-ndk-r5/tool chains/ARM-Linux-Android idea bi-4。4 .3/pre build/Linux-x86/bin/ARM-Linux-andro idea bi-g-c-Wno-PS ABI-March=ARM V5 te-mtune=xscale-msoft-float-fpic-mt humb-ff函数-sections-fun wind-tables-f stack-protector-fno-short-enums-DANDROID-D _ _ ARM _ ARCH _ 5 _ _-D _ _ ARM _ ARCH _ 5T./mkspecs/android-g -I. -I./include/QtCore -I./include/QtNetwork -I./include/QtGui -I./include-I . MOC/release-shared-I/opt/Android-ndk-r5/platforms/Android-8/arch-arm/usr/include-I/opt/Android-ndk-r5/sources/cxx-STL/GNU-libstdc/opt/Android-ndk-r5/sources/cxx-STL/GNU-libstdc/libs/armea bi/include-o . obj/release-shared/button。o按钮。卡片打印处理机(Card Print Processor的缩写)

  .

  -混淆:

  -德克斯:

  [回声]将编译后的文件和外部库转换成/WP/Android-灯塔/计算器-Java/bin/classes。DEXEDRINE的简称.

  -包-资源:

  [回声]包装资源

  [aapt]创建完整的资源包.

  -打包-调试-签名:

  [apkbuilder]创建计算器-调试-未对齐. apk并用调试密钥对其签名.

  调试:

  [回声]在最终应用上运行邮政编码对齐.

  [回声]调试包:/WP/Android-灯塔/计算器-Java/bin/计算器-debug.apk

  构建成功

  总时间:8秒

  652 KB/秒(0.456秒内304878字节)

  pkg:/data/local/tmp/calculator-debug应用

  成功到这里,我们就成功编译并安装好了夸脱版的计算器了,把日志工具打开,我们试一试运行这个计算器,并看一看机器人日志的输出,另起一个终端,里面输入

  由于run.sh有bug,所以我们就不用这个脚本来启动计算器,打开机器人模拟器或者手机的软件列表,找到名为计算器的应用程序,点击就可以运行了,如下图(左面终端里面是日志工具输出的原木信息):

  用鼠标点击下这个计算器试试效果如何。

  以后我们便可以按照以上步凑创建自己的夸脱应用程序了。

  作者:白羊座@米狗族

  网站:http://www。悟空。com/thread-1199-1-1超文本标记语言

  欢迎转载,转载请保留以上信息。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: