入职三个月,游戏SDK开发总结,中高级Android面试中你不得不会的知识点

本文介绍了游戏SDK开发的关键点,包括减少依赖、解决依赖冲突、对外接口设计,以及遇到的坑,如支持Eclipse、setContentView()奔溃问题的解决方案。通过动态获取资源id来解决资源映射问题,并探讨了资源id与资源文件的关联。文章还讨论了SDK开发后期的日志开关和配置检查等操作。
摘要由CSDN通过智能技术生成

2.2 游戏SDK的流程图

游戏SDK最核心的是登录和支付功能,其它的都是运营相关的,例如埋点、数据统计等等~

登录和支付的流程大概如下图:

图画的比较简陋,解释一下,上半部分是登录流程、下半部分是支付流程

流程还算比较简单的~

接下来说说游戏SDK开发的一些需要注意的点:

三、游戏SDK开发注意事项

3.1 少依赖

很多开发者都知道,作为SDK,应该尽量少使用开源库,或者说不用开源库,
而是通过手写网络框架,手写数据库等等,主要是考虑两个方面:

  • 减小SDK体积 ;
  • 避免第三方接入的时候发生依赖冲突

当然,依赖库并不是说不能用,有时候一些数据统计的库需要依赖第三方,那这种情况是没有办法避免的,可以在对接文档中提供一个解决依赖冲突的办法

3.2 解决依赖冲突

方式一

在app的build.gradle中添加类似配置如下:

configurations.all {
resolutionStrategy {
//解决v4包冲突,强制使用这个版本的v4包
force ‘com.android.support:support-v4:26.1.0’
}
}

方式二

exclude

implementation(“com.xxx.xxx:xx”) {
exclude group: ‘com.android.support’
}
复制代码

exclude是最常用的解决依赖冲突的方式,但如果多个依赖库引入不同版本的其它库,需要分别写好多个exclude,显然第一种方式比较简单粗暴。

3.3 对外暴露的接口尽量少

面向接口编程,以游戏SDK为例,对外暴露的接口一般有SDK初始化、登录、支付等,参考设计如下:

定义接口:

interface IGame {

// 1、在Application中调用,
fun registerApp(context: ApplicationContext, appId: String)

// 2、在activity中初始化
fun init(activity: Activity)

// 3、业务接口,登录、支付等等
fun login(loginCallBack: LoginCallBack)

fun pay(product: Product, payCallBack: PayCallBack)

}
复制代码

实现类

/**

  • 实现类
    */
    class GameImpl : IGame{

override fun registerApp(context: ApplicationContext, appId: String) {
//appid相关
}

override fun init(activity: Activity) {
//初始化逻辑,例如显示悬浮窗
}

override fun login(loginCallBack: LoginCallBack) {
//登录逻辑
}

override fun pay(product: Product, payCallBack: PayCallBack) {
//支付逻辑
}

}

复制代码

实现类是我们的内部逻辑,我们不希望被外部访问到,外部只需要知道有 IGame这个接口中的方法就行,我们可以再写个单例的管理类来给外部使用

/**

  • 单例的SDK管理类
    */
    object GameSDKManager :IGame{

//实现类私有化
private val gameImpl: IGame by lazy { GameImpl() }

override fun registerApp(application: Application, appId: String) {
gameImpl.registerApp(application,appId)
}

override fun init(activity: Activity) {
gameImpl.init(activity)
}

override fun login(loginCallBack: LoginCallBack) {
gameImpl.login(loginCallBack)
}

override fun pay(product: Product, payCallBack: PayCallBack) {
gameImpl.pay(product,payCallBack)
}

}

复制代码

kotlinobject关键字表示单例,

外部通过GameSDKManager.xxx来调用SDK中的方法,
以后要提供其它方法,只要修改 IGame接口,然后在 GameSDKManager 和 GameImpl 中分别实现即可。

当然,不是说一定要这样拆分三个类,这只是一个面向接口编程的例子。

四、游戏SDK的坑

游戏SDK前期开发自测可能是很顺利的,难度不大,但是在跟游戏对接的时候可能会出现一些问题, 什么ClassNotFound、Resource not fou

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值