应该很简单,
要将 byteArray 从 Java 传输到 C++,您可以考虑以下示例:
第 1 步:在将调用本机方法的 java 类中声明该方法(在我的示例中是一个简单的 zip)
private native byte[] jniZipString(byte[] unpackedData, int datasize);
第 2 步:在 c++ 中,使用 javah.exe [note] 从 bin/classes 文件夹调用 javah 生成头文件和实现(因为您为 android 编码
javah -jni com.example.JavaClassWithNativeMethods
第 3 步:在 C++ 中接收字节数组并转换为 C++ 字节数组
jbyte* tempPointer = env->GetByteArrayElements(jInput, 0);
const char* cinput = (const char*) tempPointer;
int dataSize = (int)env->GetArrayLength(jInput)
第 4 步:处理您的数据
whatever you do to process the bytearray
步骤 5:将生成的字节数组返回给 java
jbyteArray result = (env)->NewByteArray(newDataSize);
(env)->SetByteArrayRegion(result, 0, newDataSize, (jbyte *) processedCharArray);
return result;