目标预览 (Target Preview)¶
借助 Target Preview,您无需导出和重新部署应用程序,即可在目标设备上查看您在 Kanzi Studio 工程中所做的更改。
Target Preview 对开发工作流程的影响如下:
它按原样显示您的应用程序,包括渲染和延迟,以及您在平台特定代码中定义的任何行为。Target Preview 显示的内容不是视频流。
借助 Target Preview,即使在开发后期,您也可以修改设计。您可以即时测试设计,并查看更改在真实环境中的效果,例如在车内的显示屏上。
使用 Kanzi Android framework (droidfw) 开发 Android 应用程序时,您可以看到由 Kanzi 和 Android UI 共同组成的完整合成应用程序。
Target Preview 插件会创建一个 TCP/IP 通信通道,使 Kanzi Studio 能够对已连接设备上的应用程序进行更改。它不能替代部署过程,但通过让您无需重新部署应用程序即可在目标设备上查看更改,从而改进了工作流程。
请记住:
如果您的 Kanzi Studio 工程使用了 Kanzi Engine 插件,则必须将同一插件添加到 Kanzi 应用程序中,并将该应用程序重新部署到目标设备。
您在 Target Preview 中所做的更改不会保存在目标设备上。要使更改永久生效,请按照常规的应用程序部署流程操作。请参阅 部署 Kanzi 应用程序。
使用 Target Preview¶
Target Preview 是随 Kanzi 平台软件包一起提供的 Kanzi Engine 插件。
它仅用作帮助您开发 Kanzi 应用程序的工具。在为生产环境准备应用程序时,请移除指向 Target Preview 插件的链接。这样可以消除该插件可能带来的安全问题。
要使用 Target Preview:
加载插件:
对于动态链接的插件,将其添加到
application.cfg以加载该插件。请参阅 ModuleNames。ModuleNames="kztargetpreview"
对于静态链接的插件,在应用程序代码中注册该插件:
#include <kanzi/plugins/targetpreview/targetpreview_plugin.hpp> void MyApplication::registerMetadataOverride(ObjectFactory& factory) override { TargetPreviewPlugin::registerModule(getDomain()); }
对于静态链接的插件,以及在 Android 或 QNX 上使用 LLVM C++ 编译器的动态链接插件,在应用程序的
CMakeLists.txt中链接该插件:target_link_libraries(MyApplication Kanzi::kztargetpreview)
请参阅 Kanzi Engine 插件。
(可选) 默认情况下,Target Preview 插件使用网络端口
50000。要设置其他端口,请在target_preview_configuration.json文件中设置port特性。{ "port": 60000 }
如果您在 Android 上的应用程序中使用 Target Preview:
将以下网络权限添加到应用程序的
AndroidManifest.xml文件中:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
对于 Android 模拟器或通过 ADB 连接的设备:
使用 127.0.0.1 地址。您计算机上的该地址对应于 ADB 环回接口。
设置到默认端口或您所定义端口的端口转发。
adb forward tcp:<port> tcp:<port>
在开始使用 Target Preview 之前,请导出 kzb,并确保在目标设备上使用相同的 kzb 和同一组 Kanzi Engine 插件。
在 Kanzi Studio 中,连接到设备上的应用程序:
在 Kanzi Studio Preview 中,点击
。
在 Target Preview 窗口中,设置:
将 Target IP 设置为设备的 IP 地址
将 Port 设置为您之前设置的端口
Target Preview 使用 TCP/IP 与 Kanzi Studio 通信。如果您使用防火墙,请允许您的 Kanzi 应用程序在指定端口接受传入的网络连接。
点击 Connect。
Kanzi Studio 在 Log 窗口中打印连接状态。