標籤:

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介面進行統一封裝。

推薦閱讀:

無人機 SDK 平台開放後,有哪些 App 場景?
聽阿里雲工程師談談如何開發一個優秀的SDK
「流量融合SDK平台」作為手游渠道,是便捷還是坑?
與 Xcode 相比,用 Adobe AIR/Flex做 iOS 開發有哪些優勢和局限?

TAG:unity | SDK |