如何用AnySDK快速接入SDK上线

from :http://www.cocoachina.com/cocos/20141031/10109.html


主持人:接下来有请AnySDK陈峰分享一下AnySDK。

陈峰:我叫陈峰,今天我给大家带来一款产品叫做AnySDK,我们认为它是当前市面上最好的本地打包工具,这里的打包指的是打渠道包。

做 两个调查,第一,有接过渠道SDK的程序员举一下手?目测至少超过一半。我讲这句话之前有听说过AnySDK的产品举一下手?至少有三分之一。有做过渠道 打包的同学都知道打渠道包是件挺头疼的事,接一个还OK,接两个就算了,接三个忍一忍,接十个,二十个那就是要崩溃的节奏,现在市面上渠道SDK数量是一 个动态的,可能今天突然冒出两个,明天曾经接过的SDK说我不做联运了,这个SDK不再使用了,所以SDK数量每天都在变,但是我们粗略统计一下单渠道 SDK就至少超过50个,应该在55到65个之间。第三方功能SDK就更不计其数 。就按照52个来讲,假设我们有一款游戏准接52个渠道,按照之前调查,接一个SDK需要的时间平均需要5个工作日的时间,再加上测试基本上一个星期的时 间。 52个SDK,意味着要接52周,就是12个月,也就是一年的时间。但是做一款手游的开发周期最短三个月,标准八个月到一年,超过一年的游戏除非大作,从 数量上来讲相对比较少,那么就意味着这些游戏开发是一年,接SDK也要一年,这个成本占比是非常巨大的。采用AnySDK来做接入,接入AnySDK大概 是5个工作日,生成每个渠道包大概5分钟的时间,还按照52个SDK来计算的话,所需时间大概是7天,也就是1/4人月的时间。这是AnySDK给大家带 来效果上的表现。

如果没有了解过这个产品的同学可能就会问,AnySDK是干什么的?我最经常被问到两个问题,第一个是:你们是不是做 SDK的,我现在有用户也想做联运,你能不能帮我做一个SDK。我说对不起,我们不是做SDK的,我们是做SDK接入工具的。第二个是: 我今天看渠道的要求里是说不允许采用第三方SDK,那么我就不能用AnySDK。这也是一个误解,首先我们不是第三方SDK,如果把所有SDK比喻成螺丝 钉,要把螺丝钉拧到木板上,之前没有工具的时候用手拧,可以拧进去,但是会比较累,比较慢。而AnySDK是把螺丝刀, 是把螺丝快速拧紧的工具,我们并不是第三方的SDK,当然我们不满足于做一把螺丝刀,而是电动螺丝刀,更快更有效率的把螺丝拧进去,这就是AnySDK的 目标,所以我们才能达到5分钟打一个渠道包。而之前每个渠道包都需要五天,并且是程序员每天加班加点到十点。现在一切改变了。

看一下接入的 效果,这个截图是吴昊春季开发者大会用的3D打飞机的界面,接完SDK以后,比如这是一个登陆的界面,这个界面是纯原生的,没有任何美术的修改。我们接完 之后产生了这个界面,因为接完SDK之后没有打包之前,这个包是不包含任何渠道SDK或者是第三方SDK,所以不可能显示出第三方的登陆界面,有了这个界 面,大家调试的时候就可以看到接的对不对,同时,我们也有一个模拟支付系统,自己最早做游戏接SDK时,把程序写完还不一定成不成,需要充值。通常程序员 自己进行测试,有时需要5块自己就充值了。但是时间久了,充值数多了大家也会有小小的意见,我们做这个东西就考虑了这一点,测试的时候可以用虚拟的游戏 币,后台自己给自己加钱,在你虚拟的情况下测试通过后,再去打渠道包,这两个界面是打包出来以后的界面,就是母包不用动代码经过工具产生两个新的包,每个 包点同一个登陆按纽就产生这样的效果,这个游戏里接的是当乐SDK,这个是接百度游戏SDK,当然不能说所有东西做完程序之后不测试就直接上线。

