cocos2d-x 移植android 植入计费,广告模块

来源:互联网 发布:网络技术发展 编辑:程序博客网 时间:2024/05/01 10:03

陶恒原创,欢迎转载。转载请注明: 转载自csdn,谢谢!

原文地址: http://blog.csdn.net/freeket/article/details/7640721


1.cocos2d-x 移植android植入计费、广告模块,首先要想到要从C++调用java模块,C++调用java很简单使用JNI

  1.1 首先要确认调用的java代码存在(android项目的src目录下,还没有就自己创建)

参考:http://www.cocos2dev.com/?p=151

1、导入头文件

1#include <jni.h>
2 
3#include "platform/android/jni/JniHelper.h"

2、实现方法:

查看源代码
打印帮助
01JniMethodInfo t;
02 
03if(JniHelper::getStaticMethodInfo(t
04 
05,"com/cocos2dev/JNIDemo/FMJNIHelp"
06 
07,"starPayMoney"
08 
09,"(Ljava/lang/String;Ljava/lang/String;)V"))
10 
11{
12 
13jstring stringArg1 = t.env->NewStringUTF("2");// $
14 
15jstring stringArg2 = t.env->NewStringUTF("10"); // count
16 
17t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg1, stringArg2);
18 
19t.env->DeleteLocalRef(stringArg1);
20 
21t.env->DeleteLocalRef(stringArg2);
22 
23t.env->DeleteLocalRef(t.classID);
24 
25}

注意:

C++这边请注意一下c++这边方法申明的命名规则,JNIDemo表示java那边方法所在类名,com_cocos2dev_test_该类的包名。nativePaySuccess方法名。

参数规则参考:http://zzqrj.iteye.com/blog/1285262



2.计费成功之后很自然的想到要把结果反馈回来,所以用到java调动C++

参考:http://www.cocos2dev.com/?p=149

假设java这边我需要调用C++那边的函数void PaySuccess(int type);

1、在java这边申明

1privatestaticnative voidnativePaySuccess(inti);

调用时,

1nativePaySuccess(1);

这样java会调用到C++那边。

2、C++那边实现该方法:

查看源代码
打印帮助
01#include <jni.h>
02 
03extern"C"
04 
05{
06 
07voidJava_com_cocos2dev_test_JNIDemo_nativePaySuccess(JNIEnv*  env, jobject thiz,jint a)
08 
09{
10 
11//这里java调用nativePaySuccess(1);,这里就会被调用。jint a = 1
12 
13}
14 
15}