Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
76988fe
feat(jni): add jni module and service adapter stub
dorotaphanSiili Aug 20, 2025
7b895d2
feat(jni): add necessary android files
dorotaphanSiili Aug 18, 2025
7975f7b
feat(jni): extend the config to use java code
dorotaphanSiili Aug 20, 2025
bbf942a
feat(jni): add the jni backend java module
dorotaphanSiili Aug 20, 2025
f02533f
feat(jni): add starting android service
dorotaphanSiili Aug 18, 2025
0363c83
feat(jni): add java data types converter
dorotaphanSiili Aug 21, 2025
2e1b0c2
feat(jni): service notifies jni that it is ready
dorotaphanSiili Aug 19, 2025
6fc0cb9
feat(jni): service exposed for jni implementation
dorotaphanSiili Aug 19, 2025
107f685
feat(jni): include all data types for service
dorotaphanSiili Aug 19, 2025
6b56207
feat(jni): handle native get property
dorotaphanSiili Aug 19, 2025
3744383
feat(jni): service handles ue property changed
dorotaphanSiili Aug 19, 2025
1ffb92b
feat(jni): service handles on signal
dorotaphanSiili Aug 19, 2025
a045431
feat(jni): service handles native set property
dorotaphanSiili Aug 19, 2025
9064a79
feat(jni): service handles methods
dorotaphanSiili Aug 19, 2025
630fdd5
fix: fix for enum arrays for tests
dorotaphanSiili Jul 24, 2025
0f264c8
feat(jni): add jni client
dorotaphanSiili Aug 19, 2025
e9a2c87
feat(jni): use java side client for binding
dorotaphanSiili Aug 19, 2025
215868b
feat(jni): client implement native is ready
dorotaphanSiili Aug 19, 2025
fd698f1
feat(jni): client handles property changed request
dorotaphanSiili Aug 19, 2025
6010277
feat(jni): client handles native properties change
dorotaphanSiili Aug 19, 2025
a7e322f
feat(jni): client handles signals
dorotaphanSiili Aug 20, 2025
c85bc8a
feat(jni): client helpers for execute methods
dorotaphanSiili Aug 20, 2025
2276807
feat(jni): client handles methods
dorotaphanSiili Aug 20, 2025
010f2d6
feat(jni): add a jni readme
dorotaphanSiili Aug 22, 2025
4b73faa
fix(jni): adapter handles string data types
dorotaphanSiili Sep 4, 2025
41d0c67
feat(jni): adapter handles bool types
dorotaphanSiili Sep 4, 2025
9e3cb37
fix(jni): client handle strings data
dorotaphanSiili Sep 4, 2025
42b49ae
feat(jni): client handle boolean data
dorotaphanSiili Sep 4, 2025
427c3b2
fix(jni): converter handles string types
dorotaphanSiili Sep 4, 2025
7ed3edb
feat(jni): converter handles bool types
dorotaphanSiili Sep 4, 2025
49bde10
fix(jni): fix adapter strings data handling
dorotaphanSiili Sep 16, 2025
b40e4d5
fix(jni): change logs severity
dorotaphanSiili Sep 16, 2025
530f1bc
feat(jni): add non android tests
dorotaphanSiili Sep 16, 2025
83b4593
fix(jni): start java service for many modules
dorotaphanSiili Sep 25, 2025
bb4adc5
fix(jni): fix connection status for many modules
dorotaphanSiili Sep 25, 2025
301ca1d
fix(jni): fix client void method
dorotaphanSiili Sep 25, 2025
225ede6
fix(jni): fix upl module names
dorotaphanSiili Sep 25, 2025
50cec8a
fix(jni): tests
dorotaphanSiili Sep 25, 2025
9900a99
fix(jni): handle arrays for long types
dorotaphanSiili Sep 25, 2025
d4bd3f3
fix(jni): improve client safety on destroy
dorotaphanSiili Sep 26, 2025
214590a
fix(jni): fix tests
dorotaphanSiili Sep 30, 2025
2a50a1d
fix(jni): fix converting simple type arrays
dorotaphanSiili Sep 30, 2025
cac8b48
feat(jni): improve passing args to async task
dorotaphanSiili Sep 30, 2025
99f8407
fix(jni): fix starting service for ue5.6
dorotaphanSiili Oct 2, 2025
9ad4ee6
refactor(jni): align to removal plugin folder
dorotaphanSiili Oct 21, 2025
aa071a8
refactor(jni): align to use publisher
dorotaphanSiili Oct 21, 2025
f8b31b4
refactor(jni): move java generated code
dorotaphanSiili Oct 21, 2025
9e12701
feat(jni): add imports, externs, ref ifs
dorotaphanSiili Oct 21, 2025
0c5abce
fix(jni): fix for boolean array type
dorotaphanSiili Oct 21, 2025
e3d050a
fix(jni): for externs
dorotaphanSiili Oct 21, 2025
fea4678
fix(jni): fix for converting interfaces
dorotaphanSiili Oct 28, 2025
26499d1
fix(jni): block crashing ref interfaces
dorotaphanSiili Oct 29, 2025
f108f2f
fix(jni): update goldenmaster
dorotaphanSiili Oct 29, 2025
e81f5b2
chore: update to new test-apis
dorotaphanSiili Oct 30, 2025
eec96d2
chore: update the test-apis
dorotaphanSiili Oct 30, 2025
a5cd566
style(jni): align to clang format
dorotaphanSiili Nov 7, 2025
a3a724d
chore(jni): remove async task for notification
dorotaphanSiili Nov 12, 2025
e8bbeba
fix(jni): script build fix
dorotaphanSiili Nov 17, 2025
458b420
chore(jni): don't check jni iface signal params
dorotaphanSiili Nov 17, 2025
627140b
build(jni): android folder is not yet generated
dorotaphanSiili Nov 17, 2025
0e236fa
fix(jni): handle jclass resources in converter
dorotaphanSiili Dec 18, 2025
4aea9de
chore(jni): check for jni error for jclasses
dorotaphanSiili Dec 18, 2025
07e45ab
chore(jni): manage jni resources converter
dorotaphanSiili Dec 18, 2025
0996627
fix(jni): manage jni resources in jni wrappers
dorotaphanSiili Dec 18, 2025
6fdbc74
fix(jni): clean up string local ref
dorotaphanSiili Dec 19, 2025
57289ce
fix(jni): make adapter java jni calls thread safe
dorotaphanSiili Dec 31, 2025
89801b9
fix(jni): improve client jni calls thread safety
dorotaphanSiili Jan 5, 2026
371238d
fix(jni): fix prefix for signal parameters
alwa-siili Jan 7, 2026
8555cb7
feat(jni): handle service lifecycle notifications
dorotaphanSiili Jan 19, 2026
6883823
fix(jni): register jni module conditionally
alwa-siili Feb 12, 2026
41bb96a
fix(jni): remove stale test handle
alwa-siili Feb 12, 2026
a2ca711
fix(jni): guard getting backend service
alwa-siili Feb 12, 2026
69b4f3f
fix(jni): make client / adapter cache thread safe
alwa-siili Feb 12, 2026
0dfb12b
fix(jni): prevent enum local reference leak
alwa-siili Feb 12, 2026
7ff03ea
fix(jni): cast directly to int
alwa-siili Feb 12, 2026
4d26cc0
fix(jni): use thread safe cache in data converter
alwa-siili Feb 13, 2026
b244d61
fix(jni): prevent early return in adapter deinit
alwa-siili Feb 13, 2026
b1ae14d
fix(jni): prevent using uninitialised cache
alwa-siili Feb 13, 2026
e010944
fix(jni): prevent using uninitialized jni service
alwa-siili Feb 13, 2026
0c838bc
fix(jni): marshall client signals to game thread
alwa-siili Feb 13, 2026
2b232d1
fix(jni): prevent deadlocks in (a)sync calls
alwa-siili Jan 19, 2026
f565021
fix(jni): prevent deadlock on null method id
alwa-siili Jan 20, 2026
e93527d
fix(jni): prevent deleting unfulfilled promises
alwa-siili Jan 20, 2026
4a36e8b
refactor(jni): get future before storing promise
alwa-siili Jan 19, 2026
b546bec
chore(jni): reduce critical section lock scope
alwa-siili Jan 22, 2026
81f07c5
refactor(jni): format method helper methods
alwa-siili Jan 22, 2026
ac49e00
refactor(jni): extract method helper class
alwa-siili Jan 22, 2026
7b26f53
chore(jni): make method helper own async promises
alwa-siili Jan 20, 2026
5f5c7e0
refactor(jni): extract async java operation calls
alwa-siili Jan 20, 2026
c274fb0
fix(jni): resolve promise on async call failure
alwa-siili Jan 21, 2026
9292291
feat(jni): support async operation calls
alwa-siili Jan 20, 2026
35daa03
fix(jni): make properties thread safe
alwa-siili Jan 23, 2026
56721e7
refactor(jni): run operations in game thread
alwa-siili Jan 26, 2026
c7fc09a
refactor: fix typo in occurred
alwa-siili Feb 4, 2026
34d623f
refactor: move logging function to other class
alwa-siili Feb 4, 2026
94411ec
fix(jni): stop deleting references we don't own
alwa-siili Feb 6, 2026
eb6caed
refactor: extract java to ue array conversion
alwa-siili Feb 5, 2026
557aee2
fix(jni): handle null values received from jni
alwa-siili Feb 5, 2026
bc0d97f
fix(jni): align build file generation
alwa-siili Feb 19, 2026
658efca
fix(jni): fix build issues
alwa-siili Feb 20, 2026
b282082
fix(jni): guard includes and deps by platform
alwa-siili Feb 20, 2026
bf47b7f
chore(jni): delete unreferenced shared keystore
alwa-siili Mar 6, 2026
58e0482
docs(jni): add jni feature documentation page
alwa-siili Mar 9, 2026
5f14743
docs: update features and architecture diagram
alwa-siili Mar 9, 2026
3842841
feat(jni): handle async operation failure
alwa-siili Mar 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .conform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ policies:
- "docs"
- "cli"
- "deps"
- "jni"
descriptionLength: 72
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ The template offers the following feature switches which can be enabled during c
* `monitor`: create a thin decorator class which can be used to log traffic going through API layer
* `olink`: create the adaption layer for the [OLink](https://docs.apigear.io/docs/protocols/objectlink/intro) protocol. This can be used to connect to the simulation or other technologies like python, pure c++ etc..
* `msgbus`: create the adaption layer for the [UE MsgBus](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Messaging) protocol. This can be used for communication inside the same UE app or between different instances, including across network interfaces.
* `jni`: create the jni adaption layer for the android messenger communication provided by apigear java template. Please read more on a separate document readme_jni.
2 changes: 1 addition & 1 deletion apigear/test-apis
16 changes: 13 additions & 3 deletions docs/docs/features/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
sidebar_position: 2
sidebar_label: "Features"
title: "Unreal Engine Template Features Overview"
description: "Overview of ApiGear Unreal Engine template features: Core API generation, stub implementations, OLink networking, Message Bus IPC, and runtime monitoring."
keywords: [unreal engine features, olink, message bus, stubs, monitor, api generation]
description: "Overview of ApiGear Unreal Engine template features: Core API generation, stub implementations, OLink networking, JNI Android communication, Message Bus IPC, and runtime monitoring."
keywords: [unreal engine features, olink, message bus, stubs, monitor, jni, android, api generation]
---

import CodeBlock from '@theme/CodeBlock';
Expand Down Expand Up @@ -61,6 +61,7 @@ graph TD
Stubs["Stubs<br/>(Local)"]
OLink["OLink<br/>(Network)"]
MsgBus["MsgBus<br/>(IPC)"]
JNI["JNI<br/>(Android)"]
Monitor["Monitor<br/>(Decorator)"]
end

Expand All @@ -73,15 +74,21 @@ graph TD
Interface -->|implemented by| Stubs
Interface -->|implemented by| OLink
Interface -->|implemented by| MsgBus
Interface -->|implemented by| JNI
Interface -->|implemented by| Monitor
Monitor -.->|wraps| Stubs
Monitor -.->|wraps| OLink
Monitor -.->|wraps| MsgBus
Monitor -.->|wraps| JNI
OLink -.->|uses| ApiGear
Monitor -.->|uses| ApiGear
```

*Your application programs against the generated API interfaces. Stubs provide local implementations, OLink and MsgBus connect to remote services, Monitor wraps any implementation for tracing, and the Infrastructure layer provides settings and connection management.*
*Your application programs against the generated API interfaces. Stubs provide local implementations, OLink and MsgBus connect to remote services, JNI bridges to Android services, Monitor wraps any implementation for tracing, and the Infrastructure layer provides settings and connection management.*

:::note
The JNI feature requires the `template-java` `jnibridge` feature for the Java-side bridge code. See [JNI](jni.md) for setup details.
:::

### Core Features

Expand All @@ -99,12 +106,14 @@ Extended features add connectivity and monitoring capabilities:

> **Choosing between OLink and Message Bus?** See the [comparison guide](msgbus.md#when-to-use-message-bus-vs-olink) for a detailed breakdown.

- [jni](jni.md) - provides JNI adapter and client for bridging Unreal Engine and Android services. Requires the `template-java` `jnibridge` feature for the Java-side code.
- [monitor](monitor.md) - generates a middleware layer which logs all API events to the [CLI](/docs/cli/intro) or the [Studio](/docs/studio/intro).

### Test Features

- `olink_tests` - test fixtures and specs for OLink client/server functionality.
- `msgbus_tests` - test fixtures and specs for Message Bus adapters.
- `jni_tests` - test fixtures and specs for JNI adapter/client functionality.

### Internal Features

Expand Down Expand Up @@ -167,6 +176,7 @@ This graph shows the folder structure generated for a module with all features e
┃ ┣ 📂IoWorldCore
┃ ┣ 📂IoWorldEditor
┃ ┣ 📂IoWorldImplementation
┃ ┣ 📂IoWorldJni
┃ ┣ 📂IoWorldMonitor
┃ ┣ 📂IoWorldMsgBus
┃ ┗ 📂IoWorldOLink
Expand Down
Loading
Loading