Kotlin-JNI Help

Custom data

To pass arbitrary objects through JNI, define a JniSerializer for your type.

Implement packing and unpacking into kotlinx.io.Buffer.

import com.dshatz.kni.annotations.AddJniSerializer import com.dshatz.kni.serialization.JniSerializer import com.dshatz.kni.serialization.readLenString import com.dshatz.kni.serialization.writeLenString import kotlinx.io.Buffer import kotlinx.io.readDouble import kotlinx.io.writeDouble data class ColorfulObject( val color: String, val weight: Double ) @AddJniSerializer object ColorfulObjectSerializer: JniSerializer<ColorfulObject> { override fun packTo(value: ColorfulObject, buffer: Buffer) { buffer.writeLenString(value.color) buffer.writeDouble(value.weight) } override fun unpackFrom(buffer: Buffer): ColorfulObject { return ColorfulObject( buffer.readLenString(), buffer.readDouble() ) } }
Last modified: 23 April 2026