一.须知

本帖适合对安卓一点基础都没有,有一定Unity基础。刚刚接完一个某文档很简单的渠道SDk,也当是自己总结一下。

二.Unity中的目录创建与理解。

Plugins:插件目录,该目录再编译项目的时候会优先编译,方便项目中代码调用。

Android:规定必须这样写,规范跟Eclipse中安卓保持一致。只有这样写才会被调用到。

bin:存放自己编写的Jar包,注意,是自己编写的Jar包。(其实也可以放到libs中目录,我测过了,不是很重要吧)

libs:第三方编译的包放在这里,一般,

Eclipse中这个包需要拖进去。(后面会讲Eclipse)。

三.Eclipse中需要执行的操作及讲解。

1.Eclipse创建工程。

1)依次点击  File->New->Android Application Project

2)

A:这是项目的名字,这个自定义。

B:这个是包名,一定要记得,需要跟Unity中  点击File->BuildSettings->PlayerSettings ->OtherSettings

 与这个名称必须要一模一样。

(这边补充一下,Unity中还需要做这个操作)。

C:最小的SDK版本要求,这个操作很重要,一定要选,我对sdk版本也不是很熟,具体选哪个,你就跟着我选这个吧。具体为什么我

也不清楚,想了解的话可以参考这篇帖子。http://blog.csdn.net/zhangjg_blog/article/details/17142395

3)

说明:这里,我们只需要关注这4个目录,之后会慢慢解释。其他目录,我不懂,不管,我们这里,完成在Unity中接sdk。

A:在这里写自定义的方法,也就是与Unity直接交互的地方。

在Eclipse中写代码,写与Unity交互的地方主要也就在这里了。

B:存放第三方Jar的包,也是需要导到Unity Libs文件夹下的Jar,但是Classes(从Unity文件夹下复制过来的jar),这个不需要导,

因为Unity中已经存在。

C:Eclipse 中工程资源目录,比如放一些小图标之类,一般也是需要全部烤到Unity Android目录下的。

D:这个AndroidMainfest.xml很重要,后面讲。

2.Eclipse 工程 中具体操作(核心)

1).导入Unity中的一个Jar包,实现Unity中脚本与Eclipse中的脚本交互的桥梁。

找到Unity安装包中的,

Unity533\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

把classes.jar拖入到Eclipse中 成这个样子了。

2).点击 src->com.djw.testmydemo->MainActivity.java

把修改成这样,被我注释掉的代码,是系统内置的代码,可以注释掉,我们不去浪费精力了解,目的,搞定Unity与安卓的交互。

图中标识,就是改动的地方,一定要把extends Activity =》改为extends UnityPlayerActivity,

也就是因为之前导入了Unity中的classes.jar,在这里才能有import com.unity3d.player.UnityPlayerActivity,

才可以继承UnityPlayerActivity。这里为啥需要这么做,原理我也不是很懂,我是站在Unity程序员角度接触安卓的,没有必要再深入了。

但是需要理解:这样做,安卓才可以和Unity互相交互。

代码中ToEclipse方法就是我们需要在Unity中调用的方法,纯测试。

3).一些小坑,Eclipse中注意的地方。

如果发现你的Eclipse代码报红。

Ctrl+s,这个必须的。

Eclipse 中 点击 Project->Clean,再勾选上Build Automatically(选中的话每次保存以后就自动编译)。

网上解释:由于eclipse每次保存都是基于时间戳的判断机制,当build的时候,eclipse会认为时间戳没有改变的类不会被编译。

因此需要clean一下再编译。这个时候eclipse会将所有的以前编译信息清除然后编译。

四:导出Eclipse中的文件到Unity

导哪些及怎么导?

1)jar包(具体哪些jar包)

I.

II.

这里,我们只导出自己编写的脚本打包成jar,注意Browse(导出地址),Finish。

III.还需要把

这里,只需要把android-support-v4.jar 拖到Unity的 libs目录中,zmsdk.jar,这个包是第三方,如果你们有使用,

就把他导到Unity的 libs。但是我们这里是测试,你们是没有这个文件的,我只是演示。classes一定不要导。

补充:导出的方式很多种,可以一次性把所有的都导过去等等吧。不止我这一种,因为对其他我也不是很理解,

我不是专业搞安卓的,只是用到哪些跟Unity相关的,我就导出哪些。用哪些,导哪些。

2)AndroidManifest.xml

直接拖拽到Unity 中 Android目录下即可。

3)res

如果有使用到res,就拖拽到Android目录中,这里我们的Androidifest.xml有使用到res中的图标,所以,全部拖拽到Unity中。

最终:

      

补充:如果这里有第三方jar则导到libs中。

五:AndroidManifest.xml 解释

Android系统重要文件,主要涉及申请权限及定义配置文件,通过他可以实现向系统预先定义和申请应用程序运行所需要的权限。

声明应用程序所必须具备的权限——如获取相机权限、WiFi权限等
声明程序的入口
指定应用程序所使用的SDK版本
指定应用程序会使用到的库文件
设定应用程序的硬件或一些属性——屏幕大小、是否支持旋转屏幕等

举例1:假如你删掉  框中这句话,则Eclipse中res不用导到Unity中。

