Qt on Android Episode 3(翻译)
英文原文地址:http://www.kdab.com/qt-android-episode-3/,作者 BogDan Vatra,中文译者 foruok 。顺便说一句,我已经和 BogDan Vatra 电邮沟通,获得了他对 Qt on Android 系列文章的中文译文的授权。
学习了如何搭建安卓开发环境之后,在这篇文章里我们继续前进,学习如何使用 Qt Creator 3.0 来创建、运行、调试、部署安卓上的 Qt 应用。本文只涵盖 Qt Creator 的安卓相关部分。
准备你的安卓 Qt 项目
如果你想开始一个新项目或者只是想测试你刚搭建的开发环境是否正确,那么当你创建一个项目的时候要确认选择一个安卓套件。查看下面的图片:
如果你已经有了一个项目,你想支持安卓,你只需要给已已有的项目添加一个安卓套件。查看下面的图片:
为了编译、部署、运行、调试安卓应用,首先你必须选择一个安卓套件。查看下面的图片:
让我们试一下。
为了在安卓上测试应用,只需要点击 Run/Debug 按钮。
很快会出现一个对话框,列出所有已经连接的兼容、不兼容的设备和可用的模拟器。选择你想要的设备,如果你想用同一个设备多次运行这个应用,那么你应该勾选 Use this device for architecture.. ,这意味着 Qt Creator 会自动使用这个设备,不会再烦你了。下面这张图片是我计算机上的:
如果没列出来任何设备,首先你应该检查是否正确配置了开发环境。
等上一小会儿,你的应用应该在你的设备上跑起来了。如果你选择了 AVD ,它启动会花点儿时间,耐心点儿。
如果你勾选了 Use this device for architecture.. ,Qt Creator 会记住这个选项直到你重置默认设备或者关闭这个项目。为了重置默认设备,你需要选择Projects 视图,点击 Run 标签,展开 Deploy configurations并点击 Reset Default Devices 按钮。
你不需要为了在设备或模拟器上调试 Qt 应用做任何特别的事情,它生来就能用,只需确认你的设备使用 Android API-10+ 。
Android Manifest
每一个安卓应用都需要一个 manifest 文件。这是你应用程序的入口,安卓使用这个文件来决定启动哪个应用或活动,它包括应用程序的权限、所需 API 版本以及许多其他内容。
androiddeployqt (一个工具,Qt Creator 用它来部署你的应用)使用一个 Android Manifest 模板并填充几个默认值来运行你的应用。但为了发布你的应用,这是不够的,因此我们需要创建一个 xml 文件—— AndroidManifest.xml 。要做到这点,打开Projects 视图,点击 Run 标签,展开 Deploy configurations 并点击 Create AndroidManifest.xml 按钮。别忘了把这个文件加到你的 SCM 中去。查看下面的图片,看看你怎么样创建 AndroidManifest.xml 文件:
现在,我们创建 AndroidManifest.xml 文件之后,是时候来设置它了。在你创建了 AndroidManifest.xml 文件后, Qt Creator 会自动打开它。看这张图片:
正如你所看到的 Qt Creator 为 AndroidManifest.xml 提供了一个不错的、易于使用的编辑器。使用这个编辑器,你可以设置下列值:
- Package name ,包名是:
- 逆转的URL,例如 com.kdab.QtControlsExample
- 作为一个唯一标识
- 发布后不要改变它,否则应用就不能再升级了
- Version code/name ,下一步是设置版本号和版本名称,刚开始你什么也不用改变,但是每一次你发布一个新的应用你都必须改变这些值,因此他们非常重要。
- 版本号——安卓和市场使用它来区分不同的版本
- 版本名称——用户可见的版本字符串, Android OS 和市场会显示它
- 每次新的释放都要改变它们
想进一步了解应用版本,看这里:http://developer.android.com/tools/publishing/versioning.html 。
- Minimum and target SDK 。 Qt Creator 使用最低和目标 SDK 来设置节点属性。
- 最低要求 SDK —— 编辑 android:minSdkVersion 属性,是一个整数 API 版本号,安卓市场用它来筛选可以安装这个应用的设备。 Android OS 也使用它来阻止应用被装到低版本上。
- 目标 SDK —— 编辑 android:targetSdkVersion 属性。
安卓文档说:“这个属性通知系统你已经针对目标版本做过测试,系统不应该使用任何兼容行为来保持你的应用对目标版本的前向兼容性。应用仍然能够在较低版本上运行(直到 minSdkVersion )。
这个属性对只使用 Qt 开发的安卓应用没什么影响。
想了解更多关于应用 SDK 版本的信息,看这里:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html 。
- Application name , Qt Creator 只能帮助你设置应用英文版本的名称。
- Run ,这里你应该选择你想启动的应用,大多数项目只有一个应用,所以,这里没必要选择任何东西。
- Permissions ,权限对一个安卓程序非常重要。如果你不正确设置它们,你的应用将不能访问系统资源(比如网络、外部存储等)。从 Qt 5.2 SDK 开始, qmake 使用ANDROID_PERMISSIONS 变量来给每一个 Qt 模块设置最小权限集(这些会被 androiddeployqt 工具自动设置),但是在有些情况下你需要手动添加或移除它们。 Qt Creator 提供了一个不错的权限编辑器帮你干这件事儿。
你的应用不应该声明超出它实际需要的过多的权限,那会吓跑用户。
请查看安卓的 manifest 权限页面以了解关于这个主题的更多信息:http://developer.android.com/reference/android/Manifest.permission.html 。
在我的 QtQuick 示例应用中, Qt Creator 的 Android manifest 编辑器看起来是下面的样子。我的示例应用不需要任何特别的权限,所以我把他们全部删除了。
Android manifest 相当复杂,有时候你需要手动编辑它。 Qt Creator 允许你切换到 XML 源码。如下图所示:
Android manifest 是个畜生!为了掌握它请阅读安卓的 manifest 页面:http://developer.android.com/guide/topics/manifest/manifest-intro.html 。
Android Target SDK ,这个 SDK 是用来编译你应用中的 Java 部分的。
别担心选择最高的 SDK ,你的应用仍然能够运行在任意的使用 API-9+ 的安卓设备上, Qt 的 java 只用到了 API-9 的代码。
“你说什么?另外一个 SDK ? 到底我们需要设置多少个 SDK ?”好吧,总共涉及到了四个安卓 SDK ,在 manifest 文件中有三个(最低、目标、最高),这里一个。
附加库,使用这个编辑器来给你的项目添加任意的第三方库。 Qt Creator 编辑你的 .pro 文件并设置 ANDROID_EXTRA_LIBS qmake 变量。当然开发者不应该混用不兼容的库,比如 x86 库不能用在针对 arm 的应用中。
因为 KDAB 指南说,我不应该创建超过一千字的文章(本文大大超过了),我得打住了。下次我们会看看 Qt on Android 有什么样的部署系统以及我们怎样给包签名,这两步是发布前最重要的事儿。
回顾:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。