1. 程式人生 > >Unity接入多個SDK的通用介面開發與資源管理(一)

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