安卓原生作为aar库的形式与Unity交互


一、前言

此处介绍的是将安卓工程作为一个aar库交给Unity调用,并实现安卓与Unity的交互。
开发环境:Unity2021.3.13;
Android Studio;
Android Gradle Plugin Version8.1.2;
Gradle Version 8.0;
Android SDK 33


二、Android Studio

1. 创建安卓工程

请添加图片描述

2. 导入Unity/Classes.jar

Unity的Classes.jar文件的位置是D:\Unity\2021.3.13f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar

3. 创建Module

请添加图片描述
将步骤2的Classes.jar复制到新建的Module下libs文件夹下,并执行“Add as Library”

请添加图片描述

4. 交互接口实现

请添加图片描述
在main下的主包下创建与Unity交互的类,里面的方法全部为静态方法。
注意:UnityPlayer.UnitySendMessage(“AndroidMessageManager”,“ReceiveAndroidMsg”,msg)方法中
AndroidMessageManager是Unity中用来接收的对象名称,ReceiveAndroidMsg是该对象身上挂载脚本中的接收消息的方法,msg的消息字符串。

public class UnityMessageLib
{
    
    
    //接收来自Unity的消息
    public static void  ReceiveUnityMsg(String msg)
    {
    
    
        SendToUnity("Android成功接收来自Unity的消息:"+msg);
    }


    //向Unity发送消息
    public static void  SendToUnity(String msg){
    
    

        UnityPlayer.UnitySendMessage("AndroidMessageManager","ReceiveAndroidMsg",msg);
    }
}
5. 编译Module,导出aar库

请添加图片描述

请添加图片描述

6. 删除aar库中多余的文件(此步骤很重要,如果不删除再Unity中会出现多余引用)

使用解压缩工具打开这个aar包,将第一层目录下的AndroidMainfest.xml删掉,再将libs/classes.jar删掉,然后保存。
请添加图片描述
请添加图片描述

二、Unity

1.导入安卓aar库

请添加图片描述
将上一步产生的aar包导入到UnityAssets/Plugins/Android/目录下,注意文件夹名称不能拼错

2.交互接口实现

在这里插入图片描述
在这里插入图片描述

在场景中创建空对象“AndroidMessageManager”,并且此对象身上挂载的脚本必须有“ReceiveAndroidMsg”方法,名称与一(4)步骤中对应。
通过点击按钮触发“SendToAndroid”来向安卓发送消息,安卓端收到消息后立刻通过“ReceiveAndroidMsg”方法告知Unity自己收到。

3.打包APK

①Player/Other Setting/Configuration-Scripting Backend选项必须与一(2)步骤中的classes.jar的上层目录类型相同。即:在Mono目录下复制的classes.jar那此处选项也必须是Mono;
②注意一下版本号

请添加图片描述
运行成功!!


三、报错处理

1.R8报错

在这里插入图片描述
解决方法:①打开PlayerSetting/Player/Publishing Setting中的“Custem Base Gradle Template”勾选上
在这里插入图片描述
②接下来会在Plugins/Android/目录下生成一个“baseProjectTemplate.Gradle”文件,双击打开这个文件,将下图中圈红的部分改成“3.4.0”
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43559607/article/details/133740582