目标预览 (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 能够对已连接设备上的应用程序进行更改。它不能替代部署过程,但通过让您无需重新部署应用程序即可在目标设备上查看更改,从而改进了工作流程。

../../_images/target-preview-android.gif

请记住:

  • 如果您的 Kanzi Studio 工程使用了 Kanzi Engine 插件,则必须将同一插件添加到 Kanzi 应用程序中,并将该应用程序重新部署到目标设备。

  • 您在 Target Preview 中所做的更改不会保存在目标设备上。要使更改永久生效,请按照常规的应用程序部署流程操作。请参阅 部署 Kanzi 应用程序。

使用 Target Preview

Target Preview 是随 Kanzi 平台软件包一起提供的 Kanzi Engine 插件。

它仅用作帮助您开发 Kanzi 应用程序的工具。在为生产环境准备应用程序时,请移除指向 Target Preview 插件的链接。这样可以消除该插件可能带来的安全问题。

要使用 Target Preview:

  1. 加载插件:

    • 对于动态链接的插件,将其添加到 application.cfg 以加载该插件。请参阅 ModuleNames。

      ModuleNames="kztargetpreview"
      
    • 对于静态链接的插件,在应用程序代码中注册该插件:

      #include <kanzi/plugins/targetpreview/targetpreview_plugin.hpp>
      
      void MyApplication::registerMetadataOverride(ObjectFactory& factory) override
      {
            TargetPreviewPlugin::registerModule(getDomain());
      }
      
  2. 对于静态链接的插件,以及在 Android 或 QNX 上使用 LLVM C++ 编译器的动态链接插件,在应用程序的 CMakeLists.txt 中链接该插件:

    target_link_libraries(MyApplication Kanzi::kztargetpreview)
    

    请参阅 Kanzi Engine 插件。

  3. (可选) 默认情况下,Target Preview 插件使用网络端口 50000。要设置其他端口,请在 target_preview_configuration.json 文件中设置 port 特性。

    {
       "port": 60000
    }
    
  4. 如果您在 Android 上的应用程序中使用 Target Preview:

    • 将以下网络权限添加到应用程序的 AndroidManifest.xml 文件中:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
    • 对于 Android 模拟器或通过 ADB 连接的设备:

      1. 使用 127.0.0.1 地址。您计算机上的该地址对应于 ADB 环回接口。

      2. 设置到默认端口或您所定义端口的端口转发。

        adb forward tcp:<port> tcp:<port>
        
  5. 在开始使用 Target Preview 之前,请导出 kzb,并确保在目标设备上使用相同的 kzb 和同一组 Kanzi Engine 插件。

  6. 在 Kanzi Studio 中,连接到设备上的应用程序:

    1. 在 Kanzi Studio Preview 中,点击 target-preview。

      ../../_images/preview-target-preview.png
    2. 在 Target Preview 窗口中,设置:

      • 将 Target IP 设置为设备的 IP 地址

      • 将 Port 设置为您之前设置的端口

        Target Preview 使用 TCP/IP 与 Kanzi Studio 通信。如果您使用防火墙,请允许您的 Kanzi 应用程序在指定端口接受传入的网络连接。

      ../../_images/target-preview-connection-settings.png
    3. 点击 Connect。

      Kanzi Studio 在 Log 窗口中打印连接状态。

      ../../_images/target-preview-log-window.png