/SdkManager

Unity3d中用来方便管理第三方SDK导入的插件,能够可视化管理哪些SDK当前需要引入到工程。

Primary LanguageC#

SdkManager

这是一个Unity3d中用来方便管理第三方SDK导入的插件,可以可视化管理哪些SDK当前需要引入到工程。 主要解决应用发布到不同平台时,需要切换不同SDK的烦恼。例如,应用的国内版和国国际版使用同一套代码,但分别需要接入微信、新浪微博,或者Facebook、twitter,SdkManager将这一切变得轻松。

原理

SdkManager将所有将用到的SDK文件拷贝到Assets/.SdkStore目录中,在Unity3d中视为不可见的。启用一个SDK时,在Assets/ManagedSDKs目录下建立软链接到.SdkStore相应SDK目录,并触发相应回调。

###如何使用 ####1.导入插件
在Unity3d工程的Assets目录中运行

git clone https://github.com/xclouder/SdkManager.git

####2.导入SDK 通过菜单[Window/SdkManager]打开SDK管理面板,点击右下角的"Install"按钮,选择SDK所在的文件夹。 在已安装的SDK前面勾上/取消,即可启用/禁用此SDK。禁用的SDK在项目打包时会被忽略,启用的SDK目录在Assets/ManagedSDKs下可以看到。

####3.事件处理(可选) 启用/禁用一个SDK时,项目配置可能要相应做修改,如sdk相关appId需要设置等。SdkManager在Enable/Disable一个SDK时,会触发如下回调:

	[OnModuleEnable]
	public static void OnModuleEnable(SDKInfo sdk)
	{
		Debug.Log("enable sdk:" + sdk.Name);
	}

	[OnModuleDisable]
	public static void OnModuleDisable(SDKInfo sdk)
	{
		Debug.Log("enable sdk:" + sdk.Name);
	}

开发者可在相应回调中修改配置信息

###CI集成 除了可视化修改SDK引用,还可以在CI构建脚本中直接调用

SdkManager.DisableAllSDKs(false);
SdkManager.EnableSDK(sdkId1, false);
SdkManager.EnableSDK(sdkId2, false);
SdkManager.EnableSDK(sdkId3, false);
...

AssetDatabase.Refresh();

开发者可以通过配置描述当前Build需要引用的sdkIds,脚本中读取配置并将其Enable,就能实现CI构建时SDK自动化切换。

###后续计划 1.支持SDK的Update
2.添加SDK描述文件以及目录规范,以确定安装SDK时,Plugins目录等文件拷贝规则
3.支持SDK套餐及其管理,几个SDK引用为一个套餐,切换一个目标平台时,只需切换一个套餐(请原谅我不知怎么想到了套餐这个词)
4.组件仓库,依赖管理