近期接sdk的一点小总结2(单机)

c++与java相互调用:当点击游戏购买某一个道具时,步骤是:由于cocos已经封装好了调用java底层东西JniHelper类,所以直接拿来用就行了,头文件声明:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   

#include <jni.h>   

#include "platform/android/jni/JniHelper.h"   

#include <android/log.h>   

#endif 

1. 

    首先要获取java类的所有函数信息,首先在java中获取myInstance这个函数,并把获取到的classid和methodid等信息保存能到info中,在用call函数来调用myInstance这个函数。可能这个地方跟平常思维不大一样,上面的是获取下面的是调用。

其实这个步骤是可以理解为调用我们写的java函数前一个固定写法,要先通过静态方法来“唤醒”java,如果不加的话会产生闪退等bug,当然具体的函数可以随意定义。

http://blog.csdn.net/yuechuzhao/article/details/9283847

2. 

    函数作用同1,ILjava/lang/String表示输入int string两个类型,当然也可以分开写,(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V:意思是java中传递了8个参数返回Void类型,注意;你能掉。

具体对照表可参考http://blog.sina.com.cn/s/blog_7010db8c0100mt05.html。

callVoidMethod(jobject,infoi.method,.....)。

另const char*转jstring使用NewStringUTF()函数


Java调用c++函数:这是通过JNI来调用C++的函数

首先要在java中声明为native类型函数,例如:private native void deliverProduct(String orderIdListString);

        然后在C++里实现。

例如:

extern "C"
{
    void Java_org_cocos2dx_cpp_AppActivity_deliverProduct(JNIEnv* env, jobject thiz, jstring s)
    {
        const char *orderIdList = env->GetStringUTFChars(s, 0);
        LOGD("pay-deliverProduct = %s", orderIdList);
        PurchaseManager::getInstance()->addSuccessPayOrderIdString(orderIdList);
    }
}

解释下:Java_org_cocos2dx_cpp_AppActivity表示java中org.coco2dx.cpp文件夹下的AppActivity文件中deliverProduct函数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值