首先两边建立工程,包名 统一为com.chengdu.sichuan
1、AS建立工程
选择新建安卓工程
![](https://img.haomeiwen.com/i8692097/534ea878e99dd59e.png)
选择空活动窗口
![](https://img.haomeiwen.com/i8692097/f764591938c6aadd.png)
命名包名
注意语言以及最低sdk版本,别忘了工程的位置
![](https://img.haomeiwen.com/i8692097/e7aa1899ce428301.png)
Finish 等待 CONFIGURE SUCCESSFUL 配置完成
在unity的安装目录
![](https://img.haomeiwen.com/i8692097/3bad9fd5d1ed0698.png)
ctrl +c 拷贝这个class.jar
![](https://img.haomeiwen.com/i8692097/a79389cca1f2538d.png)
在Project视图下选择libs文件夹 Ctrl +v粘贴
![](https://img.haomeiwen.com/i8692097/08b23b760cabc1c0.png)
确认
![](https://img.haomeiwen.com/i8692097/4d1c50b51bd117d4.png)
然后右键添加到Library 确认。
![](https://img.haomeiwen.com/i8692097/8c93400d5da849c0.png)
在MainActivity中 注释不需要的内容,以及使用unity的窗口
![](https://img.haomeiwen.com/i8692097/c971df717e66967c.png)
在这里 新建一个方法,供unity来调用显示Toast
public void ShowToast(final String msg){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show();
}
});
}
爆红的话 ,使用Alt+Enter 来import Class
修改AndroidManifest.xml
![](https://img.haomeiwen.com/i8692097/c599dd241360d6a9.png)
箭头指的都是一些unity用不到的资源 带@的都可以删除,然后在activity下添加
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
最终如下
![](https://img.haomeiwen.com/i8692097/5abde720d69e8b57.png)
相应的,需要删除这些用不到的资源,按Delete删除
![](https://img.haomeiwen.com/i8692097/bbc1755fca44e6da.png)
valus目录下内容也都是用不到的,删掉内容
![](https://img.haomeiwen.com/i8692097/34381390df3414d4.png)
![](https://img.haomeiwen.com/i8692097/8868389e12e97d9a.png)
修改build.gradle文件
![](https://img.haomeiwen.com/i8692097/0abf9e55927054a6.png)
把 apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library',
注释掉用不到的内容,并把之前导入的class.jar修改为,只编译,这样在导出的aar包中就不需要删除lib了
![](https://img.haomeiwen.com/i8692097/21c158155432e529.png)
sync一下
点击导出
![](https://img.haomeiwen.com/i8692097/1297e532eb5b0ce8.png)
在工程的导出目录找到aar文件
![](https://img.haomeiwen.com/i8692097/a1eefdb6d32365c2.png)
找到AndroidManifest.xml文件
![](https://img.haomeiwen.com/i8692097/5fd4f0f0238721a4.png)
待用
新建unity 安卓工程,包名保持一致
![](https://img.haomeiwen.com/i8692097/d88618cc4ea2a859.png)
按图中样式创建目录
![](https://img.haomeiwen.com/i8692097/bcd7cf74d566bb9e.png)
将aar与xml文件都放入Android目录
推荐使用bandzip 打开aar
![](https://img.haomeiwen.com/i8692097/1ad5d3ccdd6c2e03.png)
删除这个BuildConfig.class,unity已经有这个,不删除 导出会提示duplicate_class,重复
编写脚本,挂载到任意物体
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
void Start()
{
CallAndroid.CallAn();
}
}
public class CallAndroid
{
public static void CallAn()
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
currentActivity.Call("ShowToast", "四川成都欢迎你");
}
}
基本的调用就是这样,网上还有很多调用静态方法,带返回值等等案例,这里不再赘述,只是把最新的导出aar方法分享出来
![](https://img.haomeiwen.com/i8692097/d58825741feeef18.png)
安卓10 手机上测试正常
网友评论