
游戏弄完了,要发布到各个平台,ios、AndroID是肯定少不了的,那么本文就来讲讲AndroID平台对接代理商付费sdk、各渠道、五大运营商、广告、分享、数据统计等等少不了的jni调用,接sdk真是各种麻烦事儿啊。。。
首先,这么多sdk,功能各有不同,所以得有一个统一的sdk管理类来管理,然后游戏中需要用到什么功能的时候调用指定接口,接口实现时,不同的平台在调用不用的sdk~
然后,c++调用java层:(拿显示广告来举例)
//====================================// c++//====================================//com/ican/redstar/ ---> 调用的类的路径(包名可以和绝对路径名不同) //RedStarsdkmanager ---> 类名//showYcAD ---> 要调用的接口名//()V ---> 返回值voID 参数voID#define CLASS_name "com/ican/redstar/RedStarsdkmanager"#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID JniMethodInfo t; if (JniHelper::getStaticmethodInfo(t,CLASS_name,"showYcAD","()V")) { t.env->CallStaticVoIDMethod(t.classID,t.methodID); t.env->DeleteLocalRef(t.classID); }else { cclog("C++ call java showYcAd faild!"); }#endif//========================================//java//========================================public static voID showYcAD(){ Log.d("ycad","call from cocos2d-x..."); try{ YcCpManager.getInstance().showCp(getContext().getApplicationContext()); }catch(Exception e){ Log.d("ycad","show cp thow uncaught exception"); } } 没错,很简单~,当然,如果要传递参数,或者函数有返回值,会稍微变得复杂一些,最后来讨论,先看java层掉用c++
//==============================//java//==============================//直接声明一个native方法就行了 ,比如用户登录返回//jni callbackprivate static native voID loginEndCallBack(int loginSuccess,String usename);//==============================//c++//==============================//登录回调//com_ican_redstar_RedStarsdkmanager ---> 路径、类名、函数名用下划线隔开//JNIEXPORT voID JNICALL Java_com_ican_redstar_RedStarsdkmanager_loginEndCallBack (jnienv *env,jobject thiz,jint loginSuccess,Jstring usename){ jboolean jb_copy = false; string nameStr = string(env->GetStringUTFChars(usename,&jb_copy)); int sec = loginSuccess; cclog("%s jni Called true [login = %d,username = %s]",__FUNCTION__,sec,nameStr.c_str()); RedStarsdkmanager::getInstance()->loginCallBack(sec,nameStr);} 好棒,java调c++也很简单。
最后,我们来看看参数传递,与函数返回吧:
借鉴一下其他朋友的博客吧,午休了~
http://www.blogjava.net/china-qd/archive/2006/04/29/44002.html(详解了参数传递)
http://www.jb51.cc/article/p-hvjxhawr-bhn.html(详解了cocos2d::JniHelper)
总结以上是内存溢出为你收集整理的cocos2d-x之jni使用(对接Android各种sdk)全部内容,希望文章能够帮你解决cocos2d-x之jni使用(对接Android各种sdk)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)