一、简介
通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感,太尼玛无聊了(Android渠道一弄就十几个,直接吐血)。其实通常情况下接入SDK都是很简单的一个过程,本系列博客就让马三和大家从小白开始,从零基础开始学习如何接入SDK以及一些常见的SDK的接入流程。本系列博客规划为以下几篇:
- SDK接入与集成——小白入门篇(介绍环境搭建以及Unity和Android的基本交互与调用)
- SDK接入与集成——信鸽SDK篇(介绍消息推送框架--信鸽SDK的接入)
- SDK接入与集成——QQ与微信SDK篇(都是腾讯开放平台的,就放在一起学了)
- SDK接入与集成——科大讯飞SDK篇(游戏中的语音通信和语音识别会用到此SDK)
- SDK接入与集成——百度地图SDK篇(做LBS游戏必不可少)
- SDK接入与集成——第三方SDK接入解决方案AnySDK篇
- SDK接入与集成——构建自己的Android集成多SDK框架篇
先挖了这么多坑,以后慢慢填吧,放心博主肯定不会太监的。
二、浅谈常用的两种接入方案
1.第三方SDK接入解决方案
其实游戏SDK接入发展到现在,已经有很多成熟的第三方SDK接入解决方案了,比如AnySDK,ShareSDK,U8SDK等等。这些第三方SDK接入解决方案的整个接入过程,不改变任何SDK的功能、特性、参数等,对于最终玩家而言是完全透明无感知的。让CP商能有更多时间更专注于游戏本身的品质。第三方SDK包括了渠道SDK、用户系统、支付系统、广告系统、统计系统、分享系统等等。利用他们可以轻松快速接入第三方SDK。
第三方SDK的统一验证流程基本如下:
2.手动接入SDK
既然上面说的第三方解决方案那么好,为什么我们还有手动去接入SDK呢?造轮子就这么上瘾?其实接入了一些第三方的SDK解决方案以后,我们有的游戏数据是要经过他们的服务器的,对于一些游戏厂商来说,不想让自己的数据经过别人的服务器,或者需要对验证服务器有完全自主的控制权,那么必然要手动接入各种SDK了。另外还有一些奇奇怪怪,非常诡异的SDK,我们也是要手动去接入的,不能都指望第三方的集成。而且作为一名合格的猿类来说,知其然更要知其所以然,掌握SDK的接入原理和过程很有必要。
三、开始接入!Unity与Android的交互
前面啰嗦了那麽多,到这里终于可以开始实战操作了。
1.Android开发环境搭建
关于Android环境的搭建,网上已经有很多博客了,介绍的很详细,马三就不在这里水了。这里给大家安利一个关于Android开发工具的好网站:http://www.androiddevtools.cn/ 。上面提供了很多可用的AndroidADK国内镜像和教程。
2.Android端的开发工作
(1)打开IDE建立一个空的Android库工程,这里我用Eclispe举例。注意Min Required SDK最好选择4.0以上,要不然还需要引入android-support-v7兼容包,比较麻烦,之后我们可以把这个Min Required SDK 再该回来的。需要注意的两步已经截图了,剩下一路Next操作即可。注意包名和勾选Mark this project as a library选项。
(2)导入Classes.jar包到Android工程中
Unity和Android做交互,他们两个之间不认识肯定,没法直接通信,因此需要一个中间的搭桥牵线的人,Classes.jar就起到了这个作用。Classes.jar是由Unity提供给我们的,我们需要找到它并且引入到我们的Android项目中。Claess.jar的路径一般如下 X盘:\xxx目录\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar(不同的计算机上,这个位置可能会有所不同,大家按照自己的路径添加即可)。我们找到它直接拖到我们的Android工程的libs目录下。然后在它上面右键,将其添加到Build Path中。
添加到Build Path成功以后,工程是这个样子的。
(3)编写Android端的代码
我们在Android端编写一些代码,提供一些接口来供Unity一会的调用。打开我们的MainActivity.java,然后添加代码。需要注意的是,让我们的MainActivity继承Jar包中的UnityPlayerActivity类,这样,Unity才能调的到哦,缺什么包,直接让Eclipe自动导下包即可,快捷键ctrl+shift+o。对了,还需要把 setContentView(R.layout.activity_main); 这段代码注释掉,要不然会显示Android的默认布局文件,上面就一个 Hello World。
简单的写了几个普通方法和一个静态方法,供一会的测试调用。(无论是静态方法还是普通方法,在Unity中都是可以调用的到的)MainActicity.java的代码内容如下:
1 package com.mx.sdkbase; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 import android.widget.Toast; 8 9 import com.unity3d.player.UnityPlayer; 10 import com.unity3d.player.UnityPlayerActivity; 11 12 public class MainActivity extends UnityPlayerActivity { 13 14 private static MainActivity instance; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 // setContentView(R.layout.activity_main); 20 21 instance = this; 22 } 23 24 @Override 25 public boolean onCreateOptionsMenu(Menu menu) {