Dalvik虚拟机里,提供了一些JNI的调用测试函数,以便确认JNI的机制是否可以运行,JNI调用效率是否达到设计的目标,它是通过在registerSystemNatives函数初始化,然后调用jniRegisterSystemMethods函数来设置JNI函数。


JNI的测试函数代码如下:

/*

* JNI registration

*/

staticJNINativeMethodgMethods[] = {

/*name, signature, funcPtr */

{ "emptyJniStaticMethod0", "()V", emptyJniStaticMethod0 },

{ "emptyJniStaticMethod6", "(IIIIII)V",emptyJniStaticMethod6 },

{ "emptyJniStaticMethod6L",

"(Ljava/lang/String;[Ljava/lang/String;[[I"

"Ljava/lang/Object;[Ljava/lang/Object;[[[[Ljava/lang/Object;)V",

emptyJniStaticMethod6L },

};

这段代码是提供JNI测试函数的接口和相关实现的C函数入口。


intregister_org_apache_harmony_dalvik_NativeTestTarget(JNIEnv*env)

{

intresult = jniRegisterNativeMethods(env,

"org/apache/harmony/dalvik/NativeTestTarget",

gMethods,NELEM(gMethods));

这段代码把JNI调用接口设置到包org.apache.harmony.dalvik.NativeTestTarget下面,这样在Java的应用程序里就可以调用了。


if(result != 0) {

/*print warning, but allow to continue */

LOGW("WARNING:NativeTestTarget not registered\n");

(*env)->ExceptionClear(env);

}

return0;

}


/*

* public static voidemptyJniStaticMethod0()

*

* For benchmarks, a do-nothingJNI method with no arguments.

*/

staticvoidemptyJniStaticMethod0(JNIEnv*env, jclassclazz)

{

//This space intentionally left blank.

}


可见这些系统函数的代码,都空的结构,没有真实的代码运行,就可以用来测试JNI是否可以工作,测试JNI调用的时间需要多少,可以提供准确的时间。

更多相关文章

  1. Eclipse+CDT+GDB 调试android NDK程序
  2. Android实现调用震动的方法
  3. android 4.2 rtlSupport对UI性能的坑
  4. Android中Button设置background过程的研究
  5. gradle添加新的代码仓库
  6. Android和H5交互
  7. 【Android开发进阶系列,整理】Android与h5交互专题
  8. Ionic2实现自定义Cordova插件-Android屏幕录制
  9. android git gerrit 一些基本概念和问题

随机推荐

  1. Android一个ListView列表之中插入两种不
  2. Android Broadcast Receiver 简单例子
  3. ionic3-使用cordova打包android时报错
  4. android的SparseArray
  5. android响应事件的三种方式
  6. android SD卡的热插拔实现,及调试
  7. Android应用程序键盘(Keyboard)消息处理机
  8. 【Android】使用Binder池减少Service进程
  9. 如何让android的屏幕保持常亮
  10. Android创建XML文档