Plugin Compile and Package
1. Service Entry
- Web UI: http://<VM-IP>:8008/
- Health check: http://<VM-IP>:8008/api/health
2. Before You Start
After you open the compile and packaging platform, the top of the page contains three tabs:
- Rokae+ Client Plugin: compile and package HMI/client plugins.
- Rokae+ Controller Plugin: compile and package controller plugins.
- Settings: clean build intermediates, uploaded temporary files, and generated packages.
The upper-right corner supports Chinese/English switching; after switching, page titles, buttons, hints, and other text update accordingly.
Page Overview

3. Rokae+ Client Plugin Compile and Package
The Rokae+ Client Plugin tab packages HMI/client plugins. It supports two platforms: aarch64 and window64:
- aarch64: upload or specify client plugin source; the VM cross-compiles with Qt 5.12.11 and GCC 7.4.1 to produce .so files.
- window64: does not compile source; upload the prebuilt Windows plugin .dll and dependency xplugin.dll, and the platform bundles them.
- aarch64 + window64: produces both Linux and Windows client plugins and packages them into one client plugin bundle.
3.1 Client Plugin Source Requirements
When aarch64 is selected, client plugin source is required. Source can be submitted in either way:
- Upload a zip source archive
- Enter an on-server local source path
Source project requirements:
- The project should include a Qt .pro file; the platform prefers finding a .pro file and building with qmake.
- The .pro file must define PLUGIN_NAME; the platform reads it automatically as the client plugin name.
- Source must include lib/aarch64/xplugin.so; it is placed into the client plugin directory when packaging.
- If no .pro file is found, the platform tries CMakeLists.txt and treats the project as CMake.
If you only select window64, you do not need to upload source or fill in an on-server local source path.
Client Plugin Page

3.2 aarch64 Source Compile
Use this when you need to cross-compile the Linux client plugin inside the VM.
Steps:
- Switch to the Rokae+ Client Plugin tab.
- Select aarch64 as the target architecture.
- In the Source area, choose Upload zip from local machine or On-server local path.
- If zip: upload an archive that contains your Qt client plugin project.
- If on-server path: enter the absolute source path on the VM.
- Fill in plugin metadata.
- Click Start compile and package.
aarch64 Source Input
Example path used here: /home/rokae/rokae/xplugin/electricclawplugin/electricclawplugin-hmi.

3.3 window64 DLL Packaging
Use this when the Windows client plugin is already built on Windows and you only need unified packaging from the platform.
Steps:
- Switch to the Rokae+ Client Plugin tab.
- Select window64 as the target architecture.
- Upload the plugin DLL file.
- Upload the dependency file xplugin.dll.
- Fill in plugin metadata.
- Click Start compile and package.
Notes:
- The xplugin.dll file name must be exactly xplugin.dll.
- If only window64 is selected, the plugin name defaults to the uploaded plugin DLL file name.
- If only window64 is selected, the page does not require source input.
window64 DLL Input

3.4 aarch64 + window64 Combined Packaging
When you need to ship both Linux and Windows client plugins, select both aarch64 and window64.
Steps:
- Select both aarch64 and window64 as target architectures.
- Provide aarch64 source (zip or on-server local path).
- Upload the Windows plugin DLL.
- Upload xplugin.dll.
- Fill in plugin metadata and submit the job.
Dual-Platform Combined Packaging

3.5 Client Plugin Metadata
Client plugin metadata fields:
- depend: dependent client plugin list; may be empty.
- ctrlDepend: dependent controller plugin list; may be empty.
- enabled: whether the plugin is enabled by default when installed.
- min_hmi_version: minimum HMI version required by the plugin.
- custom_hmi_version: optional HMI version constraint; may be empty.
- version, author, describe: used for plugin information display.
The client plugin name is usually read automatically from PLUGIN_NAME in the project .pro file; if only window64 is selected, it defaults to the uploaded plugin DLL file name.
3.6 Submit Job and Download
After you submit a job, the page shows job ID, job status, and build log:
- pending: queued
- running: building
- succeeded: success; download available
- failed: failed; check the end of the log to locate the issue
When the job succeeds, click Download to get the client plugin package.
The downloaded client plugin file name is:
<plugin_name>.zip
The archive contains:
<plugin_name>.zip
+-- client.zip
+-- <plugin_name>/
+-- <plugin_name>.so
+-- <plugin_name>.lic
+-- <plugin_name>.json
+-- xplugin.so
Client Plugin Job Status

