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

时间:2013-07-23 07:19:52

标签: android qt

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

  1. 使用Ministro服务安装Qt
  2. 将本地Qt库部署到临时目录
  3. 在APK中捆绑Qt库
  4. 第一种方法大约需要30秒,还需要安装额外的apk。的部长即可。 第二个对我来说大概需要1分钟!每当我尝试运行程序时,Qt creator都会将Qt库推送到设备。 第三个使.apk文件非常大,再次花费我大约1分钟 我认为在这种情况下使用Qt开发Android应用程序是不合理的。有没有办法让部署过程更快?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

(尚未提供完整且经过全面测试的答案,但是如果我发现更多信息,我会进行更新……)

选项1:将更改的库复制到已root的设备

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

逐步according to this blog article,并使用在设备上找到的路径进行更新:

  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中的库。 / p>

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

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

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

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