java程序员图文并茂细说Unity中调用Android的接口
http://bbs.csdn.net/topics/391876421
最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息。按照一些书上和一些贴吧的东西弄了几天,有时候逻辑虽然都走通了,但是有时候还是会出一些问题,现在就将出现的一些问题做一个总结。
1、开发工具Unity3d eclipse,虽然android目前的开发已经普遍使用android studio但是这里建议你使用eclipse
2、言归正传,首先我们要定义android的接口,在创建接口之前,我们首先来创建项目。(这里针对没有使用过eclipse的同学)
3、配置最小的SDK和最大的SDK和编译的SDK(为什么要配置这个,简单理解一下,就是随着android操作系统的不断升级,发布给开发人员的api也随着升级,高版本SDK的某个新功能(接口)可能在低版本操作系统上用不了,进行一个容错性提示)。
为了保证package唯一最好是你们公司的域名倒序+项目名称,比如Google 就是google.com.test


4、一路狂奔到完成,在下面的界面,可以勾选Make is Libray(如果你的接口很复杂,可以暂时不勾选,使用Eclipse调试完毕后,打包的时候修改为选中,不会可以百度)
5、在定义接口之前,先简单说一下Activity,在创建完项目的时候,系统已经提供了一个Activity,默认的类名叫MainActivity,并且在androidManifest.xml已经配置为主Activity,程序一运行,首先就会创建这个Activity的实例,并且调用其生命周期方法。
Activity和普通的java类不同,他不能用new去实例化,只能由系统去创建。如果你去new他就是一个普通的java类,如果项目中有多个Activity,其他的Activity要想实例化,必须直接或者间接依赖MainActivity,他就好比一个入口。
在Unity脚本中,也只能获取MainActivity的引用.(如果上面的看不懂可以往下看6)
6、由于程序一启动,首先创建MainActivity的实例,并且回调onCreate()等方法。我们的Unity的主界面是靠scene去渲染,所以删除MainActivity中setContentView();并且将继承关系改变。
6.1:加入Unity提供的一个jar包(jar包的本质就是一个class库),jar包的位置在安装目录下面的Editor\Data\PlaybackEngines\androidplayer\development\bin(根据自己的实际位置找),classes.jar。

6.2:使用非打包的形式加入jar包。(不要将classes.jar直接复制到libs下面去)
选择项目/preferences/Java BuildPath../Library/Add External Jars
6.3:删除不用的代码,改变继承关系.(一定要删除setContentView,因为他的界面是由Unity Scene提供)
7、增加方法(让其被Unity调用),这里我们就定义一个输出土司的一个方法,非常简单,Unity传递一个String类型的参数name,就可以输出土司Hello :name
8、再增加一个方法,能让他进行Activity的跳转。跳转之前我们讲一下Activity的创建。
8.1:我们先创建 一个类。

8.2:增加其继承关系,让他继承Activity 类并且重写其onCreate()方法。

8.3:定义完毕的Activity类只是普通的java类,我们要在AndroidManifest.xml进行配置,让其成为一个Activity
注意是在Application节点下面配置
8.4到此Activity就配置完毕了,我们的Android程序就由2个Activity组成,第一个Activity的界面由Unity Scene到时候提供
第二个Activity是默认界面,下面我们修改SecondActivity的界面
8.5:设置界面调用setConetentView();

8.6:修改一下这个界面,android中的界面其实就是xml文件,通过树状结构管理View的层次
可以在视图模式下拖拽组件,但是不是很好用 。
8.7到这里我们SecondActivity的定义,配置,布局已经设置完毕。接下来我们在MainActivity中定义一个方法,用来在Unity调用,进行跳转
9.MainActivity定义一个方法,跳转到SecondActivity,很简单,就一个跳转
10、到此android的接口定义完毕,在打包之前,还需要干一些事情,这些事情如果不做,打包的东西有可能无法被调用
10.0:修改项目Make is Libray
10.1:在Project菜单下 取消Bulild Autocomplie(自动编译)
10.2 :clean一下项目
10.3: Build Project一下项目
11.打包我们Android项目,按道理来说,打包的东西只需要class就可以,但是我们的项目中除了自己的class还有自动生成的
gen目录下面的东西,还有其他资源,为了不遗漏,干脆全部打包。res AndroidManifest.xml也被打包,这些只不过是垃圾而已。

