经过一段时间的开发和测试, 一套针对手游海外联运的SDK终于开发完成了。
一、开发准则
之前我们有说过, SDK开发和普通的app开发其实有很大的不同。 这次开发海外SDK,我们根据从事SDK开发多年的经验列出来几个SDK开发准则。开发过程中,也严格按照这些准则进行。
1、尽可能少的依赖第三方库
首先,因为最终SDK是需要给到其他游戏中去集成的,很可能游戏中集成的其他第三方插件有依赖或者游戏本身有依赖相同的库,导致冲突。常见的第三方库,比如androidx, android support, okhttp3, rxjava,eventbus等都很容易冲突。
另一方面,SDK本身功能并不是太复杂,很多时候,我们用到这些第三方库都是“大材小用”,仅仅用到他们里面的很少的部分,或者仅仅个别地方用到。然后就引入了一个甚至很庞大的库,增加最终游戏包体体积不说,有些库中还有资源,很可能和游戏工程混编的时候,导致冲突。
2、SDK接入尽可能简便
SDK中,我们需要将复杂的功能给封装好, 对游戏层暴露的调用接口,需要尽可能地简单。 如果你们是手游发行业务,需要对接很多游戏,SDK接入越简便,就可以给游戏那边节省掉更多的接入时间,整体上架效率就会大大的提升。
要不然一个游戏接这个SDK需要花费一周甚至更久,你想想对接10个游戏的话,需要多久。 正常我们需要尽可能将一个游戏接入SDK的时间控制在一个工作日内。
另一方面,因为SDK最终会给到不同的游戏去接入,不同游戏有不同水平的技术人员,不同的引擎,不同的版本,调用代码过于复杂的话,也不利于和各个引擎层交互和封装。
3、SDK内部集成的第三方插件尽可能方便地完成组合、替换和移除
很多情况下,我们在SDK中需要接入第三方插件, 比如海外SDK中,我们需要集成Appsflyer,Adjust等广告归因插件。那么SDK在接入的时候, 我们最好不要将这两个插件耦合写死到SDK工程代码中, 我们可以设计一套抽象的广告归因接口用于SDK层的调用,然后从配置文件中加载需要集成的插件 并通过反射完成实例化和初始化等逻辑。
对于某些类型的插件,还可能需要支持集成多个同类的插件,比如上面说到的广告归因插件, 可能需要同时集成Appsflyer和Adjust。 往后随着业务扩展或者变动,可能还需要集成其他的同类插件,或者移除一个已存在的插件。 所以在设计插件实现的时候,我们在SDK层封装一套抽象的插件接口,然后每个具体的插件用单独一个工程,并实现SDK中抽象出来的插件接口。
二、特性介绍
整套SDK的开发,我们可以大体分为客户端部分和后端部分。 客户端又分为Android客户端部分和iOS客户端部分;后端包括核心业务服务器部分、管理后台部分以及批量作业调度部分。 我们可以通过下图清晰地理清楚各个部分对应的特性和功能:
UGSDK客户端 UGSDK服务端三、界面和交互设计
1、客户端部分
考虑到SDK会支持多语言, 为了让不同语言下界面上的展示尽可能的统一和规整,我们对界面和流程进行设计的时候,尽量遵循简洁顺畅的原则。 部分界面效果图:
v1.jpg v2.jpg v3.jpg v4.jpg2、后台部分
后台部分的设计,主要从运营同学使用的角度考虑,采用双控制台设计,尽可能让不同游戏的参数配置简单直观。部分截图:
mgr_login.png mgr_config.png mgr_v3.png mgr_global.png后续我们还会继续对这套SDK进行完善和扩展。 并将完整技术栈拆开来,出一系列教程演示怎么从头开发一套这样的海外联运SDK。
网友评论