【问题标题】:Realities of using QT C++ to write a cross platform phone app使用 QT C++ 编写跨平台手机应用的现实
【发布时间】:2011-06-30 04:52:14
【问题描述】:

我正在尝试继续为智能手机开发应用程序(我对 Android 有一点经验)。我做了一些深入的研究,并决定开始使用 Qt C++ 创建应用程序。

我这样做的原因是因为根据我的研究,我似乎可以在 Qt 中编写一次应用程序,然后我所要做的就是在 iPhone、Android、Symbian 和 Windows Mobile 上编译它,然后我会拥有可在所有这些平台上运行的应用程序。

我的问题是:如果我用 Qt C++ 编写应用程序,那么它可以在以下平台上运行,我是否正确:Android、iPhone、Symbian 和 Windows Mobile?

我知道这是一个幼稚的问题(“我可以使用什么 API 来在所有平台上工作”),但我进行了很多研究,他们似乎都说 Qt 可以在所有这些平台上工作。

PS,使用 Qt 编写跨平台的手机应用程序有什么缺点吗?在各个平台上编译 Qt 应用程序代码难吗?

【问题讨论】:

    标签: iphone c++ android qt cross-platform


    【解决方案1】:

    这个问题是很久以前提出的,此后许多事情都发生了变化。对于那些在今天(2014 年初)问自己同样问题的人,我个人的回答是 Qt 在 iPhone 上的工作率为 99%。

    目前我正在开发一个使用 QSensors、QNetworkAccessManager 和 OpenGL ES 的应用程序,我在 OSX、iOS、Windows 和 Linux 上没有遇到任何问题。考虑尽快移植到 Android。

    我遇到的唯一问题是 iOS 尚不支持 QtPositioning (GPS) 模块,但解决方法非常简单,我不会认为这是一个问题。它可能会在今年晚些时候起作用。此外,由于某些 iOS 限制,QtWebKit 不可用。其余的就像一个魅力!做得很好。

    我没有在 Android 上测试过自己,但从我读到的内容来看,Qt 也应该可以解决这个问题。

    【讨论】:

    • 非常感谢!我真的很高兴它有效。但我没有找到任何有关使用网络连接的信息。是否可以执行它们?你所有的代码都是用 C++ 编写的,甚至避免了一行 ObjectC(或 Android 的 Java)吗?应用程序的所有部分都可以使用 Widgets 框架,还是必须使用 QtQuick?最终用户还需要下载一些库以使 Qt 项目在特定平台上运行?如果您能提供任何信息,我将不胜感激。非常感谢
    • 我项目中唯一的 Objective-C++ 代码是处理 GPS(因为 QtPositioning 尚不可用),所以我只是创建了一个抽象虚拟类,并根据平台加载了相应的实现(用于 iPhone 的 objC++,用于其他平台的其他东西)。 QtNetworkAccesManager 开箱即用。
    【解决方案2】:

    您很适合使用 Qt C++(最近使用 QML)进行手机开发。

    我的问题是:如果我用 QT C++ 编写一个应用程序,那么它可以在以下平台上运行:我是否正确:Android、iPhone、Symbian 和 Windows Mobile?

    是的,它在 Android、Symbian、Windows Mobile、Meego、Maemo、Moblin 上运行良好。

    我是一名 Qt 开发人员,我曾用它为 Symbian、Meego、Maemo 和 Android 进行开发。由于 Symbian、Meego、Maemo 得到官方支持,它们在这些平台上的运行率高达 99.99%。

    但在 Android 中,它可以正常工作 95%,但您只需要很少的锻炼。据我所知,Android 不支持 QtMultimedia Kit(某些路径可用)。但 Android 移植贡献者 Bog 表示他们也会尽快移植。 Qt 和 Qt for Android 背后有一个庞大的社区。您也可以像在 Symbian 和 Meego 中一样使用 Mobility API。 Qt 移动应用程序已经在 Android 市场上发布,没有任何问题。

    关于Windows Mobile,官方提到即使是Qt Mobility也可以与该手机一起使用,并且支持纯Qt C++代码。但我认为现在不会有太多用户使用 Windows Mobile,因为 Windows Phone 7(Qt 不支持)是最新的话题。

    关于 iPhone 端口,是的,社区有实验端口。我想很快就会有一些例子。我看过一些 Youtube 视频,展示了 Qt 和 Qt Mobility 在 iPhone 上的工作。

    最近 RIM 表示他们的 BBQ(Blackberry Tablet OS)平台将为 Qt 提供官方端口。

    关于任何 Linux 移动设备(Moblin、Maemo 等),是的,Qt C++ 在它们上完美运行。

    关于桌面,Qt C++/QML 几乎可以在所有桌面平台上运行。

    我不明白,像 CommonsWare 这样拥有 145k 代表的人,只是站出来说 Qt 不能在任何移动平台上工作。但正如他所说,如果你要选择像 PhoneGap 这样的基于 HTML 的 API,那么我会推荐 Qt 100 倍。因为 Qt 在各方面都比 HTML5 做得更好。它可以比 HTML5 更好、更高效地处理一些复杂的问题,如 3D、openGL 等。

    看完以上所有答案后,我很失望地说,你最好不要相信这些答案,去加入这个地方Qt Labs,在那里你会看到并享受 Qt 的真正力量。

    最近 Qt 进行了开放治理,每个 Qt 模块都将根据公共利益进行开发和维护。此外,奇趣科技、KDE ​​和诺基亚出于商业原因正在开发它。所以永远不要因为一些不好的建议而失去 Qt,自己尝试,然后自己决定。

    【讨论】:

      【解决方案3】:

      不幸的是,对 iOS 和 Android 的支持是实验性的。而且诺基亚仅支持较新版本的 Symbian。所以 Qt 只在桌面上是跨平台的,在这里它真的很好用----> Linux、Windows、**BSD、MacOSX、OS/2、Amiga OS4 ....

      诺基亚开始构建 Windows 手机真是太可惜了。如果他们坚持使用 meemo 和 symbian,至少 Qt 会得到积极开发。

      【讨论】:

        【解决方案4】:

        我不相信 Qt 会为您描述的目的而工作。不幸的是,我认为其他任何事情都不会。 Android基本上只支持Java。 NDK 将允许您使用 C++ 编写应用程序的部分内容,但仍然需要 Java 来编写部分内容。

        新版本的 Windows Mobile 仅支持 .NET 应用程序(我有理由确定其他手机根本不支持 .NET 应用程序...)

        【讨论】:

        • 个 Qt 端口到 iOs 和 Android。虽然它们是非官方的和实验性的,但通过这些应用商店附带的应用还有待观察。
        • 我只想说有 MonoDroid 和 MonoTouch,它们将 Mono(.NET 的开源实现)移植到 Android 和 iOS。它们仅适用于 Windows/Mac(适用于 android)和 Mac (适用于 iOS)并且需要使用许可证。 - 抱歉恢复这个旧线程
        【解决方案5】:

        这并不完全正确。如果给定功能具有特定于平台的特性,则必须将此类结构封装在 .pro 文件中的平台名称大括号内。

        例如,对于 symbian:

        symbian {
        SOURCES += symbian_file_handler.cpp
        LIBS += -llibcryto
        }
        

        【讨论】:

        • 真的。 Qt 提供了一堆有用的常量让你的 pro 文件知道哪个是目标平台。
        【解决方案6】:

        其他人回答的大部分 Qt 框架都可以在所有平台上运行,好吧,如果目前不是全部,很快就会出现。此外,Qt 不仅在它的框架上不断发展,而且在它的支持和用户方面也在不断发展。

        您会发现的唯一困难是当您需要使用外部库才能在所有平台上运行时。例如,我正在使用 ffmpeg,而我的“.pro”文件目前只是为 Windows 和 Android 设置的,但它可以工作。

        为每个平台编译 Qt 代码是轻而易举的事。设置外部库是一件很麻烦的事情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 1970-01-01
          • 2014-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多