一、前言
上篇说清楚了Unity和Android调用的方式,但很多实际接入的部分没有讲的很详细,因为重头在这篇,会详细讲述具体接入Android SDK的方式,和怎么去做一个方便Unity接入的SDK。
传送门:
前篇:Unity3d 与 Android之间的互相调用
http://blog.csdn.net/yang8456211/article/details/51331358
后篇:Unity3d Android SDK接入解析(三)接入Android Library的理解
http://blog.csdn.net/yang8456211/article/details/51435465
终篇:Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件
http://blog.csdn.net/yang8456211/article/details/52231305
二、中篇:Unity3d Android SDK的设计与两种接入方式
(Android SDK的接入一般分为两种)
1)一种是把Unity的工程导出google project的形式进行接入
2)另一种是通过把Android的工程做成Plugins的形式进行接入
对比:
类别(形式) | google project | U3d Plugins |
---|---|---|
优点 | 容易理解、方便接入原生SDK、几乎所有SDK都可以接入 | 接入方便、容易在Unity中进行扩展与管理 |
缺点 | 接入比较繁琐,对U3d项目不友好 | 不是所有SDK都提供U3d Plugins形式 |
apk导出 | Android IDE导出 | Unity 导出 |
建议:
如果做一个sdk,还是推荐分开Android形式的SDK(可以是Library),与Unity3d形式的SDK(Plugins),因为一般项目会有自己的SDK架构,而让他们打破这个架构,导出Google project的形式进行接入,这无疑是很难被接受的。
下面我们就来说一下具体的操作:
首先我们会自己写一个SDK,并说明白其中的注意点,然后会用两种方式接入这个SDK。
2.1 一个简单Android SDK
这个SDK实现几个小功能,实现四个方法:
- init方法,用来传入上下文
- 传入两个数返回他们的和
- 传入msg,弹出一个Toast提示
- 弹出一个提示窗口,窗口需要的文字信息从strings.xml里面获取,点击确认关闭
先回答一个可能困惑大家问题:
1)实现SDK时一定要存在一个中间件Activity继承UnityPlayerActivity吗?
网上几乎所有教程都是这样教的,新建一个MyActivity,然后继承UnityPlayerActivity,在MyActivity里面写接口,然而根本没有讲清楚为什么要这样做。。
有关于这种方式的一些研究请看前篇:
http://blog.csdn.net/yang8456211/article/details/51331358。
2)让我们抛弃MyActivity吧
对于1)的问题,答案是NO,简单说一下我的理解,只有当需要在Activity的生命周期中执行一些操作时,我们才需要一个中间Activity去完成这些与生命周期相关的操作,而其他情况下,一个Class足以。那就让我们开始吧:
新建一个Android Project callAndroid
删除其中MainActivity和activity_m