Android打包AAR及与unity通信方法

  • 一、新建项目工程
  • 二、编写桥接通信方法
  • 三、打AAR包,放到unity的Android文件夹下
  • 四、修改unity包名,打出apk


一、新建项目工程

1、新建project

unity3d IOS打包 unity打包aab_unity3d IOS打包

2、新建一个Module,选择Library

unity3d IOS打包 unity打包aab_android_02


unity3d IOS打包 unity打包aab_android_03

新建后的AS如图:

unity3d IOS打包 unity打包aab_android studio_04

3、复制unity的jar包 classes.jar,具体路径:(如:D:\Unity2019.2.12\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes),打开Project模式,选择新建的Module,粘贴到其下的Libs文件,选择导入的classes右击,选择Add As Library,把untiy jar包加入到工程中。

unity3d IOS打包 unity打包aab_安卓_05


unity3d IOS打包 unity打包aab_unity3d IOS打包_06


unity3d IOS打包 unity打包aab_android_07


unity3d IOS打包 unity打包aab_unity3d IOS打包_08

如下图,则导入成功

unity3d IOS打包 unity打包aab_android studio_09

4、在此文件夹下新建一个Java类,用于与unity通信:

unity3d IOS打包 unity打包aab_android studio_10


unity3d IOS打包 unity打包aab_安卓_11

Unity相关代码:

unity3d IOS打包 unity打包aab_android_12

5、修改module下的build.gradle,先从app下的build.gradle,复制一份,然后按照图下修改四处位置:
引入jar包:implementation files(‘libs/classes.jar’)

unity3d IOS打包 unity打包aab_安卓_13

二、编写桥接通信方法

1、unity调用安卓方法

在android的MainActivity里继承UnityPlayerActivity类,创建一个方法test1

unity3d IOS打包 unity打包aab_安卓_14

在unity里获取当前Activity的对象,调用test1,实现unity调用android方法

unity3d IOS打包 unity打包aab_android_15

2、安卓调用unity方法

在unity里创建方法Test2

unity3d IOS打包 unity打包aab_安卓_16

在Android的MainActivity里调用unity方法Test2
UnityPlayer.UnitySendMessage(“游戏体名”,“要调用的游戏体下的脚本名”,参数);

unity3d IOS打包 unity打包aab_android studio_17

三、打AAR包,放到unity的Android文件夹下

1、打包AAR及检查操作

  1. 打包出AAR;
  2. 复制到unity项目的Android文件夹下(如:E:\TestProject\Assets\Plugins\Android);
  3. 删除AAR的libs下的jar包(不要解压,进去直接删);
  4. 检查AAR中是否有styles.xml(主题) 、drawable(app图标)等文件,没有则自己拖入AAR的res文件夹下。

unity3d IOS打包 unity打包aab_android studio_18


unity3d IOS打包 unity打包aab_安卓_19


unity3d IOS打包 unity打包aab_安卓_20

unity3d IOS打包 unity打包aab_unity_21

unity3d IOS打包 unity打包aab_unity3d IOS打包_22


unity3d IOS打包 unity打包aab_unity_23

2、修改unity的清单文件中的包名和安卓调用的包名

unity3d IOS打包 unity打包aab_android_24

四、修改unity包名,打出apk

1、Debug包(默认签名,测试包)
2、release包(自定义创建签名,正式包)