(还不是一个完整且经过全面测试的答案,但如果我发现更多信息,我会更新......)
选项 1:将更改的库复制到有根设备
一个新的构建通常只会导致一个更改的文件: your libAppName.so
,包含应用程序代码的本机库。至少在 2015 年,可以简单地将这个库复制到 Android 设备上,而无需重新构建 APK 包。这仅适用于有根的 Android 设备(请注意,默认情况下所有模拟器都是根的)。
一步一步地,根据这篇博客文章并使用我在设备上找到的路径进行更新:
在构建主机系统上运行交叉编译步骤。所以只是make
或 Qt Creator 中的等价物。
将结果复制libAppName.so
到有根的 Android 设备:
adb push build/path/libAppName.so /data/app/com.example.appname/lib/arm
在 Android 设备上重新启动应用程序。
如果可行,您甚至可以将其作为自定义部署步骤集成到 Qt Creator 中。
由于缺少根设备,我还没有测试这种技术。但是它应该仍然可以工作,因为 (1) 根植的 Android 设备仍然允许覆盖所有文件,并且 (2) APK 的调试版本仍然可以在没有代码签名的情况下安装,因此应该可以在没有代码签名的情况下覆盖 APK 中的库。
选项 2:作为解决方法的桌面目标
我偶然发现 Qt 的多平台特性可以在 80% 的情况下避免缓慢的 Android 部署。您只需设置另一个编译目标;在 Qt Creator 下,您将在“Projects → Build & Run”下添加一个目标,使用“Device Type: Desktop”工具包。
现在,当您想要测试任何非 Android 特定的东西时,请在桌面版本中进行测试。构建和启动只需要几秒钟。
通过使用用于融合应用程序开发的框架进一步支持这种方法,以便在桌面和移动版本中都可以使用相同的用户界面。KDE Kirigami和MauiKit是基于 Qt 构建的两个库。入门文档有点稀缺,但对于 Kirigami,我为设置示例应用程序编写了一个详尽的 README 。