cocos2dx在Android下如何接入91SDK

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

版本

  • cocos2dx: 2.1.3
  • 91SDK: 3.2.6.1(Android)

适用范围

这里仅仅讨论的是Android的版本

正题

不得不说,91的SDK没有动态库,反而编译起来坑不会那么多,不过既然是Android的整合,坑自然也不会少你的呀,啊哈哈。文档和流程很清楚,可以到91对应的论坛上参考

接入91SDK

加载Lib库

直接的Eclipse中,把 91SDK_LibProject_complete这个项目加进来,然后在你的项目的properties中的Android一栏中增加一个项目依赖,如图,直接Add一个即可



注意Lib项目中的两个jar:alipay_msp.jar android-support-v4.jar,这两个可能会和现有项目中的依赖冲突,安全起见还是用lib包中的好了,如果你本地有,则删除,反正加了项目依赖后这几个文件都会打包到apk中去的。如图。

初始化SDK

以下的代码大部分是抄Demo的,莫见怪
// /////////////////////////////////////////////////////////////////////////////
	// 这里开始定义91市场的接入
	// 变量定义,初始化等

	/* 初始化完成监听端口 */
	private OnInitCompleteListener m_onInitCompleteListener = null;
	/* 91的toolbar */
	private NdToolBar m_NDToolBar = null;

	/**
	 * 初始化91SDK,在 onCreate 中调用
	 */
	private void initSDK91() {
		// if(AppPreferences.isDebugMode(this)){
		NdCommplatform.getInstance().ndSetDebugMode(0);// 设置调试模式
		// }

		NdCommplatform.getInstance().ndSetScreenOrientation(
				NdCommplatform.SCREEN_ORIENTATION_AUTO);

		m_onInitCompleteListener = new OnInitCompleteListener() {

			@Override
			protected void onComplete(int ndFlag) {
				switch (ndFlag) {
				case OnInitCompleteListener.FLAG_NORMAL:
					// initActivity(); // 初始化自己的游戏
					int orient = NdCommplatform.SCREEN_ORIENTATION_LANDSCAPE; // 横屏
					NdCommplatform.getInstance().ndSetScreenOrientation(orient);

					break;
				case OnInitCompleteListener.FLAG_FORCE_CLOSE:
				default:
					// 如果还有别的Activity或资源要关闭的在这里处理
					break;
				}
			}

		};

		NdAppInfo appInfo = new NdAppInfo();
		appInfo.setCtx(this);
		appInfo.setAppId(Constants.SDK_91_APPID);// 应用ID
		appInfo.setAppKey(Constants.SDK_91_APPKEY);// 应用Key
		/*
		 * NdVersionCheckLevelNormal 版本检查失败可以继续进行游戏 NdVersionCheckLevelStrict
		 * 版本检查失败则不能进入游戏 默认取值为NdVersionCheckLevelStrict
		 */
		appInfo.setNdVersionCheckStatus(NdAppInfo.ND_VERSION_CHECK_LEVEL_STRICT);

		// 初始化91SDK
		NdCommplatform.getInstance().ndInit(this, appInfo,
				m_onInitCompleteListener);

		// 创建Toolbar
		if (m_NDToolBar == null) {
			m_NDToolBar = NdToolBar.create(this,
					NdToolBarPlace.NdToolBarRightMid);
		}
		m_NDToolBar.show();
	}

	/**
	 * 清理91数据
	 */
	private void cleanSDK91() {

		// 移除监听
		if (m_onInitCompleteListener != null)
			m_onInitCompleteListener.destroy();

		// 清理工具条
		if (m_NDToolBar != null)
			m_NDToolBar.recycle();
	}
这里特别要注意,91的Toolbar一定要在初始化后调用,否则会报资源加载出错的Exception,然后程序就崩了,切记

这两个函数,分别在onCreate和onDestroy中调用即可。一个是初始化的,一个是销毁清理用的。

登录接入

登录这里其实有个坑,呃,我还没跨过去,只是有解决思路,但是后来我把cpp中的代码稍微改了下,就暂时绕过去了,后面会讲到。
// 登录监听
private OnLoginProcessListener m_onLoginProcessListener = null;

/**
 * 91帐号登录
 * 
 */
private void SDKND91AccountLogin() {

	Activity act = this;

	m_onLoginProcessListener = new OnLoginProcessListener() {

		@Override
		public void finishLoginProcess(int code) {
			String tip = "";
			// hideLoading();
			JSONObject prms = new JSONObject();

			// 得到用户昵称
			try {
				// 设置请求业务类型为登录请求
				prms.put("requestType", Constants.REQ_LOGIN);
				prms.put("retcode", "-1");
				// 登录的返回码检查
				if (code == NdErrorCode.ND_COM_PLATFORM_SUCCESS) {
					// 得到用户信息,返回到cocos2dx中
					tip = "登录成功";

					// actInstance.runOnUiThread(new Runnable() {
					// public void run() {
					prms.put("retcode", "0");
					prms.put("nickname", NdCommplatform.getInstance()
							.getLoginNickName());
					prms.put("account", "91_"
							+ NdCommplatform.getInstance().getLoginUin());

					// }
					// });
					// 账号登录成功,测试可用初始化玩家游戏数据
					// 有购买漏单的此时可向玩家补发相关的道具
				} else if (code == NdErrorCode.ND_COM_PLATFORM_ERROR_CANCEL) {
					tip = "取消登录";
				} else {
					tip = "登录失败,错误代码:" + code;
				}
				// 把数据返回给客户端
				AndroidNDKHelper.SendMessageWithParameters(
						Constants.SDKBussinessCallback, prms);
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Toast.makeText(actInstance, tip, Toast.LENGTH_SHORT).show();
		}
	};
	// showLoading();
	NdCommplatform.getInstance().ndLogin(this, m_onLoginProcessListener);
}
这里的登录函数需要有个监听用来响应登录状态回调,我就不展开了。关于 AndroidNDKHelper,这个挺好用的,可以在cpp中直接调用和底层NDK的交互,并且支持Android和iOS两个版本,不用直接写那个JNI的调用还是很爽的,虽然有JNIHelper,但是写起来还是比较晦涩冗长,关键是可以在cpp中统一代码调用两个平台的NDK。推荐大家用下,Github上也有源代码。

这里是登录的代码,如果要在cocos2dx中调用的话,只需要登录的时候调用JNI,然后JNI去调用这个函数即可,后面的就是SDK的事情了,登录完成后会在Listener中回调的,只要回调回cocos2dx中通知下即可。不过注意,这里有个小坑,就是貌似回调到cpp中后,可能不是主线程(虽然我JAVA的debug中看到的线程号是主线程),所以如果像这样做的话,cpp中的响应不能有UI的操作,否则直接崩你没商量。我这里偷了个懒,把cpp中的UI操作全都注释了,就修改了个变量的状态,然后主线程定时器扫到这个变量状态变化后,会调用对应应用登录的操作,这里就切换过去了。在360接入的时候,貌似没有这种线程问题,可能360的SDK登录是同步的,而91这个是登录状态起线程异步回调的,没研究过,如果有谁知道知会一声,不胜感激。不知道把91这个模块封装到一个独立的Activity中,然后通过Intent传递数据是否能解决cpp中UI线程的问题,因为即使我用this.runOnUiThread来包一层也还是有问题。

接入支付

支付的话,91提供的种类还是相当繁多的!我这里使用的代币充值,就是先充成91币,然后再和应用结算。需要在支付的时候填入对应的coins,当然需要在91的后台配置下和软妹币的兑换比例,然后填入你需要充值的游戏内的东西即可(也可以是对应的商品价格)。服务器端的回调通知不在本篇的讨论范围。

太简单了,代码就不贴了,给个对应的详细介绍地址好了,接91的应该都知道吧,给没注意的小白看下: 请猛击我
cocos2dx 3.10 移植到安卓步骤 0,这里废话: 本人非计算机专业,刚开始自学编程时,由于对游戏的兴趣学完c++基础就去学cocos2dx了,用的是2.2.6版本,那时移植到安卓时搞了一天的时间才搞好,可能我比较笨吧,一开始因为没搞过JAVA,对于配置环境变量感觉很麻烦,后来搞好JAVA配置环境又要去eclipse配置那些什么ndk呀,sdk呀,什么乱七八糟的,最坑的就是网上教程路径使用\来分隔的,我用的时候不知道为什么\不行, 阅读详情

相关推荐

91开发平台手册

91移动开发平台sdk参考手册,详尽的介绍了91sdk的使用

Cocos2d-x移植到Android平台编译的两个文件AndroidAndroid开发指南

上面就简单的描述了Android.mk和Application.mk的文件的作用,下面拿Cocos2d-x中最简单的例子来简单介绍一下这两个文件。笔者在cocos2d-x-2.2.3\projects下创建了一个Test项目,导入proj.android到Eclipse中,会发现有如下的文件目录结构:在jni文件夹下有这两个文件,我们打开可以看到以下代码,笔者加上对应的注释了:#1.这个变量用于给出当前文件的路径,my-dir返回当前Android.mk所在目录的路径。

bq520111的博客 1038

91sdk接入技术宝典

轻游戏机接入SDK必须实现的功能:设置SDK屏幕方向、初始化SDK91账号登陆、显示91工具条、91暂停页和91退出页、实现运营商支付。SDK必接功能实现请按宝典目录顺序依次实现。其他未涉及内容请查看完整的游戏接入91SDK流程参考接入流程帖

Android教程-从零开始一步一步接入SDK

从零开始一步一步接入SDK 本篇博客想总结一下笔者在接入手游渠道SDK的一些经验方法,为想接入手游渠道或者想学习如何接入SDK的童鞋们提供一个参考。本篇博客基于Android平台,关于IOS接入SDK的方法,笔者以后有机会也会整理。 首先来给大家说明一下SDK,何为SDK?它的全称是,SoftWare Develop Kit,意思是软件开发工具包,它是可以辅助我们去开发某类软件的相关文档,范...

weiyinchao88 1193

91助手SDK快速入门

91助手SDK专为PC+手机软件开发商提供跨平台设备应用安装及数据管理解决方案。接入SDK,进行简单的开发,您的 PC软件就可以实现为用户手机安装移动版应用和数据管理的强大功能。

cocos2dx3.15接入微信SDK实现登录和分享android studio2.3.3

cocos2dx3.15接入微信SDK实现登录和分享android studio2.3.3,首先开始呢,我必须得吐槽一下网上的教程以及微信开放平台官网,网上的教程主要是太老了代码虽然都能用但是不完整有的东西已经改了,官网就不用说了,文档垃圾,是很垃圾。参考作用几乎等于没有,唯一作用就是查看返回值以及一些参数有什么用。嗯对的。没话说。 现在开始教程: 第一步: ?

TheClimb的池塘 2224

91市场版本打回的bug闲聊

前言 今天收到91市场打回来的列表,其中有4个问题,第一个是敏感词,第二个是更新的细节问题,第三个是一个没看懂的bug描述,第四个是服务器策略返回数据导致的误解。第二个问题真是坑了我很久。稍微讲下更新的细节问题。 问题描述 大致的意思是:打开程序后,跳出提示有新版本,然后马上出现了用户登录界面,当输入密码登录或者取消后返回时又出现了升级提示。按照91的流程,在有更新提示的界面和登录的界面不能

2054

cocos2d-x 移动MM平台SDK接入

cocos2d-x版本:2.2开发平台:Windows官方Wiki介绍了如何接入第三方SDK, 不过是英文的, 我在此更详细的介绍下. 官方Wiki地址:点击打开链接 打开ADT(Android Develop Tool, 就是你用来开发Android的Eclipse), 导入cocos2d-x/plugin文件夹下的所有项目, 如图: 这些项目中项目名Hello开头的都是官方的示例, 其中He

克劳德D的开发日志 3335

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位。那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能。然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题。今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos...

weixin_30682127的博客 106

91助手android

android真机调试,一款很好的手机软件,不用安装驱动

Cocos2dxandroid版本的build.xml驯服记

--> 目录初始化....

epeaktop的专栏 1751

Using NDK-STACK to Debug Cocos2dx Android Project

‘ndk-stack’ is a simple tool that allows you to analyze stack traces as they appear in the output of ‘adb logcat’ and replace any address inside a shared library with the corresponding:values.In the ou

Extended Studio 838

cocos2dx工程android-studio的build.gradle的写法

1 apply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 22 5 buildToolsVersion "22.0.1" 6 7 defaultConfig { 8 applicationId "org.coco...

weixin_30412577的博客 269

cocos 编译android,cocos2dx-3.17无法编译android

Creating configuration testReleasePublishCreating configuration testReleaseProvidedCreating configuration testReleaseWearAppCreating configuration testReleaseAnnotationProcessorCreating configuration ...

weixin_34036667的博客 686

quick-cocos2d-x 接入支付宝(android)(转,待验证)

quick-cocos2d-x 实现在lua里面完成android支付宝的接入 一、支付宝注册是很麻烦的一个过程,本文就不解释了,想了解的去官网看下注册流程。然后下载他们的sdk-WS_SECURE_PAY_SDK。 二、开始集成。 1、在eclipse里面导入alipay的工程库WS_SECURE_PAY_SDK/paydemo/Android_SDK/alipay_lib ...

weixin_30770783的博客 129

android ndk r12d,Using NDK-STACK to Debug Cocos2dx Android Project

‘ndk-stack’ is a simple tool that allows you to analyze stack traces as they appear in the output of ‘adb logcat’ and replace any address inside a shared library with the corresponding:values.In the o...

weixin_33369808的博客 186

Cocos2d-x PluginX (一)使用手册

原文: 简介 Plugin-x是cocos2d-x最近版本中引入的特性,旨在解决第三方SDK接入的问题,最大程度的简化接入工作,增加可重用性。第一部分主要介绍PluginX如何使用,不涉及设计原理相关内容。 ${cocos2d-x root}\plugin 目录下是PluginX所在位置,从设计和相关文档看感觉这东西相当复杂,但实际上使用起来非常简便。(复杂的设计

胡老哈的学习记录 1785
上一篇: cocos2dx 中 Android NDK 加载动态库的问题
下一篇: 浅谈下Android的多渠道打包
Sozell
博客等级 码龄22年 51粉丝 104原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值