前端之家收集整理的这篇文章主要介绍了
cocos2d-x中通过jni调用android方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近的一个cocos项目有使用到JNI,结果又是通过百度来查找使用方法,为了方便以后查看,在这里小结一下,应该会比较适合初次使用Jni的小伙伴们:)
JNI是JavaNative Interface的缩写,中文为Java本地调,是Java语言提供的一种通用接口,用于Java代码与本地化代码的交互。
所谓本地化代码(Native Code)是指已被编译为特定于处理器的二进制代码,如Windows下的DLL,MAC OS X下的SO文件。
通过JNI可以实现C++与Java的相互调用。
这里主要是讲解在Cocos2d-x中通过Jni调用Java方法。
以下将会从创建一个新项目开始,完整讲解Jni的使用过程
1、创建一个Cocos2d-x的C++项目,包名“com.game.UseJni”
2、在Eclipse中导入项目中的Android工程,在src目录下新建包“com.game.JniMethod”,并在包中新建一个java件“JniMethod.java”。这里的名字都是随意取的,在C++调用时会用到。
在JniMethod.java中写了一些静态方法,供C++中调用
JniMethod.java
- packagecom.game.JniMethod;
- importandroid.util.Log;
- publicclassJniMethod
- {
-
- staticvoidAndroidFunc1()
- {
- Log.d("jni","AndroidFunc1called");
- }
-
- voidAndroidFunc2(floatnumber)
- Log.d("jni","AndroidFunc2called:"+number);
- }
- //带一个String参数
- voidAndroidFunc3(Stringname)
- "AndroidFunc3called:"+name);
- //带两个参数
- voidAndroidFunc4(Stringname,intage)
- "AndroidFunc4called:"+age);
- //带一个boolean参数,并返回一个int
- intAndroidFunc5(booleanflag)
- "AndroidFunc5called");
- returnflag?10:100;
- //带一个int数组参数
- voidAndroidFunc6(intarr[])
- intsum=0;
- for(inti:arr)
- sum+=i;
- "AndroidFunc6called:"+sum);
- //返回一个int数组
- int[]AndroidFunc7()
- intarr[]={10,20,0); background-color:inherit">30,0); background-color:inherit">40};
- returnarr;
- }
3、用xcode打开项目的C++工程, 在Class目录下新建C++类JniMethod.h、JniMethod.cpp,在这个类中调用刚才写的Java静态方法。
JniMethod.h