JMI是JNI的C++11/14封装,目的是为了简化JNI使用。具有以下特点:
-JNI的signature字符串由编译器辅助生成,减少代码量又不会出错
-支持带出参的方法,如
void SurfaceTexture.getTransformMatrix(float[] mtx)对应的C++代码
jfloat mtx[16];st.call("getTransformMatrix", std::ref(mtx));
-jclass、jmethodID、jfieldID都可缓存,使用值转型机制
-提供getEnv()来获得JNIEnv而不需操心线程问题
-接口简单易用。比如如field接口
auto f = obj.field<jint>("myIntFieldName");f = 123;jint value = f;
评论