精品教程|Cocos Creator如何集成 AnySDK?
今天由技术大牛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?相关推荐
- cocos creator 3d 3.0《懒猫跑酷》 实战开发教程
文章目录 01搭建开发环境hello world 02 导入3D资源,搭建游戏场景 03 控制猫移动 04生成无缝地图 05生成障碍物和鱼 06 碰撞检测+动画编辑器 07 UI模块和UI适配(位图字 ...
- Cocos Creator:高效率内容生产,引领全平台制霸!
「深圳站」沙龙已经圆满落下帷幕,很高兴和大家因为同一个理念:「让游戏开发更简单」而得缘相聚于此. 在此,我要代表 Cocos 特别感谢不远万里专程赶来参会的朋友:感谢探娱和独角兽两位协办方的赞助和大力 ...
- cocos creator上线appstore的脚印
话说最近用cocos creator弄了个作品,很早就作品完善了,然后提审appstore.那么坑就来了. 各种杯具,特此记录,望小伙伴看到后立刻从坑里爬出来. 1.第三方支付 cocos creat ...
- Cocos Creator 3D v1.0.2 正式发布,新增小游戏平台支持
Hi,各位开发者,Cocos Creator 3D 为大家带来翘首以待的新平台和新功能支持,v1.0.2 已正式发布,欢迎大家移步官网下载使用! 升级之前请根据项目情况进行必要的技术评估和版本备份噢 ...
- 微信小游戏开发之Cocos Creator使用微信云开发和微信开放能力
主题 Cocos Creator集成微信云开发和调用微信开放能力 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有 ...
- 【更新至 11P】Cocos Creator 3D 官方中文视频教程
为了帮助各位开发者更快上手 Cocos Creator 3D 的使用,开发出好玩优质的 3D 游戏作品, Cocos Creator 3D 引擎开发工程师放空结合 3D 休闲小游戏案例<快上车 ...
- Cocos Creator快速开通联网服务教程
继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...
- Cocos Creator | 飞刀大乱斗开发教程系列(二)!
点击上方蓝字关注我 预览效果 具体内容 ■ 这一期,主要讲解主页中间人物效果的实现.也就是,在下方列表选择不同人物,上方显示不同的人物,播放不同的效果,即下图的效果实现,此部分也是采用预制 Prefa ...
- Cocos Creator快速开通Matchvs联网服务教程
继集成Egret编辑器工作流后,在最新的Cocos Creator v2.0.7 版本中, Creator服务面板也集成了游戏服务器引擎Matchvs的联网服务.现附上开通教程,方便大家更快上手. 1 ...
最新文章
- Android 跳转Activity 的时候出现闪屏问题处理
- 黑马-程序员C#泛型简介
- 信息学奥赛C++语言: 直角三角形
- ubuntu16.04安装jekyll 3.3.1
- js获取单选框里面的值
- python图书馆管理系统 面向对象_python---面向对象程序设计之图书管理系统
- Hibernate (load PK get and list PK iterator )
- 常用正则表达式及基础语法
- android真机调试
- python tkinter教程-事件绑定_详解python tkinter教程-事件绑定
- Mybatis官方文档地址
- 毕业设计之 --- 基于java web的旅游网站设计
- 姜小白的Python日记Day13 jason序列化与开发规范
- 已解决:Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy
- python统计中文字数_用 Python 统计字数
- plc控制伺服电机 四轴攻丝机案例(包含伺服接线图)
- 使用table2excel做excel表格下载
- 【玩转嵌入式屏幕显示】(四)TFT-LCD屏幕显示英文字符(ASCII)和字符串
- mysql修改密码报错:Your password does not satisfy the current policy requirements
- OJB和Hibernate框架的评议一