在android中通过JNI调用本地方法

     JNI的核心是JNINativeMethod结构体,在jni.h中定义:

要实现java通过JNI调用本地C函数, 要有以下几步:

一:在C/C++中对本地函数定义JNINativeMethod结构体并在系统注册

例如frameworks/base/core/jni/中的android_util_Log.cpp表示对android.util包中的Log类提供支持。这个文件首先定义了所实现的java方法列表:

定义后只有对系统进行注册才能够使用,注册函数如下:

 

 

二:在java方法中声明为native方法。

public static native boolean isLoggable(String tag, int level);

/** @hide */ public static native int println_native(int bufID,  int priority, String tag, String msg);

需要注意的是在注释中的@hide表示的是该方法虽然在java代码中是存在的,但是被隐藏的,不被视为Android的系统API。

 

    上边的方法是在Android的系统API中增加本地接口,单一的java程序其实也是一样的方法调用本地接口,这样就无需更改系统API,android系统也提供了一个java程序直接调用本地接口的例子,在development/samples/目录下的SimpleJNI,可以参考学习下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值