U8SDK——接入其他插件(腾讯Bugly示例)
从U8SDK的设计之初,我们就已经考虑到了,其实作为一款统一的SDK接入框架,我们要接入的不仅仅是渠道SDK,还有很多和游戏功能相关的一些其他SDK,比如统计类SDK,广告SDK,分享SDK,推送SDK,调试SDK等。
所以,基于U8SDK去接入这些功能性SDK是轻而易举的事情。下面我们就来以接入腾讯Bugly调试插件为例子,看看在U8SDK怎么接入功能性SDK。通过腾讯Bugly我们可以收集游戏的崩溃日志,以及其他一些游戏的性能监控等。
和之前接入渠道SDK一样,我们也新建一个工程:U8SDK_Plugin_Bugly,将其IsLibrary选中。接入的过程也和渠道SDK一样,我们需要一个config.xml和一个SDKManifest.xml 。其中,config.xml配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<config> <params> <param name="Bugly_AppID" value="900004591" required="1" showName="AppID" desc="腾讯Bugly日志插件" bWriteInManifest="0" bWriteInClient="1" /> <param name="Bugly_AppKey" value="9BOHhQUKJwwSZ6RE" required="1" showName="AppKey" desc="腾讯Bugly日志插件" bWriteInManifest="0" bWriteInClient="1" /> </params> <operations> <operation step="1" type="mergeManifest" from="SDKManifest.xml" to="AndroidManifest.xml" /> <operation step="2" type="copyRes" from="assets" to="assets" /> <operation step="3" type="copyRes" from="libs" to="lib" /> <operation step="4" type="copyRes" from="res" to="res" /> </operations> <plugins> </plugins> </config> |
SDKManifest.xml配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <permissionConfig> <!-- 必须的权限: --> <uses-permission android:name= "android.permission.READ_PHONE_STATE" /> <!-- 获取设备信息 --> <uses-permission android:name= "android.permission.INTERNET" /> <!-- 网络通信--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取MAC地址--> <!-- 可选的权限: --> <uses-permission android:name="android.permission.READ_LOGS" /> <!-- 获取logcat日志 --> </permissionConfig> <applicationConfig keyword="" proxyApplication="com.u8.sdk.BuglyProxyApplication"> </applicationConfig> </manifest> |
按照Bugly的文档,接入比较简单,只需要在Application的onCreate方法中初始化即可完成接入。按照我们之前在U8SDK中关于Application的统一处理,这里我们只需要定义一个BuglyProxyApplication,实现IApplicationListener接口即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class BuglyProxyApplication implements IApplicationListener{ @Override public void onProxyCreate() { BuglySDK.getInstance().initSDK(); } @Override public void onProxyAttachBaseContext(Context base) { } @Override public void onProxyConfigurationChanged(Configuration config) { } } |
在onProxyCreate中,我们调用了初始化方法。那么我们再来看看BuglySDK这个单例类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public class BuglySDK { private static BuglySDK instance; private String appID; private BuglySDK(){ } public static BuglySDK getInstance(){ if(instance == null){ instance = new BuglySDK(); } return instance; } public void initSDK(){ SDKParams sdkParams = U8SDK.getInstance().getSDKParams(); this.appID = sdkParams.getString("Bugly_AppID"); UserStrategy strategy = new UserStrategy(U8SDK.getInstance().getApplication()); strategy.setAppChannel(U8SDK.getInstance().getCurrChannel()+""); strategy.setAppReportDelay(1000); CrashReport.initCrashReport(U8SDK.getInstance().getApplication(), this.appID, true, strategy); //测试 // CrashReport.testJavaCrash (); // CrashReport.testNativeCrash(); } } |
接入过程是不是非常简单呢?下面到了关键的地方。上面这些操作和接入一个渠道SDK并没有太大的不同之处。下面,我们就需要在打包工具中配置,使得我们的插件能够在打包的过程中,自动添加到游戏中。
首先,我们在打包工具目录/config/plugin目录下,新建一个bugly目录,然后将上面的config.xml,SDKManifest.xml,以及上面接入工程生成的jar包拷贝到这里,然后将bugly提供的jar包,放在libs目录中。这些操作和渠道SDK也是一样的,仅仅是放置的位置发生了改变。
这样这个插件的配置就基本完成了。现在,我们怎么将该插件添加到我们游戏当中呢? 这个也很简单。首先,找到游戏的渠道配置文件(config/games/你的游戏/config.xml)。在这个配置文件中
1、如果你希望所有渠道包都支持该插件,那么你可以在channels节点上面,配置一个plugins节点,如下配置:
1 2 |
<global-plugins> <plugin name="bugly" desc="腾讯Bugly插件" /> </global-plugins> |
其中里面plugin 中name属性的值,就是之前我们在config/plugin目录下建立的插件目录的名称
2、如果你希望仅仅是部分渠道支持该插件,那么你可以在channels节点中的每个渠道配置的节点channel中,增加一个plugins的子节点:
这样就仅仅当前渠道才会支持这些插件。
可能你会发现,渠道SDK的配置参数,我们是统一放到每个游戏目录下的config.xml中。那么插件的参数设置呢? 因为每个游戏的插件参数都不一样,比如Bugly,每款游戏有自己的AppID,AppKey等信息。
其实这里有两种做法,一种是和渠道SDK一样,也放在这里统一配置。但是考虑到部分插件的参数不是一点点,像ShareSDK分享插件的参数,所以我们不采用这种方式。
另一种方式,是在config/games/你的游戏/plugin目录下,我们对当前需要支持的插件,也放置一份插件目录下的config.xml文件。然后打包的时候,我们将该游戏下的配置文件去替换原来的配置。对于插件,我们就采用这种方式。
所以,从config/plugin/bugly目录下拷贝一份config.xml到config/games/我们的游戏/plugin/bugly下面,然后将这里的config.xml中的参数改为当前游戏的参数。即可
好了,到这里,腾讯Bugly插件就算成功接入了。下面就打包测试一下看看吧~
本文出自 U8SDK技术博客,转载时请注明出处及相应链接。
本文永久链接: http://www.uustory.com/?p=1870