最近在研究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  大家一起交流

如果感觉对你有帮助给个评价

转载于:https://blog.51cto.com/7535479/1710367

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

  1. iOS架构-多工程联编及framework之间的相互调用(19)

    对于大公司,大工程来说,业务线很多,也时刻在变,功能模块要求能随时下线,或者业务不再需要了,就需要从主工程中移除相关工程或者库.以减小包的大小.多工程联编是一种多业务合作的一种方法. 有篇文章写的很详 ...

  2. Python与C之间的相互调用

    Python与C之间的相互调用(Python C API及Python ctypes库) 分类: [Python]2010-01-24 17:58 32468人阅读 评论(11) 收藏 举报 pyth ...

  3. C#与Javascript变量、函数之间的相互调用2008年11月28日 星期五 05:28 P.M.1.如何在JavaScript访问C#函数?

    C#与Javascript变量.函数之间的相互调用 2008年11月28日 星期五 05:28 P.M. 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3 ...

  4. js 中meta 移除head_JS函数和winform函数之间的相互调用

    1.写一个简单的html页面,用于输入日志,代码如下: <html><head> <meta charset="UTF-8"> <scri ...

  5. C与C++之间的相互调用(混合编程)

    C和C++各自有自身的重要功能,为了能够做到充分利用,避免重复造轮子,有的时候,我们会用到混合编程.然而,我们知道,代码从编写到能执行之前,仍需要经过编译.链接阶段.通常,编译每一个单元文件会生成目标 ...

  6. 父窗口、子窗口和Silverlight之间的相互调用

    啊哈~ 爷爷,爸爸,儿子~ 三代同堂~ 前两天做 silverlight 的东西,主页面打开一个子页面,然后子页面中包含一个 silverlight 应用程序 那难免会涉及到他们三者相互调用的问题 其 ...

  7. python 函数定义先后是否会影响函数之间的相互调用?(不影响)

    # -*- coding: utf-8 -*- """ @File : 201006_测试是否能将被调用函数写在被调用函数之后.py @Time : 2020/1/6 1 ...

  8. 随想录(ccpp之间的相互调用)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 作为系统工程师,平时用c可能多一些.这两天因为工作的原因,了解了linux上面cpp的编写方法. ...

  9. Android加载网页JavaScript与Java之间的相互调用

    最近项目中涉及到Android中的网络通信与交互.html5等相关内容,由于之前没仔细研究过,在这里总结一下,下面是JavaScript与Java相互调用的一个小例子,废话不多说,直接上代码: < ...

最新文章

  1. 英国EE:启动TechCity 2.0 首期将部署LTE-Advanced Pro
  2. C#实现异步消息队列
  3. dietlibc中的strcpy算法浅析
  4. 让VC编译的Release版本程序在其他机器上顺利运行
  5. 发票抬头是什么意思?
  6. UNIX时间戳及日期的转换与计算
  7. Eclipse之智能提示 actionscript javascript java开发环境智能提示
  8. 计算机室 多媒体教室制度,多媒体教室管理、使用制度
  9. 阿里巴巴是怎么处理大数据的?重磅揭秘!
  10. Http状态码406(Not Acceptable)
  11. 百度地图点击出现圆圈
  12. 优动漫PAINT动画创作功能介绍
  13. LAMP 技术简介(1)
  14. 如何实现会议异地实时连线直播
  15. 老熊的三分地-Oracle、UNIX、数据恢复
  16. 2011年10月买到Incredible S G11山寨,大家警惕!
  17. 打印俄文字母表java,?俄语字母表、俄文键盘、傻瓜式读音法、书写法大全【一起学俄语】...
  18. 代码坏味道与重构之霰弹式修改和依恋情结
  19. [PPT]用PPT来做2019苹果发布会演示文稿【附源文件下载】
  20. sshfs真是爽啊!

热门文章

  1. Tableau 绘制折线图
  2. 大数据处理框架之Strom:Storm集群环境搭建
  3. linux进程自动关闭与dmesg的使用
  4. 怎样向IT行业的朋友说明《圣经》的重要性
  5. ZigZag Conversion
  6. Android动画之Frame Animation
  7. PostgreSql与sqlserver对比杂记
  8. Android底部菜单栏 仿微博效果
  9. python book.save_2.3.1. 将二进制数据存为文件:saveBinDataToFile
  10. 测试功能范围_IT8511+电子负载 OCP?测试功能