因为删掉这句话,就没有调用res中的资源。

举例2:如果你的项目中有需要跳转到另外一个URL,即,有跳到其他网页上。需要加权限

...省略...
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

六.Unity中使用C#与Eclipse中工程通信

   AndroidJavaClass jc;
AndroidJavaObject jo;
public void OnTestClick() //自己设置一个按钮,点击触发
{
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("ToEclipse");
}

注意  ToEclipse 就是安卓中的MainActivity中的方法,至于还有一些静态方法如何互调之类,上面这个是固定用法,

具体理解,推荐一篇文章,我这篇博客比较偏向于具体步骤,而非原理。原理这篇博客相对比较好很多。

http://blog.csdn.net/yang8456211/article/details/51331358

补充:这样,第一篇步骤篇,算是写完了,后面应该还会出一篇具体加入第三方jar的步骤。

最后,感谢百度,还有一些技术博客的博主们,感谢他们的博客,知识,分享才是快乐的。

Unity 使用Plugins接入安卓SDK 基础篇的更多相关文章

  1. unity接入安卓SDK,与安卓相互通信

    .接SDK是个什么样的活计? SDK的工作流程: 1. 从unity端出发,向安卓发起一系列的请求(unity call android). 2. 安卓端收到unity端调用,然后在具体调用SDK的一 ...

  2. unity接入安卓sdk (unity调用安卓工程)

    1.安装jdk 并且配置环境,这个网上资料很多,这里不说了 2.安卓开发软件eclipse集成环境版 下载地址 http://tools.android-studio.org/index.php/ad ...

  3. 教你高速高效接入SDK——Unity统一接入渠道SDK(Android篇)

    U8SDK的设计之初,就是为了可以支持各种游戏引擎开发的游戏,而不不过Android的原生平台.眼下一大半的手游,都是採用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用 ...

  4. Unity - 接入Android SDK

    在网络上,关于Unity与Android如何进行交互,雨松MOMO大神已经有两篇文章简单介绍了如何操作(1)Unity3D研究院之打开Activity与调用JAVA代码传递参数(2)Unity3D研究 ...

  5. Unity 下集成第三方原生 SDK,以极光厂商通道为例

    Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...

  6. 使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...

  7. 【Unity】讯飞语音识别SDK

    1.进入讯飞官网,注册帐号,进入控制台,创建新应用UnityXunfeiDemo,平台选Android.在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写,即可下载安卓SDK(下称讯飞 ...

  8. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  9. 使用Xamarin开发即时通信系统 -- 基础篇(大量图文讲解 step by step,附源码下载)...

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...

随机推荐

  1. centOS7-配置网络地址

    1.首先需求切换都root账户 # su #输入密码: 2.进入网络配置文件目录查看 ()进入该目录 # /etc/sysconfig/network-scripts ()查看目录下文件 # ll - ...

  2. ECharts模拟迁徙案例

    ECharts模拟迁徙案例 独立页面:http://211.140.7.173:8081/t/wuhairui/ditu/a.html

  3. jdk1.8新特性 : 接口中可以有普通方法(非静态方法)和静态方法 , 颠覆了之前我的理解 : 接口中只能有共有常量和抽象方法的概念,后面必须要加一句jdk1.7和1..7之前

    看到jdk某些接口中存在default方法,于是... http://shaomeng95.iteye.com/blog/998820    为什么接口只能是公有常量? public interfac ...

  4. ASP.NET Core 依赖注入

    一.什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它? 初学者特别容易对控制反转IOC(Iversion of Control) ...

  5. 关于JS中变量提升的规则和原理的一点理解(二)

    上篇文章中讲到变量提升和函数提升的先后顺序时蒙了,后来去查了一下资料,特别整理一下. 在<你不知道的JavaScript(上卷)>一书的第40页中写到:函数会首先被提升,然后才是变量. 书 ...

  6. UOJ#152. 【UR #10】汉诺塔

    题目:http://uoj.ac/problem/152 orzKPM... 分治,把数字是l~mid的拿出来放在一根柱子上,mid+1~r放在另一根柱子上.如此递归下去,每次递归只是改一下方向,l, ...

  7. [国嵌攻略][051][NandFlash原理解析]

    扮演角色 相当于嵌入式设备的硬盘 NandFlash分类 1.SCL(single level cell):单层式存储 2.MLC(multi level cell):多层式存储 3.SCL在存储格上 ...

  8. js动态添加-表格逐行添加、删除、遍历取值

    关于js对表格进行逐行添加,今天抽空整理了一下:新建一个html文件(没有编辑器的可以新建一个demo.txt文件,然后改后缀名为demo.html),把下面代码全部贴进去即可.功能包括:表格添加一行 ...

  9. Oracle_创建用户_授予权限

    Oracle_创建用户_授予权限 --创建用户,需要足够的权限  create create user hzf identified by hzf;    --给用户bjsxt分配权限  grant ...

  10. 数据库 MySQL基础知识

    (关于MySQL的安装,具体见下面博客:http://www.cnblogs.com/wj-1314/p/7573242.html) 一.什么是数据库 ? 数据库是按照数据结构来组织,存储和管理数据的 ...