Android中提供JNI方式,实现java访问C语言程序。

Android中,主要的JNI代码路径: Frameworks/base/core/jni 这个路径下的内容编译成libandroid_runtime.so,是一个普通动态库,放在目标系统的/system/lib此外,Android还包含其他JNI库,例如,媒体部分的JNIframworks/base/media/jni中。编译成libmedia_jni.so JNI核心是JNINativeMethod结构体,在jni.hTypedef struct {
const char * name; /* JNI函数名 */ const char * signature; /* 描述JNI函数的参数和返回值*/ void * fnPtr; /* 对应C语言的函数指针 */ } JNINativeMethod frameworks/base/core/jniandroid_util_Lop.cpp中定义 Static JNINativeMethod gMethods[] = { {“isLoggable”,”(Ljava/lang/String;I)Z”,(void*)android_util_log_isLoggable}, {“printIn”,”(ILjava/lang/String;Ljava/lang/String;)I”,(void *)android_util_log_printIn}, }; 描述符源代码书写对照表 (Ljava/lang/String;)I int mmm(String x) (ILjava/lang/String;)V void mmm(int x, String) (I)Ljava/lang/String; String mmm(int x) (Ljava/lang/String;)[C char[ ] mmm(Stringx) (ILjava/lang/String;[[Lcom/sosnoski/generics/FileInfo;)V void mmm(int x, String y, FileInfo[ ][ ] z) gMethods需要注册才能用! 参考int register_android_util_Log(JNIEnv * env)函数 Androidruntime::registerNativeMethods(env,”android/util/Log”,gMethods,NELEM(gMethods)); frameworks/base/core/java/android/util中的Log.java内实现: Public final class Log{ public static native booolean isLoggable(String tag,int level); public static native int printIn(int priority,String tag,String msg); } 参数要和JNI中定义的一致!

更多相关文章

  1. C语言函数以及函数的使用
  2. Android中直接按路径读取properties文件
  3. android中去掉空格--trim函数
  4. Android 保存文件路径
  5. Android三角函数
  6. ISurfaceComposer接口有13个成员函数
  7. FileProvider 路径配置策略的理解

随机推荐

  1. 【asp.net core 系列】3 视图以及视图与
  2. C# 数据操作系列 - 15 SqlSugar 增删改查
  3. 【asp.net core 系列】4. 更高更强的路由
  4. 【Java Spring Cloud 实战之路】- 使用Na
  5. C# 数据操作系列 - 16 SqlSugar 完结篇
  6. 【asp.net core 系列】5 布局页和静态资
  7. C# 数据操作系列 - 17 Dapper ——号称可
  8. 【asp.net core 系列】6 实战之 一个项目
  9. C# 数据操作系列 - 18 让Dapper更强的插
  10. C# 数据操作系列 - 19 FreeSql 入坑介绍