白日放歌须纵酒,青春作伴好还乡。这篇文章主要讲述关于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-x 和安卓之间的相互调用】在你要调用cocos2d的java类中写上要调用的方法名字 写法例如以下
public native static void callbackMobiles();
名字随便定义,可是native不能丢掉
然后在该类中直接调用callbackMobiles()
就能够直接进入到CCLog("測试是否进入");
中了
哈哈 结束了,这是本人正在用的游戏中支付的一块代码调用,执行都正常,如有不好的地方望指出
也可进入群:252799892
大家一起交流
假设感觉对你有帮助给个评价
推荐阅读
- Android - 隐藏EditText弹出的软键盘输入(SoftInput)
- Android应用基础学习记录
- Android自己定义控件实战——仿多看阅读平移翻页
- 兔子--改动Android Studio的快捷键,改动成eclipse的快捷键
- AutoMapper新语法
- Android 怎样查看系统的memory swap 资讯/信息
- 安卓OKhttp请求封装
- spring中applicationContex.xml文件
- Android 当打开“开发人员模式”中的“不保留活动”后,程序应当怎么保持正常执行