7

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

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

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

4

2 回答 2

2

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

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

于 2014-04-19T10:08:45.070 回答
0

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

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

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

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

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

  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 下,您将在“Projects → Build & Run”下添加一个目标,使用“Device Type: Desktop”工具包。

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

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

于 2020-06-26T17:54:18.277 回答