cocos2d-x之jni使用(对接Android各种sdk)

cocos2d-x之jni使用(对接Android各种sdk),第1张

概述  游戏弄完了,要发布到各个平台,ios、Android是肯定少不了的,那么本文就来讲讲Android平台对接代理商付费sdk、各渠道、五大运营商、广告、分享、数据统计等等少不了的jni调用,接sdk真是各种麻烦事儿啊。。。   首先,这么多sdk,功能各有不同,所以得有一个统一的sdk管理类来管理,然后游戏中需要用到什么功能的时候调用指定接口,接口实现时,不同的平台在调用不用的sdk~   然后

游戏弄完了,要发布到各个平台,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)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1056829.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存