Adaptador JNI opcional

Los plugins estándar no necesitan este adaptador. La implementación C demuestra la ABI de plugin con native.info; el ELF x86_64 precompilado se distribuye en examples/native/libkoru_native.so y se ha probado en Android 11/ART.

Su código usa exclusivamente la tabla de funciones JNI. No enlaza libc ni una JVM; el proceso Android proporciona ART. El header JNI de AOSP conserva Apache-2.0, con licencia incluida en include/. El código koru conserva MIT.

Compilar el ejemplo de desarrollo, en un host x86_64 con GCC:

gcc -std=c11 -Wall -Wextra -Werror -shared -fPIC -ffreestanding -nostdlib \
  -fno-stack-protector -Wl,-soname,libkoru_native.so -Wl,--hash-style=both \
  -Wl,-z,max-page-size=16384 -I runtime/native/include \
  runtime/native/koru_plugin.c -o examples/native/libkoru_native.so

Esto no forma parte de koru build. Para otra ABI se usa un compilador C adecuado y se distribuye el ELF precompilado correspondiente. No se necesita Java/JDK/Gradle. El ejemplo se limita a JNI y no pretende que un ELF general compilado contra glibc funcione en Android; para otros plugins hace falta un toolchain C compatible con Android y sus dependencias.

Prueba del scope de hilo:

gcc -std=c11 -Wall -Wextra -Werror -I runtime/native/include \
  runtime/native/koru_plugin.c runtime/native/scope_test.c -o /tmp/koru-scope-test
/tmp/koru-scope-test

Es una prueba unitaria de ownership con una tabla JNI controlada, no una simulación de ART. La ejecución real Android está registrada en docs/results/full/android-smoke.json.