.接SDK是个什么样的活计?
SDK的工作流程:
1. 从unity端出发,向安卓发起一系列的请求(unity call android)。
2. 安卓端收到unity端调用,然后在具体调用SDK的一系列接口(android内部调用)
3. SDK服务器处理之后得到结果,再返回给安卓(网络通信)
4. 安卓获得SDK结果,然后回调unity方法,将结果传回unity端(android call unity)
我们需要做的:
1. 在安卓端,将SDK集成进入 Android的 MainActivity(或者其他Activity),为Unity的调用做好接口
2. 将做好的安卓接口,打成jar包,以插件的形式,集成到Unity中去,供unity使用
3. 编写Unity端的调用 函数与响应函数,完成SDK接入。
2.unity 与 android 的通信:
unity Call android:
1 //获取名为UnityPlayer的类 2 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 3 4 //获取当前运行的Activity 5 AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 6 7 //调用UnityPlayer类中的函数 8 var result = jo.Call<返回结果类型>("函数名称","函数参数1","函数参数2",……);
android Call unity:
UnityPlayer.UnitySendMessage("场景中GamObject名字","该Obj身上脚本的一个方法名",返回值(字符串类型));
3.实际操作
3.1 准备工作
- 安卓开发环境,因为我们需要扩展UnityActivity,并且将扩展过后的结果打成 .jar包放入Unity,所以,我们需要 Android Studio 或者Eclipse+ADT,作者使用的Android Studio3.01.(下载网址:http://www.androiddevtools.cn/ )
- SDK源文件,这个看你需要接入什么SDK,去官网下载即可。
- Unity 的Android classes.jar文件,这里面定义了unity 在安卓中的各种行为,我们在编写代码的时候,需要用到这里面的接口。(路径为:\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar )
3.2开始创建Android工程
问题:
1.Conflict with Dependency
1 Error:Execution failed for task ‘:app:preDebugAndroidTestBuild‘. 2 > Conflict with dependency ‘com.android.support:support-annotations‘ in project ‘:app‘. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.
解决方案
//在build.gradle(Module:App)文件的dependencies中添加如下代码 androidTestCompile(‘com.android.support:support-annotations:26.1.0‘) { force = true }