unity-与Android交互(unity5、android studio)
来源:互联网 发布:莱州广电网络 编辑:程序博客网 时间:2024/04/30 07:48
- 使用的是工具是 unity5.4,Android Studio 2.0(后面简称 AS)
- 网上找到的教程大部分都是导出jar给unity调用,极少是用AS导出 aar 包给unity调用
- 用AS导出jar需要修改一下 build.gradle 文件,但这里主要是说导出 aar包
- 实现unity掉java里面的代码有两种方式
- 第一种方式,自己写个java类,jni需要的 中转站cpp、 Android.mk、Application.mk,然后用ndk打成so库(无疑巨麻烦,官网例子直接可以下,传送门
http://docs.unity3d.com/Manual/PluginsForAndroid.html)- 第二种方式,直接使用unity分装好的类 AndroidJavaClass 等,无需自己打so库(巨方便,本文将的就是这种)
因为现在eclipse已经停止维护了,官方推荐是用AS来构建Android app,然后导出 aar 包给unity使用
可以用cocos2dx的方式去理解,也是用一个 MainActivity 去继承 unity封装好的 UnityPlayerActivity ,当前应用就是的主线程就是跑在MainActivity 中
1、使用AS构建一个app工程
- File->New->New Project
- 包名 Package Name 一定要和unity中打包参数 Bundle Identifier 中的包名一致,这里用 com.test.yangx
- 设置 mini sdk,
- 选个 Empty Activity
- 默认的 MainActivity即可,然后 Finish
2、导入unity的jar到AS工程中
在unity5中,在
D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes 的路径下有个 classes.jar
把这个 classes.jar 丢进AS工程的 libs 中工程引用这个 classes.jar,
- 右键 工程-> Open Module Settings
3、编写 MainActivity 代码
完整代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
4、修改 AndroidManifest.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
5、修改 build.gradle
apply plugin: 'com.android.application'
修改为apply plugin: 'com.android.library'
这样才能导出一个 aar 包删除掉这句代码
applicationId "com.test.yangx"
完整代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
6、生产 aar 包
Build->Build APK
成功会在 app\build\outputs\aar 目录下出现一个 app-debug.aar 包
然后用 解压软件打开这个包,删掉 libs 下的 classes.jar (没错,就是之前重unity中拷过来的)
因为unity打包时会重新把自带的 classes.jar 打进去,如果不删掉它会打包报错,冲突
然后这就是最终需要的 aar 包
然后把这个 aar包 和 AndroidManifest.xml 文件 丢进unity的 Assets\Plugins\Android 目录下
7、写个c# 测试
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
8、打包apk
修改测试参数
要和AS工程中的 Package Name 一致
mini sdk 一致
9、done
装在模拟器上测试以下
10、遇到的小坑
unity导出apk
File->Build Run
当导出apk时,可能遇到下面的问题:Unable to find unity activity in manifest. You need to make sure orientation attribute is set to fullSensor manually.
需在AndroidManifest中增加一行:
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
删除AndroidManifest.xml 中app的主题,否则unity打包apk是关联的主题会报找不到错误,应该是有些库没打进去(有待研究)
删除生产的arr文件里的libs下的classes.jar,这个是之前从u3d中拷过去的,打包时会重新打进去,所以要删除,不删除打包会报错
- unity-与Android交互(unity5、android studio)
- unity-与Android交互(unity5、android studio)
- unity3d-与Android交互(unity5、android studio)
- Unity 与 Android (Android Studio)的交互
- Unity 与 Android (Android Studio)的交互
- Unity5.0与Android交互
- Unity 和 Android 交互实践与总结(Unity5.6 和 Eclipse 及 AndroidStudio2.3.1)
- Unity 与 Android (Android Studio)的交互问题研究 (一)
- unity与android交互
- Unity与Android交互
- Unity与Android交互
- Unity与Android交互
- Unity与Android交互
- unity与ANDroid交互
- unity与android交互
- unity与android交互
- Unity与Android交互
- Unity 与 Android交互
- 计算机网络基础知识整理
- assert的用法
- Tomcat端口被占用问题的解决
- Python 内建异常描述
- IOS applicationWillResignActive
- unity-与Android交互(unity5、android studio)
- shell(2) 数值运算
- 周志华<机器学习>+斯坦福机器学习视频
- 比较全的正则表达式
- 报表导出
- 微服务框架Finagle介绍 Part2: 在Finagle中开发基于Http协议的应用
- E: Sub-process /usr/bin/dpkg returned an error code (1)解决方法
- 【BZOJ 4734】【UOJ 269】【清华集训2016】 如何优雅地求和
- struts2的action从request获取参数值的两种方式