我 们是如何达到这个效果的呢?AnySDK这个名字有点理想化,Any是“任意”的意思,我们当然不可能做到真正“任意”,因为SDK实在是多如牛毛,不可 能达到完整的“任意”。我们现在达到什么效果呢?现在支持用户系统42个,支付系统43个。用户和支付系统两个加起来是渠道SDK,支付系统这边多了一个 支付宝,因为支付宝是独立的,没有用户系统,所以这边是多了,这两个合起来是渠道SDK,我们还支持广告SDK,推送SDK,统计分析SDK,社交分享 SDK等。基于这些背后的支持,我们才能达到相对的Any。

AnySDK的交付物总共有三个部分,第一是Framework,类似于大家从 渠道拿到SDK,然后接入SDK以后编出来的包是母包。第二部分是Package,我们有一个本地化的打包工具。第三部分是Server,这是很重要的部 分,帮助开发者统一中转渠道通知消息 。现在Framework已经支持五种语言,包括C++、JAVA、JS、LUA。我们最核心的是使用C++很大一个原因是为了支持更多的跨平台,如果没 有特殊情况的引擎,C++语言的几乎不会有太大问题。

几个界面的展示,这是本地打包工具的界面,选取了游戏管理的界面,还有一个细节,这边 会有一个Keystore选择,但是这个Keystore是不会上传到我们的服务器上,意味着如果在第一台电脑上设置过文件密码,放在第二台电脑打包以后 会提示没有,所以必须要手工拷过来,这主要是为了保护大家的核心资产而设计的。

还有一个防止二次打包做的设计,AnySDK在方便了大家打 自己家的渠道包,同时也会方便了一些恶意的第三方修改你家的渠道包,所以通过一些手段来确保自己的包只能自己打,别人打出来是不可执行或者是不可用,或者 能运行,但是运行完不能支付之类等,我们设置了非常多的门槛,基本上很难破解渠道包。

第二个叫渠道管理,还有一个是SDK管理,渠道和 SDK两个并没有绑死,触控可能相对比较强势一点,在跟某些比较弱势渠道在谈的时候,触控可以要求不用渠道的SDK,而是用触控的SDK或某个指定的支付 系统在渠道上线,这时在SDK管理这边就可以换,意味着SDK和渠道是分开的。

第二个界面是SDK选择,每个渠道选择某些SDK,除了渠道 SDK之外还有支持广告、推送、统计,那些都是在这边选的。前面几个大的渠道都不会接广告,更小一些渠道是允许某些游戏接广告SDK的,勾上就可以了,打 的包就有广告效果了,如果不允许勾掉就可以了,所以对程序员来说就是灵活自由方便。

后面这个是一个相对比较复杂的界面,SDK拿过来以后,它会有很多的参数要填,包括APPID、APPKey,还有通知地址等等,这个可能比较复杂一点,但是这些参数填一次后基本上不会变了,就可以直接打包了 。

看 这个界面,这是很方便帮助大家的地方,我们有很多渠道要求在游戏图标上添加一个渠道的角标,首先这个角标要放进去,其次角标还有位置之分。有四个方向,还 可以通过滚动条进行微调,比如3D效果可以微微调整一下放在边框里面。其次是看不见的效果,我要求你选择512×512像素的图,因为安卓要求很多尺寸图 标,有72的,有114的等,在这里输入512的,选择一下角标的位置,AnySDK会把各个尺寸都一次性生成,包里就会有完整的角标了,虽然技术含量没 有多少,但是可以为大家提供方便,相对来讲这是一次性的事情。然后开始进入打包的过程。下面有些是红色的字,表示有配置信息不完整,参数不完整就不让打 包。下来这边会显示一些信息,还有你刚才选择SDK的列表。这些事做完以后开始准备打包。

这是打完包的界面,打完包后可以看到安装、卸载等 按钮,最重要是安装,这是一个本地打包工具,是装在你自己电脑上的,意味着你拿一部测试机,拿一个数据线插在电脑上,然后在这边点“安装”,我们的客户端 就会把你刚才打包的程序直接装到手机上就可以直接测试。相对于云打包方式方便非常多,云打包方式还要把这个包从本地传上去,然后再从云上下载下来,如果一 个游戏100M的话,上传的量是100M,下载量将是100Mx10=1G,这是一个巨大的量。虽然我们是软件公司,高科技公司,但是很多公司的网速相对 挺有限的,所以想下1G的量没有那么顺畅。打包完在电脑上直接安装非常快,就不需要做额外的工作。如果测试通过就点“通过”,如果不通过就点“不通过”, 后面完成的时候不通过的重新打包就可以。

