阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 3667|回复: 0

[开发技术] 详解Android兼H5游戏SDK开发(原创)

[复制链接]

4208

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126189
QQ
发表于 2018-1-9 23:41:47 | 显示全部楼层 |阅读模式
     前不久入职于一家游戏研发公司,公司部门给我的开发需求是研发H5游戏SDK和对接H5渠道SDK(对于只有App研发的我来说,其中经历和酸甜苦辣那可真是一把鼻涕一把泪。不乏笔者牺牲周末时间去熟悉该业务的朋友公司向他取经讨论技术方案,画UML图等等),既然是完成需求,首先需要分析这个需求是用来做什么的,接下来在去考虑现有的技能点如何完成产品的需求。
    虽然更多的Android Developer倾向于APP研发(倾向,这个词形容的不是太好,因为APP依旧占市场主导地位),但考虑到未来的某些日子,一些哥们去了新公司也会遇到这种情况,而且要命的是网上可查询资料几乎是打广告,免费解决技术方案的参考实在太少(这根本不能符合我大Android集思广益忠于开源的灵魂好嘛)。所以这一篇不仅为未来有类似研发需求的朋友传道解惑,节约时间少走弯路,而且更主要的是揭开关于Android游戏SDK的神秘面纱。文章延续之前的风格,篇幅虽长,但力争写得清楚,也是方便各位看官清晰明了易于理解。(文章篇幅中会开源一套游戏SDK代码,细心读者慢慢研究吧)
概念一:游戏APK,到底是什么?
    和APP不同,我们编写APP一套代码测试编码无误后,打包上线推广维护即可,这就是APP研发流程;但是,游戏apk那就大相径庭(以下简称手游)了,因为手游使用到的技术是基于游戏引擎研发的,如unity3d,cocos2dx等等。你不可能说,哇,老铁没毛病我给你在Android Studio上去开发游戏。那么,作为Android开发,我们暂时先不研究游戏研发的具体内容,只关注Android本身即可。换个角度想,那些专门写游戏代码的哥们,也不知道你Android,ios怎么写(大牛技术狂魔除外哈),游戏技术只关注这个游戏场景怎么弄,怎么设计个帮派技能,怎样让你多充钱变的更强等等。那么,纯粹从技术的角度去分析游戏APK,介绍下我在公司的这些日子,个人对手游APK最简单的理解(原创公式,非喜勿喷):
                                        手游渠道SDK   +   游戏研发    =   手游  
渠道SDK:
    在Android开发中,有多渠道打包的概念。简单点说,apk需求完成以后,但需要给用户去下载去可以使用。用户下载使用体验有流量,有流量app才能赚钱盈利。但是你可能说,没事,咱家技术哥体力强技术棒轻松无痛苦在撸一个给用户下载的平台。当然,这是不可能的。因为你不仅要考虑怎样推广怎样运营还需考虑用户量的大小消费者对应用的偏好等等。
    引用下《猎场》的台词,找最专业的人,做最专业的事。这种聚集了一定用户量的平台,一般称为,渠道。通过渠道,就可以解决上面的问题。 比如,360手机助手,豌豆荚,应用宝等等,这些就是渠道(这种千万级的渠道也称大渠道)。所以,我们多渠道打包,打的就是渠道包,将这些渠道包,上架到对应的平台上,让他们上架APP,供用户下载使用体验即可。
    说完渠道,我们就开始说渠道SDK,上面说了,渠道会有很多家,大渠道如豌豆荚、应用宝这些,小渠道如,XXX、XXXX这些,既然是不同的渠道,那么每一家渠道就会有自己的数据后台以及相应的个性化设置。
    举个例子,应用宝和豌豆荚主要就是给用户去下载不同的apk,他们的核心都是是下载应用,主要功能如手机注册,登录,获取注册验证码等这些基本功能(也称为 接口)本质上也是一样的;不同点就是,他们的UI不同,后台架构,请求参数等等这些也不同。
    那么,渠道SDK就可以简单理解为(个人理解),在同一业务节点上,满足市面上相同业务的基本功能,但提供相对差异化的服务。(相对差异化的服务,简单理解就是UI和数据结构差异,并不能理解为功能上的大差异)。
    基于渠道SDK,在举个简单的例子加深其概念理解。当我们集成百度地图or高德地图;极光推送or信鸽推送;热云统计or TalkingData,这些第三方SDK的时候,他们主要完成的功能业务几乎都是一样的,比如地图主要是为了定位和出行方便;比如推送是为了吸引用户,唤起APP;再比如数据统计,是为了收集用户数据做筛选统计等;他们在某一块做着相同的事情,但他们是不同公司的产品(当然,也不排除换马甲的这种可能)也就是不同的渠道。不同的渠道做同一业务节点上SDK的研发,市面上对他们有个统一的说法,就是渠道SDK。
    SDK开发(SDK,英译汉过来就是,软件开发工具包),开发本质就是,隐藏内部实现细节,对外提供公共的访问方式(是不是很像封装)。但SDK需将逻辑结果告知调用者,这个接口的功能你是调用成功还是失败 ,成功以后你会通过SDK拿到什么样的数据等等。SDK开发的优点就是,拓展性较强。这里的拓展性不仅可以理解为,SDK是专注于为某一个功能模块提供一套完整的解决方案,减少各应用开发周期和难度,而且,可以为很多家想使用SDK的应用提供相同的技术方案,复用性较强。
