手游海外SDK开发实战——Android客户端之结构篇

作者: 分类: UGSDK 发布时间: 2021-02-09 16:59 6手游海外SDK开发实战——Android客户端之结构篇已关闭评论

一、前言

随着国内手游版号申请难度的增加,以及防沉迷等一系列政策的影响,很多国内开发者纷纷开始寻求海外发行之路。那么手游出海首要的是需要一套适合海外发行和运营的手游SDK联运系统。

本系列我们就来开发一套这样的SDK,我们暂且称这套SDK为UGSDK。该SDK已经开发完成,如果有兴趣或者想体验完整功能的同学,可以加我们的海外技术交流QQ群:1055996444。

整个UGSDK项目,暂时可以分为三大部分——Android客户端SDK部分、iOS客户端SDK部分以及服务端部分(目前不考虑H5游戏部分)。

本篇主要介绍UGSDK项目中Android客户端部分的整体结构和设计。

二、整体架构设计

1、坚持小而美,而不过分强调某种架构

所有的架构都只是一种思想,我们在借鉴的同时,需要坚持“简单、合适、合理”的原则。 常见的架构比如有MVC, MVP, MVVM以及Google倡导的Clean架构。我们在熟悉他们各自的使用场景和原理后, 最好结合自己的项目,做一个前期的架构规划。

对于SDK项目来说, 功能并不像app一样很复杂。所以我们在使用前端主流的架构选型时,需要适度地借鉴和考量。我们的核心原则就是:“小而美”。

2、设计的难点

对于UGSDK项目Android客户端SDK来说, 可能难以控制的点主要是对业务流程的控制,比如SDK的登录流程、注册流程、游客升级流程等。直接生撸的结果,可能是在一个activity或者fragment中耦合了过多的逻辑,导致及其笨重的UI类,不利于组件的复用,也不利于后期的扩展和维护。

关于这个难点,建议有兴趣的同学可以看下这位大佬的文章:如何优雅地构建易维护、可复用的 Android 业务流程。我们的UGSDK项目Android客户端SDK中,也基本采用这位大佬总结的fragment结合activity的流程管理方案。

3、模块化

对于UGSDK项目中Android客户端SDK来说, 对于通用的组件或者不同的业务,我们尽可能采用“高内聚、低耦合”的方式进行模块化封装,功能模块只对外提供单一且必要的交互接口。

模块化的封装有利于减低模块之间的耦合,也有利于功能的维护和扩展。

4、简化API设计

不管整个UGSDK内部功能有多少,有多复杂,对于给游戏层接入的API来说,我们需要设计地尽可能的简单直观。

因为UGSDK最终需要给到不同的游戏和厂商去接入。 不同的游戏有不同技术水平的研发同学。我们的API接口的核心设计原则就是简单,对于一个刚毕业甚至从未接过SDK的同学来说也能轻松快速完成接入。另外,如果一个游戏接入UGSDK的时间平均能节省一天的时间,那么UGSDK被100个游戏接入,就能节省100天,功德无量。

5、最终设计

结合上面说到的模块化原则,我们进行一个简单的整体模块结构的设计,如下:

ugsdk_android_design

三、整体项目结构

1、项目组织结构

项目开发我们使用java,使用AndroidStudio进行开发。 整个UGSDK项目Android客户端在AndroidStudio中,我们根据一定的规则,采用多module+多包名的形式组织代码结构。

ugsdk_android_stucture

根据上图可见, 我们并没有严格按照上面模块设计的样子进行module的划分,因为这样粒度太小,也不利于代码结构和依赖关系的维护。所以我们以更高层次的结构来划分。

2、SDK目录结构划分

上面代码module的划分中,ug-sdk是我们整个Android客户端SDK的核心部分,我们看下里面的包名结构:

ugsdk_android_structure2

上图我们尽可能展示了客户端SDK中两个核心部分,一个是通讯协议(api包名下),一个是UI和流程管理(ui.activities包名下)

好了,后面我们我们再来就其中各个模块开专门的篇幅来扒一扒。感兴趣的同学可以加入我们的技术交流Q裙哦(1055996444)。U8SDK海外技术群

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=2390

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入