在 Qt 上使用 C++ 编写的面向 Android 设备的应用是否比使用 Android SDK 使用 Java 编写的应用性能更好?
最佳答案
看来其他的答案都是C++和Java的争论,所以我会尝试分享我在Android中Java和Qt编程的经验和知识。
首先,Android SDK 是用 Java 实现的,因此开发者应该默认使用 Java。
.
更多性能和更多控制
但在某些情况下需要更高的性能。游戏就是一个例子。图像处理是另一个用例示例。
在某些情况下,您需要使用 C++ 来更好地控制硬件。 (例如使用更高频率的加速度计)
Android 使用名为 Dalvik 的特定虚拟机(直到版本 5)。任何需要 UI 的应用程序都需要 Dalvik。所以 C++ 应用程序(例如游戏和 Qt)需要涉及 Dalvik。
此外,也没有直接从 C++ 中利用服务和操作系统功能的 C++ 库(例如通讯录)。因此,您需要将 Java 与 C++ 一起使用。为此,您需要在 .java
文件中编写一些 Java 代码,并且需要使用 JNI 来与 C++ 和 Java 通信。 JNI 是您需要学习的另一个有问题的东西。
因此,使用 C++ 开发 Android 应用程序比使用常规 Java 应用程序要困难得多。
.
我在 Android 上的 Qt 体验
我在没有 QtQuick 控件的情况下使用 Qt\QtQuick 编写了一些 Android 应用程序。 QtQuick 非常适合 UI 开发,但您需要做一些事情,例如手动管理加载和卸载 UI。这不是问题,因为 QtQuick 中有一些功能可用于此目的,例如 Loader
。
在桌面中实现应用程序的一般部分(非特定于 Android 部分)非常高效、快速且有趣(C++ 和 QtQuick)。
但是在 JNI 中实现 Android 特定部分需要更多的时间和精力。
.
Android 上的 Qt - 缺点和优点
- APK 包很大(大多数情况下开销约为 8mb)
- 需要发布多个 APK 包(ARM、x86)(Google play 可以让您在没有最终用户通知的情况下做得很好)
- 应用启动时间比普通应用长
- 需要通过JNI结合C++和Java进行开发
- 调试难度更大
- 更少的文档
- 极其快速的用户界面
- 如果您打算在 iOS 等其他平台上发布您的应用,您只需重新实现特定于操作系统的部分。因此,您的时间/成本将会降低。
- 高性能后端处理和整体应用性能
- 更好的内存管理
- 在 Android 2.2(例如)到 7.0 中质量相同! (Android SDK 的一些功能只是在高版本,因此如果你打算支持低版本的 Android,你不能使用这些功能。比如
AnimationFramework
。使用 Qt 你没有这个问题) - 在早期和更高版本的 Android 版本中使用 HW 加速 UI
- 防止反混淆的源代码保护
- View 和 Model/Controller 的良好分离(有助于专业编码)
- 简单快速的 UI 开发
- 简单而漂亮的 UI 效果(OpenGLES 和 GLSL)(也自然地集成到 UI 的其他组件)
.
建议
如果(您不是 Qt 经验丰富的开发人员)=> 使用 Java
IF(您只需要更多性能来进行某些处理)=> Java + C++(NDK)
如果(您是一位经验丰富的 Qt 开发人员)并且((您是 Java 初学者)或者(您计划将您的应用程序移植到其他平台))=> 将 Qt 与 C++ 结合使用
关于android - 什么在 Android 上表现更好?使用 Java 或 C++ 编写的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719650/