第三部分是Server,接过渠道服务端的同学都会知道,每一家渠道都要接,因为每家渠道的参数、 格式,甚至有些细节要求都是不一样的,每家都要接一次。AnySDK在这里起到什么作用呢?AnySDK在中间,所有渠道通知到AnySDK这边 来,AnySDK给GameServer是统一的消息,比如你很喜欢交朋友,交了十个朋友,还是全球各地的,如果你要跟你的朋友沟通怎么办?有两种选择, 第一种选择是学10种语言,学完以后跟每个朋友用不同语言交谈。第二种是拿一个翻译软件,再狠一点可以请翻译,你跟翻译说普通话,翻译再将10种语言翻译 成普通话。Server和AnySDK中间通讯是普通话,AnySDK和渠道交流采用的是全世界各种语言。

AnySDK有了这个东西怎么去 用,使用的复杂性和使用步骤怎么样?整体来说只要六步,首先是下载,因为是本地的打包工具,不是网页式的,所以比别人麻烦非常多,需要整个下载下来,而且 包有一百多兆,但是请放心,一百多兆是电脑上的,不会把一百多兆打到游戏里。第二步是把AnySDKFramework接入到项目中,生成母包。第三步是 服务端程序员接入,这两个工作是并行的,总共加起来是5天的时间。之后通过工具生成各个渠道包,每个运行时间大概是5分钟,很重要一点是测试过才能提交。

前 面讲的内容是我每次出去演讲都会讲到的,今天因为第一次来到这么大场地讲,我上台前临时加了两页PPT,是两个秘籍, 秘籍之一是命令行直接调用,有两个很重要的使用场景,第一是第三分GUI工具调用,我知道现在很多游戏开发商自己在做游戏的同时为了从长远角度考虑,为了 节省工作时间,为自己开发很多工具,这些工具可以在工作流过程中直接调AnySDK,刚才吴昊介绍CocosIDE现在可以直接调SDK了。第二条是企业 内网服务器自对化打包,例如ant、jenkins等。

秘籍之二,前面讲到服务端的部分流程是所有的渠道把所有的数据先通过SDK,但是有 一个疑问,数据都通过AnySDK来中转,不就是意味着两个问题:1、这是串联的,AnySDK的服务器挂了是不是游戏就挂了,答案是“是”;2、游戏的 数据都要过AnySDK,是不是AnySDK都知道游戏的小秘密,答案是“是”。我们提供了一套解决方案:服务端跟客户端独立使用,你可以独立使用我的客 户端,反过来也可以独立使用我的服务端,当然我还是建议同时使用,如果独立使用客户端的话,数据中转可以直接通过你的服务器而不是通过AnySDK服务 器。还有一些我们当前在接比较大型的游戏,已经上过十个渠道了,不想再重新做一遍,当然可以,老游戏在接的时候原有做过的渠道很稳定,还是用原来的服务 端,新渠道走AnySDK的服务器,就是客户端和服务端分开来使用。

现在讲一下AnySDK几个里程碑,5月8日第一次发布,当时心里也没 有太大的底,因为当时AnySDK前面没有类似的可以参考的产品,所以就没敢宣传,我就找了几个做游戏的朋友让他们接AnySDK上线整个流程跑了一圈, 当时效果还可以,然后5月30日才正式发布,6月份稍微做了一些宣传,然后就开始有更多游戏开始接入。然后我们就发现又有一个问题就是服务器的稳定性,我 们也开始担心服务器万一挂了怎么办,王哲经常教育我,服务器挂一次你的用户就走了,而且永远不可能回来,后来在6月份的时候我们做了热冗余,而且是双机房 的冗余,在北京两个不同的机房各布的两套系统,主机房的主系统挂掉备用设备会接管,主机房断网、断电了,备用机房会自动接管服务,我们通过这种方式确保服 务器的稳定性,确保我们能够提供持续的服务,所以6月5日上线之后心里的石头终于落了下来。

