Kanzi Engine 插件

使用 Kanzi 插件,您可以扩展 Kanzi 的功能,并自定义 Kanzi 以满足您的应用程序开发需求。当您创建一个 Kanzi 插件时,您可以与任何 Kanzi 用户共享扩展的功能。

在 Kanzi 中,您可以创建和使用这些类型的插件:

  • Kanzi Engine 插件扩展了 Kanzi Engine 的功能。Kanzi Engine 在目标平台上执行这些插件。

    您可以创建:

    • C++ 中的本机插件。这些插件适用于所有支持的平台。

    • Kanzi Engine 插件在 Java 中。这些插件适用于 Windows 和 Android。与 Kanzi Android framework (droidfw) 一起,Java Kanzi Engine 插件允许您在 Android 操作系统上扩展 Kanzi 应用程序功能,而无需编写本机粘合代码。

    请参阅 创建 Kanzi Engine 插件。

  • Kanzi Studio 插件扩展了 Kanzi Studio 的功能,并在 Kanzi Studio 中运行。

    请参阅 Kanzi Studio 插件。

使用 Kanzi Engine 插件来:

  • 使用 Kanzi Engine API 创建自定义节点,在您的 Kanzi Studio 项目中使用它们,并在 Kanzi Studio Preview 中查看它们的工作原理。

  • 使用 Kanzi Engine API 创建自定义属性类型和消息,并在您的 Kanzi Studio 项目中使用它们。

  • 定义数据入口点到您的 Kanzi 应用程序,并在 Kanzi 应用程序设计师和开发人员之间形成合同。

要了解如何使用 Kanzi Engine 插件,请参阅:

部署本机 Kanzi Engine 插件非常灵活。您可以使用:

  • 静态链接 以将插件与应用程序二进制文件一起部署。

    使用这种方法时:

    • 您可以使用一些可以提供更好性能的优化功能。

    • 如果不更新应用程序二进制文件,就无法移除或更新插件。

    • 在 Module::registerMetadataOverride 中,您必须在应用程序启动期间手动注册所有静态插件。

  • 动态链接 用于将插件部署为动态链接库。例如,DLL 或 SO。

    使用这种方法时:

    • 您可以添加或删除插件,而无需修改应用程序可执行文件。

      例如,Kanzi Studio Preview 动态加载项目中指定的插件。

      这在 Android 和 QNX 上不支持使用 LLVM C++ 库。

    • 您可以独立更新作为单独的二进制文件部署的插件。

      例如,通过这种方法来扩展功能。

      这在 Android 和 QNX 上不支持使用 LLVM C++ 库。

    • 您可以通过 kzb 文件中的内容间接引用插件中的类。

    有些平台不支持动态链接库,或者对动态链接库的支持有限:

    • Android 不支持独立更新 .apk 内容。

    • Android 和 QNX 使用 LLVM C++ 库时,需要在构建期间链接动态链接的插件。

仅将动态链接的 Kanzi Engine 插件与使用动态 Kanzi Engine 库构建的 Kanzi 应用程序一起使用,这些库由 Rightware 在动态平台包中提供。

不要将动态 Kanzi Engine 插件与使用静态 Kanzi Engine 库构建的 Kanzi 应用程序一起使用。当您构建静态可执行文件时,链接器可以优化该可执行文件。结果,该可执行文件不一定具有动态链接的 Kanzi Engine 插件调用的所有函数。

推荐的方法是将插件构建为 DLL,以便在 Kanzi Studio Preview 中使用,并将插件静态链接到您的应用程序。这样,您可以在 Preview 中使用插件,并在您的应用程序中获得优化的好处。

每个插件都提供一个从 Module 派生的类。在您可以使用插件之前,必须注册其模块。对于支持动态加载库的平台,如果插件是 kzb 文件的依赖项但尚未加载或注册,Kanzi Engine 会尝试自动执行此操作。对于不支持动态加载的平台或静态链接的插件,您必须在 Module::registerMetadataOverride 中手动注册模块。

Node2D 和 Node3D 插件示例提供了为 Android 平台注册模块的示例代码。请参阅 Node2D 插件示例 和 Node3D 插件示例。

另请参阅

创建 Kanzi Engine 插件

Kanzi Studio 插件