之前有SDK接入方面的需求,涉及到一些Unity与Android和iOS原生交互,虽然关于这方面的教程网上有不少,但第一次接触还是遇到不少问题,这里有很多坑与编程无关,很大一部分是配置不当造成的。在此记录下来,做个备忘,也方便后来人学习。
第一步:环境搭建
下面是你需要用到的一些工具:
1.AndroidSDK
2.JDK
3.eclipse
上面的AndroidSDK,与eclipse直接解压即可,JDK直接下一步安装,这里需要注意的是JDK与elipse,要么都是32位,要么都是64位,本文使用的均为64位 (JDK装完以后可以在cmd中输入java -version来查看版本信息)
当JDK装完以后,打开eclipse,我们需要安装ADT插件,否则你是不同创建Android工程的,打开 Help -> Install New Software 如图:
Name: ADT (你也可以叫别的,随意)
Location: http://dl-ssl.google.com/android/eclipse/ (此处需要翻墙,请自挂VPN)
全选,Next,然后等安装完毕。安装完成之后会提示你重启eclipse,重启之后会提示你填写AndroidSDK路径,如下图
点击 Open Preferences , 如果你没有上面这一步,你也可以从Windows -> Preferences 中打开面板,并在左侧选中Android选项,如图
第二步:创建JAR文件(供Unity使用)
以后设置完毕之后,你就可以创建Android工程了,File -> New -> Project -> Android -> Android Application Project
我们在MainActivity.java中注掉一些我们不需要的代码,并新加一个函数
你发现代码报红了,原因是我们要继承的UnityPlayerActivity,和要使用的UnityPlayer都来自Unity的Jar包(classes.jar文件),它存放在:
D:\Program Files\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
(把D:\Program Files\Unity5.3.6,换成你的安装目录)
然后把classes.jar拖入eclipse工程的libs目录下(如果没有可以的动新建一个)
经过上一步,你会发现报红没有了,接着我们就要导出jar包了 File -> Export -> Jar file
此处一定要选第二项,否则unity打包APK的时候可能会报错,如果这么做,Unity还会报错的话可以,鼠标选中bin,右键Show In -> System Explorer 然后进入bin\classes\com\example\jartest 文件夹下,把除了MainActivity.class文件以外的所有文件都删了,再生成jar包。(此处重中之重,困扰了我很久,)
第三步:设置与编写Unity代码
Unity项目中新建Plugins->Android,将Android工程的AndroidManifest拖进去,然后新建bin,把生成的jartest.jar拖入,把res和libs从Android工程中拖入(在Unity中的libs中删除classes.jar文件,重中之重!)
这里说明一下Android工程中的UnityPlayer.UnitySendMessage("Main Camera", "AndoridCallBack", "hello world [Android]");
第一个参数,是Unity中绑定的GameObject,第二个是函数的名称,第三个是自定义参数,这个API是Android访问Unity用的。
第四步:生成APK与真机调试
这里的关键是Unity的BundleId要与Android工程的一致
最后我们用adb工具来联机调试查看输出
至此,Unity与Andorid的交互终于完成了。但是还有一些问题,比如AndroidManifest是做什么用的,具体怎么配置,如果有多个jar包,Unity又该怎么调用。BundleId填谁的,下一篇文章会详细介绍!