今天由技术大牛Eddy为大家介绍怎么在 Cocos Creator 项目中集成 AnySDK 。

开发环境

CocosCreator 1.1.1, AnySDK 2.1.2, AnySDK_Framework_JS_Android_2.1.2, MacOS 10.10.3

集成 AnySDK 详细步骤

由于本人使用 git 对项目进行版本控制管理,所以下列步骤中会有一些与 git 相关的操作。如果你没有使用 git,那么你可以直接忽略下列步骤中与 git 相关的操作。

获取 AnySDK Framework

安装 AnySDK 客户端,然后在 AnySDK 客户端的【安妮市场】【分类】【框架】中找到 JS(Android) 框架并下载。如下图:

下载完成后打开 JS(Android) 框架文件夹即可看到 AnySDKFiles/Store/Frameworks/AnySDK_Framework_JS_Android_2.1.2/AnySDK_Framework_JS(Android)/ 这样的目录。如下图:

下文统一使用 AnySDK_Framework_JS(Android) 指代 AnySDK Framework 文件目录。

构建并编译 CocosCreator 项目

下文使用 your-proj 指代你的 CocosCreator 项目路径。

修改项目中的 gitignore 文件

删除 your-proj/.gitignore 文件中以下路径:

build/

在 your-proj/.gitignore 文件中添加以下路径:

build/jsb-default/src/

build/jsb-default/res/

build/jsb-default/publish/

build/jsb-default/simulator/

build/jsb-default/frameworks/runtime-src/proj.android/bin/

build/jsb-default/frameworks/runtime-src/proj.android/gen/

build/jsb-default/frameworks/runtime-src/proj.android/obj/

build/jsb-default/frameworks/runtime-src/proj.android/assets/

build/jsb-default/frameworks/cocos2d-x/cocos/platform/android/java/bin/

build/jsb-default/frameworks/cocos2d-x/cocos/platform/android/java/gen/

构建发布 Android 平台

使用 CocosCreator 打开项目,点击 【项目】【构建发布】,发布平台选择 “Android”, 模板选择 “default”。然后点击 “构建”按钮 对项目进行构建。构建完毕会在 your-proj 目录下生成一个 build/jsb-default/ 目录。

构建完成后,点击 “编译”按钮 对项目进行编译,编译过程大概20分钟左右。编译完成后,安装编译生成的 apk 到手机上查看是否运行正常。

如果在构建和编译过程中出现错误,请参考 CocosCreator 官方的跨平台发布游戏文档。

注意:该步骤中的编译操作并不是必须的,只是为了保证你的编译发布 Android 平台相关开发环境已经配置完成。这样在集成 AnySDK 的出现错误的时候,就可以排除开发环境配置相关的问题了。

获取 AnySDK jsb 绑定文件

1.添加 AnySDK jsb 文件

在 build/jsb-default/frameworks/cocos2d-x/ 目录下新建 anysdk 文件夹,然后拷贝 AnySDK_Framework_JS(Android)/ 目录下的 src 文件夹到新建的 anysdk 文件夹中。

2.修改 build-cfg.json 文件

在 build/jsb-default/frameworks/runtime-src/proj.android/build-cfg.json 文件中添加:

{

"from": "../../cocos2d-x/anysdk/src",

"to": ""

}

如下图,注意:不要遗漏了添加代码前面分隔的逗号 “,”。

修改 jsb.js 文件

在 build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/script/jsb.js 文件中添加:

if     (jsb.fileUtils.isFileExist('jsb_anysdk_constants.js') || jsb.fileUtils.isFileExist('jsb_anysdk_constants.jsc')) {

if (cc.sys.os == cc.sys.OS_IOS || cc.sys.os == cc.sys.OS_ANDROID) {

require('jsb_anysdk_constants.js');

}

}

if (jsb.fileUtils.isFileExist('jsb_anysdk.js') || jsb.fileUtils.isFileExist('jsb_anysdk.jsc')) {

if (cc.sys.os == cc.sys.OS_IOS || cc.sys.os == cc.sys.OS_ANDROID) {

require('jsb_anysdk.js');

}

}

