Unity接入多个SDK的通用接口开发与资源管理(一)

每一款游戏都有接入多个SDK的需求。当接入多个SDK时会面临两个问题:

(1)代码层面:每个SDK都有调用各自功能的方法,我们需要统一管理每个SDK提供的方法,这样会使每个SDK调用方便,使代码整洁易读。

(2)资源层面:每个SDK都带有各自的资源,如果你一股脑导入unity中,自己都分不清,以后升级某个SDK的时候会很麻烦。所以最好单独存放 每个SDK的资源。

本篇文章解决这两个问题,进行代码接口的统一调用和资源的统一管理。

首先介绍一下接入的SDK都有哪些资源。从SDK提供方下载的SDK从资源组织上一般分为两类:一类是只有android的原生jar包及其相关资源;另一类除了jar包和资源外,提供了unitypackage资源包。而unitypackage包里通常会包含一些c#脚本,里面会提供一些调用SDK某些功能的接口。这些提供了接口的SDK接起来就比较方便,而那些只提供jar包的就需要我们自己写接口。

我们要做的通用接口就是把这两类SDK整合起来,对于只提供jar包的,我们写一个接口去调用jar包里的方法,对于提供了接口的我们直接调用接口。其实说到底,接SDK就是从unity中调用android中jar包里的方法这么一件事情(暂时先不讨论iOS)。这里拿两个SDK举例,一个是信鸽SDK,它主要用于在游戏中推送通知。它属于只提供jar包的SDK。第二个是buglySDK,它能够记录下来游戏在运行时意外崩溃的日志,并提供了后台可以查看这些崩溃日志。bugly属于提供了unitypackage的SDK,即提供了接口。

这是信鸽提供的资源,有jar包和so动态链接库。

这是bugly提供的资源,一个unitypackage,和一个BuglySDK文件夹。

BuglySDK文件夹里android资源是一个bugly.jar和libs文件夹。libs里是so动态链接库。

这是bugly_unity.unitypackage包里的资源,红框里的资源是我们需要提出来单独管理的,不需要导入unity中。一般其他SDK的unitypackage包里都会有类似的资源(就是jar包和so库,可能还会有res资源和AndroidManifest.xml),这部分资源每个SDK我们分别用一个文件夹存放,在unity导出android工程后再统一添加到工程里,进行出包。这样当更新某个SDK资源时就方便多了。

到这里,我们已经明确了要做的两件事情。(1)统一调用SDK的接口。对于提供了unitypackage包的,即提供了接口的,我们直接调用,对于只提供了jar包的,我们需要自己写调用的接口。(2)对每个SDK的资源进行整理。每个SDK的libs,res,AndroidManifest等资源从unity中提取出来,分别用文件夹存放。接下来,就对SDK接口进行统一封装。

posted @ 2020-04-19 15:43  钢与铁  阅读(822)  评论(0编辑  收藏  举报