我们这两天在做一个事情是iOS版,今天已经有 一个基本可以运行的版本,但是为了更稳定一点现在初步定的是11月1日会正式对外提供下载。iOS版支持了越狱版和App Store版,首次会支持谷歌、App Store等。iOS版和安卓版是统一一个打包工具,区别就在于会有一个版本的选择,包括API部分也不变,中间 大部分事情是互相通用的。另外大概在11月10日我们会发布企业版,这种方式是会提供一套部署的服务器给你们,你们自己拿服务器来部署,程序还是用我们 的,但是服务器稳定和数据安全由你们自己来保障,因为服务器是你们自己的服务器或者是自己租用的服务器,我们就没有任何的读写权限去看数据和修改你们的服 务器,当然这个版本是收费的。企业版和通用版将会永远的并行,不会因为推出企业版就会弱化通用版或者是不支持,通用版也是一样升级,而且付费和免费的部分 没有捆绑,可以用付费也可以用免费。

这是企业版后台的界面,企业版客户端还是一样的,只是运行时数据中转是不一样的,所以它是服务端的产品。

下 一件事情比较狠,是很多开发者比较期待的,叫做“插件自定义开发”,现在插件都是我们开发的,会碰到两种情况,第一、你们不认同我们开发的插件,比如我们 对渠道认识要求不一样,你们觉得这样,我们觉得这样,按照我们的认识去做了,做完以后你们不认可我们又不愿意改怎么办?你们自己可以开发。第二,渠道 SDK经常更新,一更新完以后你们就要等我们把SDK更新,插件也更新才能打包,我们要是来不及,你们明天就要上线,你们可以自己开发,不需要等我们,这 是在12月份下旬时候会开放这种服务,每个人都可以是一个插件程序员。这是短期之内重点要做的不一样的东西,希望给大家带来更多的方便。

AnySDK 不光是一个产品,是一整套服务,一个成功的产品一定是产品加服务,所以我们建立了两个QQ群,2群群号是:368727152,有一个网 站,www.anysdk.com,我们还有一个更直接的方式:0592-5919107。还有微信公众号:AnySDK,有一些信息会在微心公众号发 布。谢谢大家!

提问:AnySDK以后会接入第三方SDK吗?

陈峰:会,我们现在有六大类,现在很多客户在向我们要增量更新,我们会在已有的类别上持续的增加。我们现在会比较注重国内的SDK,从明年开始会有海外的SDK。

提问:因为我们编译过程当中不知道用哪个渠道?

陈 峰:您是担心我在做打渠道包的时候,实际把包里某一个开关打开,APK有三个渠道SDK,我现在要用91把91打开,另外两个是关掉。AnySDK不是这 样做的,AnySDK在你打母包的时候里面没有任何第三方SDK,我们在打包的时候才把SDK塞进去,而且塞什么取决于你之前选什么,你选择91,打开这 个包就只会有91的SDK。

提问:对于安卓很好理解,对于IPA怎么操作的?

陈峰:IPA不允许动态改变任何东西,所以我们是用编译的方式来做。

提问:AnySDK长远有没有可能支持ANE的计划,在游戏上直接可以用AnySDK。

陈峰:长远的东西不太好讲,短期之内没有计划,有两点,因为Flash游戏本身不是特别多,我们把现有的力量服务于更多人群。第二,我们已经有客户通过JAVA的方式来完成,你们也可以试试,所以短期内是没有计划来做这个的。

提问:你们打包的时候有应用宝吗?

陈峰:应用宝做第一轮测试了,顺利的话在11月份第一周左右可能会发布。

提问:请问AnySDK怎么实现防打包的?

陈 峰:我们自己发现这个问题以后讨论解决方案的时候就想怎么保证它的安全,我就做了一个决定,AnySDK产生出来包的安全风险程度不要超过大家手工打包的 安全风险程度,所以我们 在C++层面写了一些加密的数据,相对来讲不好去破解,但是不是不能破解。第二点是采用的加固功能,打完了包通过AnySDK客户端直接加密,希望通过加 密的方式来反解包,因为我们自己团队真的不擅长做这个。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值