如下图

拷贝anysdk framework stl库

1.添加 protocols 文件

首先,查看所接入项目的 build/jsb-default/frameworks/runtime-src/proj.android/jni/application.mk 文件第一行找到 stl 库类型设置。 如下:

APP_STL := gnustl_static

然后,进入所接入项目的 build/jsb-default/frameworks/runtime-src/proj.android 目录,新建 protocols 文件夹。根据上面查看到的stl类型,选取 AnySDK_Framework_JS(Android)/framework/protocols_gnustl_static/ 库,然后将该目录下的 android 和 include 文件夹拷贝到 protocols 目录下。

2.添加 libPluginProtocol.jar 文件

在 build/jsb-default/frameworks/runtime-src/proj.android/ 目录下新建 libs 文件夹,然后将 build/jsb-default/frameworks/runtime-src/proj.android/protocols/android 目录下的 libPluginProtocol.jar 文件移到 libs 目录下。

3.添加 res 文件

将 AnySDK_Framework_JS(Android)/framework/protocols_gnustl_static/ 目录下的 res 文件夹,拷贝到 build/jsb-default/frameworks/runtime-src/proj.android/ 目录下,注意选择合并,避免文件覆盖。

添加 Classes 文件

将 AnySDK_Framework_JS(Android)/3.10及以上/ 目录下所有文件,拷贝到 build/jsb-default/frameworks/runtime-src/Classes 目录下。

由于 CocosCreator 1.1.1 版本的 jsb 和 1.0 版本的 jsb 有所区别,所以 jsb_anysdk_protocols_auto.cpp 文件需要进行相关的修改。由于改动的地方较多,在这就不一一列出了。请到下面的地址下载或复制:

