Jni 的个人理解总结

实例:

void JniUtil :: pay(){

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

//JniMethodInfo是一个结构体

JniMethodInfo t;

//getStaticMethodInfo:初始化JniMethodInfo 结构体,"org/cocos2dx/cpp/AppActivity" :java的类名,"isPay":方法名,"()V":返回类型为void

if(JniHelper :: getStaticMethodInfo(t,"org/cocos2dx/cpp/AppActivity","isPay","()V"){

//CallStaticVoidMethod :调用java函数 ,其中的Void 代表无返回值

t.env->CallStaticVoidMethod(t.classID,t.methodID);

//释放引用

t.env->DeleteRef(t.classID);

}

#endif

}


================================== 分割线  ====================================

需要使用的接口如下:

static bool getStaticMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);
static bool getMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);

注:

methodinfo:是一个结构体参数,JNIEnv* 和java.lang.Class对象、函数ID。这样就可以使用JNIEnv* 调用ClassStaticXXXMethod(jclass clazz,jmethodID methodID,...)和CallXXXMethod(jobject obj,jmethodID methodID,...)等函数(XXX替换为函数返回值类型,如:Void、Int等)。

className:这是你需要调用函数所在的类

methodName:这是方法名,就是你想调用的方法

paramCode:这是参数签名。因为java是多态的,如果不加这个参数,java无法判断到具体函数


签名类型:

签名:()V  参数:无;返回值:无

    (I)V 参数:int;返回值:无

    (Ljava/lang/String;)Z 参数:字符串;返回值:布尔值

    (IF)Ljava/lang/String;参数:整数、浮点数;返回值:字符串


类型列表:

整数

F 浮点数

Z 布尔值

V Void空

Ljava/lang/String; 字符串    




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值