cocos2dx为了更好的调用安卓的原声函数,专门提供了对于jni的封装类——jniHelper.
这里不对jniHelper做太多的深入,这里讲解最基础的用法
- 添加头文件
#include "platform/android/jni/JniHelper.h
- getStaticMethodInfo函数
JniHelper::getStaticMethodInfo(minfo,/*JniMethodInfo的引用*/
"com/***/***",/*类的路径*/
"***",/*函数名*/
"()Ljava/lang/Object;");/*函数签名*/
其中函数签名可以按照如下表格
比如void()签名就是()V
String(int)签名就是(I)Ljava/lang/Object;
注意这里String后面的分号,一定要加的
3. CallStaticVoidMethod 函数
JniMethodInfo info;
bool isHave = JniHelper::getStaticMethodInfo(info, "com/***/***",/*类的路径*/
"***",/*函数名*/
"()Ljava/lang/Object;");/*函数签名*/;
jobject Obj;
if (isHave)
{
//CallStaticObjectMethod调用java函数,并把返回值赋值Obj
Obj=minfo.env->CallStaticObjectMethod(info.classID, info.methodID);
}
关于函数返回值要返回特定的值,要使用需要进行类型转换
对于非静态函数的调用
info.env->CallVoidMethod(Obj(/*非静态类对象*/), minfo.methodID, jX(/*参数*/));