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 插件示例。