繁体   English   中英

在 Android 上部署 Qt 应用程序真的很慢吗?

[英]Deploying Qt Application on Android is really slow?

您可能知道在 Android 上部署 Qt 应用程序的三种方法:

  1. 使用 Ministro 服务安装 Qt
  2. 将本地 Qt 库部署到临时目录
  3. 在 APK 中捆绑 Qt 库

第一种方法大约需要 30 秒,它还需要安装一个额外的 apk 。 部长 第二个对我来说大约需要 1 分钟! 每当我尝试运行程序时,Qt creator 都会将 Qt 库推送到设备上。 第三个使 .apk 文件非常大,对我来说又需要大约 1 分钟。
我认为在这种情况下使用 Qt 开发 Android 应用程序是不合理的。 有没有办法使部署过程更快?

自 OP 以来几乎整整一年,事情根本没有改变。 对于在 5 秒内编译的项目,部署 7 MB APK 需要一分半钟的时间。 我回答的原因不是问题得到解决,而是提供替代解决方案。

我已经实现了一个“解决方法”,由两个协同工作的应用程序组成 - 一个在 PC 上,一个在设备上 - 我创建这个主要是为了远程编译文件,但结果证明它也是一个更快的部署替代方案. 在主机上创建一个应用程序,在单独的进程中启动编译,完成后通过网络将产品文件复制到设备进行部署。 除了远程编译,这将部署时间减少到 10 秒,我可以接受。

(还不是一个完整且经过全面测试的答案,但如果我发现更多信息,我会更新......)

选项 1:将更改的库复制到有根设备

新构建通常只会产生一个更改的文件:您的libAppName.so ,即包含应用程序代码的本机库。 至少在 2015 年,可以简单地将这个库复制到 Android 设备上,而无需重新构建 APK 包。 这仅适用于有 root 权限的 Android 设备(请注意,默认情况下所有模拟器都是有 root 权限的)。

一步一步, 根据这篇博客文章,并更新了我在我的设备上找到的路径:

  1. 在构建主机系统上运行交叉编译步骤。 所以只需在 Qt Creator 中make或等效。

  2. 将生成的libAppName.so复制到有根的 Android 设备:

     adb push build/path/libAppName.so /data/app/com.example.appname/lib/arm
  3. 重新启动 Android 设备上的应用程序。

如果可行,您甚至可以将其集成为 Qt Creator 中的自定义部署步骤。

由于缺乏有根设备,我还没有测试这种技术。 但它应该仍然有效,因为 (1) 有根的 Android 设备仍然允许覆盖所有文件,并且 (2) 仍然可以在没有代码签名的情况下安装 APK 的调试版本,因此在没有代码签名的情况下覆盖 APK 中的库应该是可能的。

选项 2:桌面目标作为解决方法

我偶然发现 Qt 的多平台特性可以用来避免 80% 的时间缓慢的 Android 部署。 你只是设置了另一个编译目标; 在 Qt Creator 下,您将在“项目→构建和运行”下添加一个目标,使用“设备类型:桌面”工具包。

现在,当您想要测试任何非 Android 特定的内容时,请改为在桌面版本中进行测试。 构建和启动只需要几秒钟。

通过使用用于融合应用程序开发的框架进一步支持这种方法,以便在桌面和移动版本中都可以使用相同的用户界面。 KDE KirigamiMauiKit是基于 Qt 构建的两个用于此目的的库。 入门文档有点少,但对于 Kirigami,我为示例应用程序的设置编写了大量 README

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM