您的位置:首页 > 移动开发 > Cocos引擎

android JNI 与cocos结合篇(二)

2016-04-01 16:08 375 查看

整理来源:http://www.2cto.com/kf/201404/290498.html

1.JNI

JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

JNI实现流程:



2.C++与java交互流程图:



注:对于跨平台的 cocos2d-x 来说,除非必要,否则可不必深究其理,比如想要使用 Android 平台固有的特性等,那就需要更多的了解 Jni 使用方法,以及 Android 操作系统的更多细节。

3.实例:

实现功能:

(1)通过Android sdk的API得到应用程序的包名(PackageName),然后传递给c++层函数。

(2)通过c++函数调用Android的java层函数,显示一个对话框,点击按钮退出程序。

4.实现步骤:

4.1 使用cocos2d-x创建工程DialogBox及搭配android环境

android环境,如图:



4.2 c++部分

先到win32环境,编写提供android调用c++接口:

JniTest.h

?
调用android API接口:

HelloWorldScene.cpp

?
注:只需要更改下HelloWorldScene就OK了。

接着转到android平台,编写jni层代码:

test.h

?
test.cpp

?
注:这里必须加上extern “C”,声明以c语言的方式进行编译,因为c++和c在编译时生成的函数签名不一样,可以在网上查找相关资料,不然运行的时候会出现链接错误。

4.3 Java部分:

c++函数调用java层函数,显示一个对话框:

JniTestHelper.java

?
创建一个DialogMessage.java,封装dialog要显示的数据:

?
修改主程序DialogBox.java

?
编译运行,效果如下:

<img src="http://www.2cto.com/uploadfile/Collfiles/20140403/2014040309145653.jpg" alt="[�棣m�堋丕倆0r堋�,佘鬏殕窡" http:="" www.2cto.com="" kf="" qianduan="" css="" "="" target="_blank" class="keylink" style="border-width: 0px; padding: 0px; margin: 0px; list-style:
none; width: 630px; height: 408.254px;">html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: