cocos2d_x之AnySDK接入流程

进入官网根据相关文档下载好AnySDK  Framework
AnySDK介绍: 它并不是一款sdk,而是一个第三方平台,可以帮助你更快的接入其他sdk,比如QQ,微信登录,分享等。
此文档旨在帮助自己理清接入sdk的开发流程,让自己有一个大的方面的了解,因此只是写了大部分的目录,实际操作再去查看官方文档。

http://docs.anysdk.com/integration/client-cpp/quick-integration/

整个接入过程中,都要写全路径。极其容易写错,因此要特别注意。

把AnySDK导入cocos2d_x引擎中,步骤如下
1:选择AnySDK Framework文档并导入到工程目录
(1):查看游戏项目使用 STL 库的版本
       开发者可以在工程目录下 jni/Application.mk 文件第一行找到 STL 库类型设置,如果此处设置的是 APP_STL := gnustl_static,则表示当前工程以 GNU 静态库的方式引入使用 STL 标准库,此时应选择集成 protocols_gnustl_static 这个文件夹中的框架资源。反之,则选择相应的集成 protocols_stlport_static、protocols_c++_static 文件夹中的框架资源。
(2):在 Android 工程目录下面新建 protocols 目录,然后将上一步选择的对应版本框架目录下的 include 文件夹和 Android 文件夹拷贝到 protocols 下面
(3):将框架目录下的 res 文件夹中的所有资源文件拷贝到 Android 项目对应的文件中。


2:修改Android.mk文件配置Framework编译选项
这一步是修改游戏工程中C++代码的ndk编译配置文件Android.mk,将AnySDK提供的Framework库链接到游戏工程的库中。
(1).将 protocols 目录添加到 NDK_MODULE_PATH 环境变量中
(2).添加 AnySDK Framework 静态库声明
(3).添加库路径声明代码


3:导入框架自带的jar包并勾选export选项   --- 使用eclipse操作

4:配置 AndroidManifest.xml 添加框架需要的权限

5:初始化 AnySDK Framework

(1)初始化 JavaVM
首先,要在游戏工程加载 jni 的时候为 AnySDK framework 设置 JavaVM 引用。
先找到 JNI_OnLoad 函数,此函数是 jni 被加载时会首先被调用的函数。 以 Cocos2d-x 2.x 版本引擎为例,JNI_OnLoad 函数定义在 jni 目录下的 hellocpp/main.cpp 中
3.x版本:
#include "../../../proj.android/protocols/android/PluginJniHelper.h"  需要写全路径
using namespace anysdk::framework;
JavaVM* vm;
env->GetJavaVM(&vm);
PluginJniHelper::setJavaVM(vm);

2.x版本:

(2)在JAVA层初始化AnySDK Framework框架

(3)在 C++ 层初始化AnySDK Framework 框架

在C++层调用任何AnySDK Framework函数之前都需要调用init函数进行框架初始化,推荐在Java层初始化完成之后通知C++层初始化框架

在AppDelegate.cpp中加入如下代码:
#include "../proj.android/protocols/include/AgentManager.h"
using namespace anysdk::framework;

#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
std::string appKey = ""; "EC0BF947-8319-961E-10BB-BC9F3B9F964D";
std::string appSecret = ""; "5206485e6eb057be05fae504e4a4fc16";
std::string privateKey = ""; "21585140EC6B4DAE9067586B7C4E1B69";
std::string oauthLoginServer = "http://oauth.anysdk.com/api/OauthLoginDemo/Login.php";

AgentManager::getInstance()->init(appKey, appSecret, privateKey, oauthLoginServer);
AgentManager::getInstance()->loadAllPlugins();//注释掉会崩溃
////注:由于部分 SDK 在初始化时涉及到 SDK 闪屏的操作强烈建议在 onCreate 就调用 loadAllPlugins 接口(新框架在 Java 层也提供了该接口)
#endif

在主的activity中写入如下代码:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

PluginWrapper.init(this);
PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());
PluginWrapper.loadAllPlugins();

}

(4)加载及卸载SDK插件

到此为止AnySDK就全部接入完成了,接下来只需要在游戏中调用相关的SDK即可,比如需要使用分享SDK,就在要点击的那个分享按钮上,加上相关分享代码,。
http://docs-old.anysdk.com/ShareSystem
#include "../proj.android\protocols\include\ProtocolShare.h"   类要继承ProtoColShare
using namespace anysdk::framework;

#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
			auto _pShare1 = AgentManager::getInstance()->getSharePlugin();
			_pShare1->setResultListener(this);

			ProtocolShare* _pShare = AgentManager::getInstance()->getSharePlugin();
			if (!_pShare) return;
			std::map info;
			// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
			info["title"] = "ShareSDK是一个神奇的SDK";
			// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
			info["titleUrl"] = "http://sharesdk.cn";
			// site是分享此内容的网站名称,仅在QQ空间使用
			info["site"] = "ShareSDK";
			// siteUrl是分享此内容的网站地址,仅在QQ空间使用
			info["siteUrl"] = "http://sharesdk.cn";

			// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数,iOS下直接传文件名
			//info["imagePath"] = "123.png";  //该图片文件需要拖入Xcode工程中
			info["imagePath"] = "/sdcard/test.png";
			// imageUrl是图片的网络路径,新浪微博,人人网,QQ空间支持此字段
			info["imageUrl"] = "http://www.baidu.com/img/bdlogo.png?tn=63090008_1_hao_pg";

			// url仅在微信(包括好友和朋友圈)中使用
			info["url"] = "http://sharesdk.cn";

			// text是分享文本,所有平台都需要这个字段
			info["text"] = "ShareSDK支持如微信、新浪微博、腾讯微博等社交平台";
			// comment是我对这条分享的评论,仅在人人网和QQ空间使用
			info["comment"] = "无";

			//微信SDK分享需要使用到的参数
			info["mediaType"] = "1"; //分享类型: 0-文字 1-图片 2-网址  
			info["shareTo"] = "2"; //分享到:0-聊天 1-朋友圈 2-收藏  

			_pShare->share(info);
#endif

void WelcomeScene::onShareResult(ShareResultCode ret, const char* msg)
{
	log("onShareResult %d", ret);
	switch (ret)
	{
	case kShareSuccess://分享成功回调
		log("onShareResult success");
		//Director::getInstance()->end();
		break;
	case kShareFail://分享失败回调
		log("onShareResult fail");
		break;
	case kShareCancel://分享取消回调
		log("onShareResult cancel");
		break;
	case kShareNetworkError://分享网络出错回调
		log("onShareResult error");
		break;
	default:
		break;
	}
}


AnySDK上的操作:(打包的时候,sdk的配置可以随便写  ---  只针对分享类sdk)
http://docs.anysdk.com/rapid-experience/debug-user/

母包测试和账号获取

http://docs.anysdk.com/tool-using/package-tool/

客户端使用手册

----------------------------------------------------
SDK管理界面:渠道跟SDK是没有必然联系的。比方说你要在百度游戏这个渠道上进行上架,但是你使用的可能是360的SDK。
当然此处只是为了能更灵活的配置,正常来说百度游戏死活也不会同意你这么做。但你还是可能会使用shareDK,友盟等第三方辅助
SDK,这时便可通过本界面的勾选来配置需要使用的SDK来提升游戏的质量。

在确定了渠道以及使用的SDK之后,我们就要开始对SDK进行参数配置。

你可能感兴趣的:(cocos2dx)