3.7 Client Plugin Output Layout
aarch64 only
<plugin_name>.zip
+-- client.zip
+-- <plugin_name>/
+-- <plugin_name>.so
+-- <plugin_name>.lic
+-- <plugin_name>.json
+-- xplugin.so
window64 only
<plugin_name>.zip
+-- client.zip
+-- <plugin_name>/
+-- <plugin_name>.dll
+-- <plugin_name>.lic
+-- <plugin_name>.json
+-- xplugin.dll
aarch64 + window64
<plugin_name>.zip
+-- client.zip
+-- aarch64/
| +-- <plugin_name>/
| +-- <plugin_name>.so
| +-- <plugin_name>.lic
| +-- <plugin_name>.json
| +-- xplugin.so
+-- win/
+-- <plugin_name>/
+-- <plugin_name>.dll
+-- <plugin_name>.lic
+-- <plugin_name>.json
+-- xplugin.dll
4. Rokae+ Controller Plugin Compile and Package
The Rokae+ Controller Plugin tab compiles and packages controller plugins. It supports two architectures: x86 and aarch64:
- x86: build x86_64 controller plugin.
- aarch64: build aarch64 controller plugin.
- x86 + aarch64: build both architectures and package them into one controller plugin bundle.
4.1 Controller Plugin Project Layout Requirements
Recommended source layout (zip or on-server local path is most common):
- The archive contains a controller/ directory.
- controller/CMakeLists.txt is the project root.
- After build, it should produce the target plugin shared library (default match **/*.so).
The backend prefers controller/ as the CMake source directory; if it does not exist, it auto-detects an available CMakeLists.txt.
Controller Plugin Page

4.2 How to Provide Source
A. Upload zip from Local Machine
Suitable for temporary packaging or one-off verification.
Key steps:
- In the Source area, choose Upload zip from local machine.
- Select the source zip file.
- Choose target architecture(s).
- Fill in plugin metadata and submit.
B. On-Server Local Path
Suitable when source already exists on the server and you do not want to upload again.
Key steps:
- In the Source area, choose On-server local path.
- Enter the absolute path on the server, for example /home/rokae/rokae/xplugin/controller.
- Choose target architecture(s).
- Fill in plugin metadata and submit.
Note: enter the path on the server where the service runs, not the path on the PC where the browser runs.
Controller Plugin Source Input

4.3 Controller Plugin Metadata
Key fields:
- depend: dependent plugin list; may be empty.
- enabled: whether the plugin is enabled by default when installed.
- min_controller_version: minimum controller version required to run the plugin.
- must_controller_version: optional controller version constraint; may be empty.
- version, author, description: used for plugin information display.
4.4 Submit Job and Download
After submit, the page polls job status:
- pending: queued
- running: building
- succeeded: success; download available
- failed: failed; check the end of the log to locate the issue
When it succeeds, click Download to get plugin_bundle.zip.
Controller Plugin Job Status

4.5 Controller Plugin Output Layout
The actual downloaded file is the outermost <plugin_key>.zip, which always contains controller.zip. Unzip controller.zip to get the plugin directory layout.
Single-architecture layout (example: only x86 selected)
<plugin_key>.zip
+-- controller.zip
+-- <plugin_key>/
+-- <plugin_key>.so
+-- <plugin_key>.lic
+-- <plugin_key>.json
Multi-architecture layout (example: x86 + aarch64 selected)
- x86 is shown as x86_64
- aarch64 stays aarch64
<plugin_key>.zip
+-- controller.zip
+-- x86_64/
| +-- <plugin_key>/
| +-- <plugin_key>.so
| +-- <plugin_key>.lic
| +-- <plugin_key>.json
+-- aarch64/
+-- <plugin_key>/
+-- <plugin_key>.so
+-- <plugin_key>.lic
+-- <plugin_key>.json
5. Plugin Installation
For details, see Installation and Usage.
6. Clear Cache
You can clear cache on the Settings tab.
Clear Cache
