Open electronstudio opened 2 years ago
I got (1) working. To generate the jni-config use:
$GRAALVM_HOME/bin/java -agentlib:native-image-agent=config-output-dir=META-INF/native-image,no-builtin-caller-filter -jar jaylib-example-project-1.0-SNAPSHOT-all.jar
Then edit reflect-config.json
and add these extra fields to every entry:
{
"name":"com.raylib.Raylib$Texture",
"allDeclaredFields":true,
"allPublicConstructors" : true,
"allPublicFields": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
The native-image.properties
should contain:
Args = --no-fallback --allow-incomplete-classpath
However in the end the performance is pretty poor, so no point in this approach for performance. (Might be if you have some other reason like wanting to run on iOS where you cant run JIT.)
There are two ways to do this:
Problem: All the JNI method calls need to be listed in a file
META-INF/native-image/jni-config.json
. This file can be generated by the 'native-image-agent' but it's very incomplete. So someone would have to manually add every JNI call which seems a pretty big job.There's a nice example of this here: https://github.com/praj-foss/opengl-graal-examples
Seems like it should be very fast. But it will only ever work with GraalVM in nativeimage mode which might limit how many people would want to use it. Is there a tool to autogenerate these or are we back to having to do it manually?