关于cocos2d-x 和安卓之间的相互调用

Posted jhcelue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于cocos2d-x 和安卓之间的相互调用相关的知识,希望对你有一定的参考价值。

近期在研究cocos2d游戏移植安卓须要调用非常多方法。所以在研究之中写下它们之间相互调用



首先,cocos2d调用安卓

在一个.h文件里加入头文件

#include <jni.h>
#include "platform\android\jni\JniHelper.h"


JniMethodInfo minfo;//定义Jni函数信息结构体
//getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数
bool isHave = JniHelper::getStaticMethodInfo(minfo, "com/zhangying/jni/applay", "testFunWithStringAndRtn", "(I)V");

com/zhangying/jni/applay參数为调用安卓中的类的全路径。

testFunWithStringAndRtn为类中要调用的方法

(I)V  返回值和传入參数的类型


jobject jobj;
if (!isHave) {
CCLog("不存在");
}
else{
CCLog("存在");
//调用此函数
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID, this->choiceMoney);


// ReadData::setUserDefaultInt("RECHARGE", this->choiceMoney);
}

完毕以上步骤就能够測试cocos2d调用安卓中的代码了

 然后安卓调用cocos2d

首先在项目中找到jni中的hellocpp中的main.cpp

在当中增加

#include <android/log.h>
#include "data/ReadData.h"


#define  LOG_TAG    "main"
#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)


using namespace cocos2d;
void cocos_android_app_init (JNIEnv* env, jobject thiz) {
    LOGD("cocos_android_app_init");
    AppDelegate *pAppDelegate = new AppDelegate();
}


一下代码是自己增加的 上面的一些自带的不用改动
extern "C"
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
void Java_com_yiqu_mobilesdk_iap_IAPOrder_callbackMobiles(JNIEnv *env, jobject thiz)
{


CCLog("測试是否进入");

}

#endif
}

注意:

Java_com_yiqu_mobilesdk_iap_IAPOrder_callbackMobiles这个名字不是随便定义的

Java是固定的com.yiqu.mobilesdk.iap是包名 IAPOrder是类名字,callbackMobiles是你要调用的方法名字

这样就写成了这种方法




在你要调用cocos2d的java类中写上要调用的方法名字 写法例如以下

public native static void callbackMobiles();  名字随便定义,可是native不能丢掉

然后在该类中直接调用callbackMobiles()

就能够直接进入到CCLog("測试是否进入");中了


哈哈 结束了,这是本人正在用的游戏中支付的一块代码调用,执行都正常,如有不好的地方望指出

也可进入群:252799892  大家一起交流

假设感觉对你有帮助给个评价
































































以上是关于关于cocos2d-x 和安卓之间的相互调用的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP 多个应用 相互之间 如何调用Action

unity接入安卓SDK,与安卓相互通信

微服务如何实现各个模块之间相互调用

关于数组和List之间相互转换的方法

Android 安卓实现页面相互跳转并相互传递参数

关于创建相互依赖的异步调用的建议