游戏研发:
    说完渠道SDK,在额外拓展下游戏研发。游戏研发的内容一般是使用unit3d,cocos2dx等游戏引擎去完成研发内容,研发游戏的技术人员,刚才说了,这里我们不具体探讨他们的研发技术,这里只讨论他们的角色。换个角度想,做APP研发的时候,接入地图SDK是不是首先会在他们的渠道上面,申请我们自己开发应用的参数(比如 AppId,AppKey等),去激活使用这套SDK。参数配置完毕以后,然后,在具体场景的代码中,去调用该SDK逻辑。以登录场景,举个伪代码例子:
                                                    Sdk.Login();
    那么,当应用场景调用此功能(简称接口),就会调起SDK的登录。但是,上述伪代码是有问题的。设想,当手游开始时,首先肯定会唤起登陆接口(一般是先初始化,在调登录接口),但是,接入SDK的开发人员(也属于游戏研发公司的技术)怎么知道登录用户登录成功或登录失败?而且,实际开发场景是当玩家登录成功以后,游戏研发或者其他第三方(一般是聚合平台)还要去记录用户的信息(所以,玩手游呐,你的账号信息,支付信息会暴露给很多人......)。但是,SDK的内部逻辑是走他们SDK自家的服务器,你只是使用罢了。(你要说抓包,那也是呵呵哒,接口一个个抓,那岂不是抓到天荒地老)所以,为了解决此问题,SDK常用的做法就是通过接口回调的方式,将接口回调的结果告知调用者(也就是游戏研发),这个登录接口成功还是失败。另外,这里也说到了,因为游戏研发的内容,这里不做过多描述。
    因此,这里的游戏研发,具体是指,对接渠道游戏SDK的技术人员。
    需要注意的是,有些公司的SDK开发,不仅要写渠道SDK,也负责对接其他家的渠道SDK,这种情况也是有的。当然本文重点是突出如何编写渠道的SDK,所以我们这里先简单化,因此,开源的这套SDK也是一套Android渠道SDK。
概念二:H5游戏SDK
    说完Android在谈谈H5的游戏SDK。顺道说一声,最近在游戏领域H5游戏可谓是趋势刚猛异军突起,可能一说H5,程序猿思维就直接告诉我们,这不是写前端网页的嘛。没错,H5的确是写网页的,但是H5适配客户端的优势相较于之前Html的几个版本优势会更加明显。而且,H5游戏开发周期相对较短,灵活性较强。 我们知道,在Android加载H5只需要webview.load(url)即可,所以,现在市面上也很流行将H5游戏打包成Apk(是的,将H5打包成APK,一个包才几M,之前的游戏APK动辄百M,这样也为用户节省内存)网络环境较好的情况下,用户体验也比较流畅,那么,既然是H5的渠道游戏SDK,我们也来分析下其使用的技术栈。
    既然是H5,那么在纯粹的网页上,肯定会用到JavaScript(AJAX,JQuery)等技术。如果是打包成Apk,市面上常用的做法有如下两种,一种纯H5展示,还有一种即H5互调Android。因此,H5的游戏SDK一般分为两套(以下只是我个人的分析,若分析有误,请大家不吝赐教):一套SDK就是纯粹的JS,Android直接用webview加载url即可,所有的登录或支付全部是url内部完成;还有一套SDK就是Android调H5,H5调Android混合调用。第一种的话,Android这边只需要webview处理即可,所以我们针对第二套SDK方案作进一步的技术分析。
    当应用启动的时候,一般会先初始化,初始化首先会访问渠道服务器后台,当客户端请求参数和拼接规则符合后台规则时,也就是初始化成功,然后在调起Android的登录界面。(当然,界面包括登录界面,注册界面,支付界面等)当用户登录成功以后,webview在去加载url(这个url可以写在客户端,也可以由后台返回,实现方式很多种),也就是用户进入游戏正式开车。(当然,这只是其中的一种分析,不排除有别的实现方式)。
说明:开源Android渠道SDK使用
    好了,文章的最后,笔者也给大家准备了一套Android游戏SDK(做开源项目的确很辛苦,内心为前人的开源精神点赞)。本开源项目是一套渠道游戏SDK,内部没有涉及到到任何商业接口,所以请各位放心使用。因此,假设你新入职的工作是开发游戏SDK或者只是纯粹的学习了解,那么,拿到这套代码之后仅需改下UI、修改我编写的简介对接技术文档、将点击事件的逻辑改成你家后台的接口处理、换成自己家的支付方式(这里在提一嘴,由于游戏SDK对接的游戏会非常多,官方的微信支付一个账号只能注册10款应用,所以,需要考虑可替代微信支付方式,比如接入第三方的H5微信支付等)、集成你们想要集成数据统计功能即可做成一套渠道游戏SDK。
   渠道SDK写完之后,我们最后还需要将自己写的代码,打成jar包,然后提供相应的资源文件(渠道参数,布局文件,文字图片等资源,清单文件里面的权限,四大组件基本配置等)写成对接技术文档、然后编写一套测试Demo,给游戏技术去对接使用即可。
项目地址



作者:骑小猪看流星
链接:https://www.jianshu.com/p/8b9d82560a67
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-4-27 16:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表