[jsb_anysdk_protocols_auto.cpp ](

https://github.com/eddy2015/anysdk-files-for-ccc/blob/master/jsb_anysdk_protocols_auto.cpp3) 文件,并替换原来的文件。

修改 AppDelegate.cpp 文件

在 build/jsb-default/frameworks/runtime-src/Classes/AppDelegate.cpp 文件中添加:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#include "jsb_anysdk_basic_conversions.h"

#include "jsb_anysdk_protocols_auto.hpp"

#include "manualanysdkbindings.hpp"

#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

sc->addRegisterCallback(register_all_anysdk_framework);

sc->addRegisterCallback(register_all_anysdk_manual);

#endif

如下图:

修改 Android.mk 文件

在 文件中添加 build/jsb-default/frameworks/runtime-src/proj.android/jni/Android.mk 文件中添加:

注意:记得在 ../../Classes/AppDelegate.cpp添加 “\”。**

修改 main.cpp 文件

在 build/jsb-default/frameworks/runtime-src/proj.android/jni/hellojavascript/main.cpp 文件中添加:

#include "PluginJniHelper.h"

using namespace anysdk::framework;

JavaVM* vm;

env->GetJavaVM(&vm);

PluginJniHelper::setJavaVM(vm);

如下图:

修改 AndroidManifest.xml 文件

在 build/jsb-default/frameworks/runtime-src/proj.android/AndroidManifest.xml 文件中添加 AnySDK 所需要的权限:

在项目中使用AnySDK

1.获取 AnySDK 参数

打开 AnySDK 客户端,点击 【打包工具】【游戏列表】【添加游戏】来在 AnySDK 客户端添加游戏项目。添加成功后,就可以获取到使用 AnySDK 需要的参数:appKey、appSecret、privateKey。

2.在项目中添加 AnySDK 功能代码

下面给出了我在使用 AnySDK 用过的相关功能代码供大家参考。AnySDK 具体用法请参考官方的客户端接入(JS)文档。

// 初始化AnySDk

initAnySDK: function () {

cc.log("WelcomeScreen.initAnySDK()");

if (cc.sys.isMobile) {

//注意:这里appKey, appSecret, privateKey,要替换成自己打包工具里面的值(登录打包工具,游戏管理界面上显示的那三个参数)。

var appKey = "23BEE66E-48A1-9BF0-CF4A-4DA25FF54082";

var appSecret = "b3d0c6f406c1f7d097f2036f445589b4";

var privateKey = "FC69F26761B6C3BEDFCDA8A2D248CC45";

var oauthLoginServer = "http://oauth.anysdk.com/api/OauthLoginDemo/Login.php";

var agent = anysdk.agentManager;

//init

agent.init(appKey, appSecret, privateKey, oauthLoginServer);

//load

agent.loadAllPlugins();

// 开启统计

cc.log("analytics_plugin.startSession();");

var analytics_plugin = anysdk.agentManager.getAnalyticsPlugin();

if (analytics_plugin) {

analytics_plugin.startSession();

}

// 开启推送服务

cc.log("push_plugin.startPush();");

var push_plugin = anysdk.agentManager.getPushPlugin();

if (push_plugin) {

push_plugin.startPush();

}

}

},

// 显示横幅广告

showBannerAd: function () {

cc.log("WelcomeScreen.showBannerAd()");

if (cc.sys.isMobile) {

var ads_plugin = anysdk.agentManager.getAdsPlugin();

if (ads_plugin.isAdTypeSupported(anysdk.AdsType.AD_TYPE_BANNER)) {

ads_plugin.showAds(anysdk.AdsType.AD_TYPE_BANNER);

}

}

},

// 显示插屏广告

showFullScreenAd: function () {

cc.log("showFullScreenAd()");

if (cc.sys.isMobile) {

var ads_plugin = anysdk.agentManager.getAdsPlugin();

if (ads_plugin.isAdTypeSupported(anysdk.AdsType.AD_TYPE_FULLSCREEN)) {

ads_plugin.showAds(anysdk.AdsType.AD_TYPE_FULLSCREEN);

}

}

},

// 统计事件

logEvent: function () {

cc.log("logEvent()");

if (cc.sys.isMobile) {

var analytics_plugin = anysdk.agentManager.getAnalyticsPlugin();

if (analytics_plugin) {

analytics_plugin.logEvent("click_logevent_btn")

}

}

},

// 退出游戏

onExitBtnClicked: function () {

cc.log("onExitBtnClicked()");

// 关闭统计

cc.log("analytics_plugin.stopSession();");

if (cc.sys.isMobile) {

var analytics_plugin = anysdk.agentManager.getAnalyticsPlugin();

if (analytics_plugin) {

analytics_plugin.stopSession();

}

// 在游戏结束或者适当的时候,调用unloadAllPlugins来卸载SDK插件

anysdk.agentManager.unloadAllPlugins();

}

cc.director.end();// 退出游戏

}

在项目中添加了 AnySDK 相关功能代码后,使用 Cocos Creator 编译出 Android APK 母包。

3.生成渠道包

在 AnySDK 客户端配置好游戏的渠道、SDK等参数,然后使用上一步骤编译出来的 Android APK 母包生成集成了 SDK 的渠道包。

在这里就不详细说明 AnySDK 客户端的使用了,详情请参考 AnySDK 的官方文档。

如果快速集成 AnySDK

我在 GitHub 上面分享了一个便于在 CocosCreator 项目的 Android 平台快速集成 AnySDK 的项目:anysdk-files-for-ccc2 。具体使用方法请参考该项目的 README.md 文件,这里就不详细说明了。

地址:https://github.com/eddy2015/anysdk-files-for-ccc

总结

本文主要讲解了如何在 CocosCreator 项目的 Android 平台集成 AnySDK ,并提供了一个快速集成方法。iOS平台请参考 AnySDK 的官方文档自行尝试。

更多信息请参考Eddy’s Blog:

http://eddy2015.github.io/blog/2016/06/22/ccc-plus-anysdk/

你可能还喜欢的文章

一大波实习岗位来袭 让你的夏天与众不同

Cocos Creator v1.1.1 发布 新增图片资源重定向工具

精品教程|Cocos Creator如何集成 AnySDK?相关推荐

  1. cocos creator 3d 3.0《懒猫跑酷》 实战开发教程

    文章目录 01搭建开发环境hello world 02 导入3D资源,搭建游戏场景 03 控制猫移动 04生成无缝地图 05生成障碍物和鱼 06 碰撞检测+动画编辑器 07 UI模块和UI适配(位图字 ...

  2. Cocos Creator:高效率内容生产,引领全平台制霸!

    「深圳站」沙龙已经圆满落下帷幕,很高兴和大家因为同一个理念:「让游戏开发更简单」而得缘相聚于此. 在此,我要代表 Cocos 特别感谢不远万里专程赶来参会的朋友:感谢探娱和独角兽两位协办方的赞助和大力 ...

  3. cocos creator上线appstore的脚印

    话说最近用cocos creator弄了个作品,很早就作品完善了,然后提审appstore.那么坑就来了. 各种杯具,特此记录,望小伙伴看到后立刻从坑里爬出来. 1.第三方支付 cocos creat ...

  4. Cocos Creator 3D v1.0.2 正式发布,新增小游戏平台支持

    ​Hi,各位开发者,Cocos Creator 3D 为大家带来翘首以待的新平台和新功能支持,v1.0.2 已正式发布,欢迎大家移步官网下载使用! 升级之前请根据项目情况进行必要的技术评估和版本备份噢 ...

  5. 微信小游戏开发之Cocos Creator使用微信云开发和微信开放能力

    主题 Cocos Creator集成微信云开发和调用微信开放能力 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有 ...

  6. 【更新至 11P】Cocos Creator 3D 官方中文视频教程

    为了帮助各位开发者更快上手 Cocos Creator 3D 的使用,开发出好玩优质的 3D 游戏作品, Cocos Creator 3D 引擎开发工程师放空结合 3D 休闲小游戏案例<快上车 ...

  7. Cocos Creator快速开通联网服务教程

    继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...

  8. Cocos Creator | 飞刀大乱斗开发教程系列(二)!

    点击上方蓝字关注我 预览效果 具体内容 ■ 这一期,主要讲解主页中间人物效果的实现.也就是,在下方列表选择不同人物,上方显示不同的人物,播放不同的效果,即下图的效果实现,此部分也是采用预制 Prefa ...

  9. Cocos Creator快速开通Matchvs联网服务教程

    继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...

最新文章

  1. Android 跳转Activity 的时候出现闪屏问题处理
  2. 黑马-程序员C#泛型简介
  3. 信息学奥赛C++语言: 直角三角形
  4. ubuntu16.04安装jekyll 3.3.1
  5. js获取单选框里面的值
  6. python图书馆管理系统 面向对象_python---面向对象程序设计之图书管理系统
  7. Hibernate (load PK get and list PK iterator )
  8. 常用正则表达式及基础语法
  9. android真机调试
  10. python tkinter教程-事件绑定_详解python tkinter教程-事件绑定
  11. Mybatis官方文档地址
  12. 毕业设计之 --- 基于java web的旅游网站设计
  13. 姜小白的Python日记Day13 jason序列化与开发规范
  14. 已解决:Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy
  15. python统计中文字数_用 Python 统计字数
  16. plc控制伺服电机 四轴攻丝机案例(包含伺服接线图)
  17. 使用table2excel做excel表格下载
  18. 【玩转嵌入式屏幕显示】(四)TFT-LCD屏幕显示英文字符(ASCII)和字符串
  19. mysql修改密码报错:Your password does not satisfy the current policy requirements
  20. OJB和Hibernate框架的评议一

热门文章

  1. 简单的电脑使用和维护方法(肝货一)
  2. 2022世界杯漫谈与猜想,谁是你心目中的第一
  3. 动手DIY制作个人NAS(一):3D打印硬盘支架
  4. 百度Ueditor 富文本弹出层,如何保证点击空白处不关闭
  5. 漏洞挖掘——域名收集
  6. let,const和作用域
  7. PTA-输出倒三角图案
  8. HTML+CSS基础面试题总结
  9. java种List和Array的相互转换
  10. 30000亿市场规模亟待挖掘,适老化改造机遇和突破口在哪里?