Unity与Android——AS打aar包供Unity调用

AndroidStudio部分

1.新建Android工程,与Unity项目包名一致(com.xx.xxx)
2.在Unity安装路径Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes.jar,找到Classes.jar并拷贝到安卓工程libs文件夹下。
添加依赖:在bulid.gradle里,加一句implementation files(‘libs/classes.jar’)
旧版本AS为compile files.
Unity与Android——AS打aar包供Unity调用_第1张图片
3.在Activity里写自定义方法(Unity要调用的),比如出现一个Dialog

public String ShowDialog(final String _title, final String _content){

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle(_title).setMessage(_content).setPositiveButton("Down", null);
                builder.show();
            }
        });

        return "Java return";
    }

4.更改AndroidManifest.xml
加一行


5.(build.gradle里)apply plugin: ‘com.android.application’ 修改为 apply plugin: ‘com.android.library’
(build.gradle里)删除applicationId 那句
6.Build——BuildAPK
Build完成在app\build\outputs\aar路径下生成了app-debug.aar包
更改aar包后缀名为zip,打开包,删除libs文件夹下的classes.jar,删除res文件夹


Unity部分

1.写一个测试脚本挂到Camera上

public class CallMethod : MonoBehaviour
{

    public void MyShowDialog()
    {
        // Android的Java接口 
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic("currentActivity");
        // 参数 
        string[] strs = new string[2];
        strs[0] = "Jar4Android  nbnb";
        strs[1] = "Wow,Amazing!It's worked!";
        // 调用方法 
        string ret = jo.Call("ShowDialog", strs);      
    }
}

2.在场景中制作一个Button,将Click事件绑定为CallMethod的MyShowDialog方法。
3.打包Apk,PackageName和AS项目一致,MiniSDK与AS一致,之后测试即可。


遇到的坑

1.打包一直报错aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I”这样的
解决:删除aar包里的res文件夹
2.报错AndroidManifest.xml:3: error: Error: No resource found that matches the given name (at ‘icon’ with value’@mipmap/ic_launcher’).
AndroidManifest.xml:3: error: Error: No resource found that matches the given name (at ‘icon’ with value’@mipmap/ic_launcher_round’).
解决:在AndroidManifest.xml里删除报错里提到的资源相关几行。

你可能感兴趣的:(Unity与Android)