Java 的 ByteArray 的签名是什么?

What is the signature for Java's ByteArray?

我正在尝试通过 JNI 通过 C++ 调用 onEventChannel

class MainActivity: FlutterActivity(){
    companion object {
        @JvmStatic
        private fun onEventChannel(b: ByteArray): Int {
            Log.d(TAG, "onEventChannel");
            return 0;
        }
    }

我为 onEventChannel 尝试了 (Ljava/lang/byte;)I(Ljava/lang/ByteArray;)I,但其中 none 有效。

java 的 ByteArray 的签名是什么?

(免责声明:我不了解 Flutter,也没有使用过 JNI。)

没有java.lang.byte*这样的class,也没有java.lang.ByteArray.

在 Kotlin/JVM 上,ByteArray 编译成一个简单的原始数组 — 在 Java.

中称为 byte[]

并且具有 JVM 描述符 [B。 (您可以通过打印 ByteArray(0).toString() 看到这一点,它以 [B 开头(在 @ 和哈希码之前)。血淋淋的细节在 JVM Spec 中。)

所以我建议尝试 [B


(* java.lang.Byte,但这是用于装箱字节的原始包装器 class。)