java 带配置封装成一个sdk_入职三个月,游戏SDK开发总结

本文介绍了游戏SDK的核心功能、开发流程及注意事项,包括减少依赖、解决依赖冲突、对外接口设计。针对Eclipse接入时遇到的资源找不到问题,通过动态获取资源id进行了详细分析,讲解了AAPT打包流程和资源索引表resources.arsc的作用。此外,还讨论了SDK的日志开关、配置检查和签名验证方法。最后,探讨了渠道包的实现原理和签名工具的使用。
摘要由CSDN通过智能技术生成

本文作者

作者:蓝师傅

链接:

https://juejin.im/post/5ee6545f6fb9a047a11dbf56

本文由作者授权发布。

蓝师傅最近几个月非常忙,很久没更新文章了,惭愧惭愧,距离上一篇技术文章已经是半年前了~

前几个月负责游戏SDK的开发、维护、对接工作,项目结束了一段时间了,梳理一下游戏SDK开发涉及到的知识点。

有些朋友可能对游戏SDK开发有点陌生,希望本文对你有一些帮助。

0 前言

记得17年毕业那会儿找工作的时候,去一家公司面试,面的是游戏SDK岗位,面试官一开口就问我之前有没有做过SDK开发,我说没做过,结果聊了几句就回去等通知了~

HR在筛选简历的时候可能出了点问题,但是,从技术角度讲,没做过SDK开发就不能胜任这个岗位了吗?

1 什么是SDK

SDK(Software Development Kit)是软件开发工具包的意思,一般我们将一部分功能单独封装成一个library进行开发和维护,然后将编译产物(jar包或者aar)提供给多个项目使用,这就属于SDK开发。常见的如短视频SDK、推送SDK,分享SDK,以及这篇文章的重点:游戏SDK。

2 游戏SDK

2.1 游戏SDK是啥

01e53b3d7d0e81d1665b6837b6c1efdc.png

小红是做社交App的娱乐公司,日活几千万,想让自己平台多元化,比如做个游戏下载的功能,给用户下载,用户觉得好玩,可能就会付费买装备,但是有个问题,小红并不会做游戏,如果单开一个产品线去研发游戏,投入是相当巨大的,所以想到能不能去外面接游戏进来。

4baf59af7c65a3ff2f6bbdd881435e49.png

最终小红和小绿确认合作关系:

1、小红提供游戏SDK,需要包含核心的登录功能、支付功能;
2、小绿开发完的游戏,不接入其它平台的登录和支付系统,直接接入小红的游戏SDK,用小红的登陆和支付系统
3、小红每个月都要跟小绿对账,按比例分成给小绿

小结:游戏SDK跟普通SDK的区别在于,它提供一个游戏账号体系和支付体系,核心就是登录和支付功能。

2.2 游戏SDK的流程图

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

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

7c0d108430039924e1e2a4f33bb01417.png

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

流程还算比较简单的~

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

3 游戏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)
要打包和封装 Java SDK,可以按照以下步骤进行操作: 1. 创建项目结构:在你的项目中创建一个目录结构,用于组织代码和资源文件。通常会包括源代码目录(src)、资源文件目录(resources)和测试目录(test)等。 2. 编写代码:在 src 目录中编写你的 SDK 代码。这些代码应该包含你想要封装的功能和方法。 3. 添加依赖:如果你的 SDK 依赖于其他的库或框架,需要在项目的构建文件中添加相应的依赖项。例如,如果使用 Maven 进行构建,可以在 pom.xml 文件中添加依赖项。 4. 编写文档:为了方便其他开发人员使用你的 SDK,你应该提供文档和示例代码。文档应该包含 SDK 的安装指南、使用说明和常见问题解答等。 5. 打包:使用构建工具(如 Maven 或 Gradle)将你的代码打包一个 JAR 文件。这个 JAR 文件包含了你的 SDK 代码和所有的依赖项。 6. 发布:将打包好的 JAR 文件发布到一个合适的位置,供其他开发人员下载和使用。你可以将 JAR 文件上传到 Maven 仓库、GitHub 或其他适合的平台。 7. 版本管理:在发布 SDK 的每个新版本时,应该对代码进行版本管理。这可以帮助其他开发人员了解你的 SDK 的发展历程,并在需要时方便地切换到特定的版本。 以上是一个基本的打包和封装 Java SDK 的步骤。具体的实现方式可能因项目结构和需求而有所不同。希望对你有所帮助!如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值