12.到此Android的接口已经定义完毕。接下讲来如何在Unity中调用
1、创建Unity的应用
2、在Assets下面定义Plugins\Android文件夹
3、在Android下面定义bin 将11步产生的jar包加入bin,并且把项目中的res,assets,libs ,AndroisManifest.xml复制到Android目录下,这些都是Android的资源。
4、复制完毕后
最后的目录结构
5、稍微修改一下AndroidManifest.xml
5.1打开安装路径下Editor\Data\PlaybackEngines\androidplayer\AndroidManifest.xml,
把里面红色部分复制到我们程序的AndroidManifest.xml中,copy完毕后
6.Unity中编写代码调用MainActivity中的函数
7、编译成apk
注意buildsetting设置一下
8、好了,我们把编译好的程序运行一下
java程序员图文并茂细说Unity中调用Android的接口的更多相关文章
- java程序员--小心你代码中的内存泄漏
当你从c&c++转到一门具有垃圾回收功能的语言时,程序员的工作就会变得更加容易,因为你用完对象,他们会被自动回收,但是,java程序员真的不需要考虑内存泄露吗? 其实不然 1.举个例子-看你能 ...
- Unity 中调用Android的JAVA代码
首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...
- Java程序员如何在竞争中保持优势
Java程序员入门容易,进阶很难,想要在竞争中保持优势,脚踏实地的同时也要仰望星空规划自己的未来.时间在流逝,年龄在增加,你期望的薪水也在不断增多,你总得让自己能力持续增加以配得上想要的收入吧. 从初 ...
- 2017年 Java 程序员,风光背后的危机
不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨 ...
- 【Python】Java程序员学习Python(二)— 开发环境搭建
巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?
前言 对一个 Java 程序员而言,并发编程能否熟练掌握是判断他是不是优秀的重要标准之一.因为并发编程在 Java 语言中最为晦涩的知识点,它涉及内存.CPU.操作系统.编程语言等多方面的基础能力,更 ...
- 《Java程序员面试笔试宝典》终于在万众期待中出版啦~
<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理 ...
- 一个10年Java程序员的年终总结,献给还在迷茫中的你
我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打将近10年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作 ...
随机推荐
- OpenGL学习进程(5)第三课:视口与裁剪区域
本节是OpenGL学习的第三个课时,下面介绍如何运用显示窗体的视口和裁剪区域: (1)知识点引入: 1)问题现象: 当在窗体中绘制图形后,拉伸窗体图形形状会发生变化: #include ...
- PHPExcel常用属性使用
PHPExcel常用属性使用 前景: 需先实例化几个变量: $this->objExcel = new PHPExcel(); //实例化一个PHPExcel变量 $this->objE ...
- Docker容器技术-镜像分发
一.镜像分发 1.镜像及镜像库的命名方式 指定镜像名称和标签的方法: 在狗偶见镜像时 通过docker tag命令 [root@bogon ~]# cd identidock/ [root@bogon ...
- LVS/DR 配置
LVS/DR 配置 实验环境 三台主机:Linux Centos 6.4 32位 调度器Director:192.168.1.160(公网IP).192.168.1.100(VIP) HTTP真实服务 ...
- 20165101刘天野 2017-2018-2 《Java程序设计》第8周学习总结
#20165101刘天野 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章Java多线程机制 一.进程与线程 1.1.任务调动 大部分操作系统(如Wi ...
- QT应用程序设置图标
一.纯Qt 1.下载图标:app.ico 2.新建记事本,输入:IDI_ICON1 ICON DISCARDABLE"app.ico":改变名字为jude.rc 3.将两个文件放在 ...
- k-近邻算法 标签分类
k-近邻算法根据特征比较,然后提取样本集中特征最相似数据(最邻近)的分类标签.那么,如何进行比较呢? 怎么判断红色圆点标记的电影所属的类别呢? 如下图所示. 答:距离度量.这个电影分类的例子有2个特征 ...
- c++ boost库学习三:实用工具
noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c= ...
- <转>xshell的快捷键
xshell中现有的快捷键 快捷方式键 说明 Alt + N 与文件菜单的新建相同 Alt + O 与文件菜单的打开相同 Alt + C 与文件菜单的断开相同 Alt + Enter 切换到全屏模式 ...
- java中@Qualifier("string")是什么用法
@Qualifier("XXX") Spring的Bean注入配置注解,该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的bean,这样就消除了byTy ...