Unity3d调用android studio生成的aar包

一天了,从早上九点到晚上凌晨2两点一直在鼓捣这个玩意。死活就是弄不好,现在终于成功了,但还不能睡觉,抓紧把这次成功的过程记录下来。

首先,android studio 和 Unity的版本

这个真的可能会有很大的影响。起码我一开始死活弄不对,两个全部重新安装了版本之后才鼓捣了半天成功的。

以及android studio 版本是 3.0.1

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以一个简单的函数为例,在android studio中使用java实现一个返回 a+b 的函数 (siki学院bathur老师所讲的例子)

首先在Android studio中新建一个project

我的配置如下

创建一个Empty Activity,进入工程后等待一会。

我们要用的是生成的library而不是activity,故进入后,按照如下方法创建一个module

名字设置为 “AndroidAdd”

自动配置完成后,首先添加一个activity作为MainActivity。

再一次,我们用的是library而不需要界面,先把界面的配置layout下的文件删掉

然后修改MainActivity中继承的类,但首先要将Unity3d中的classes拷贝过来。(拷贝的时候切换到project视图)

然后将其添加为库

然后就可以对MainActivity文件进行如下编写了

package com.zju.ichigo.androidadd;

import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }
    public int minus(int a,int b){
        return a-b;
    }
}

为了使其能够在unity3d中使用,还需要配置Menifest文件,即AndroidManifest.xml(切换回android视图,找到它),进行如下编写

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zju.ichigo.androidadd">

    <application
        android:allowBackup="true"
        android:label="UnityAndroidAdd"
        android:supportsRtl="true">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>

</manifest>

这就差不多了,可以创建了,点击build module,成功后就可以在project视图下找到输出的aar文件。

以及我们还需要manifest文件,在这里找到他

把这两个分别拷贝到一个文件夹中,还要进行一定的处理才可以交给unity3d使用。

要对其进行的处理,首先修改这个manifest文件

把这里的报名修改成你想要的app的名字,必须修改,否则和aar包里的library报名冲突在生成apk的时候会报错。

然后使用解压软件打开aar包裹,将位于外面的classes替换调libs中的classes文件。

然后再把这个aar包里面的AndroidManifest.xml文件拷贝出来进行修改。

只需要删除label那一句就可以了

到此为止就可以打开unity3d了,新建一个项目,将平台切换为android,Build system选项设置为gradle

然后点击player settings 进行签名,包名的设置。

注意。此处设置的报名必须和aar包外面的Manifest文件中的包名一样。

然后在Assets文件夹下创建Plugins文件夹,再在其下创建Android文件夹,将两个文件拷贝过来。效果如下所示

然后创建一个c#脚本,进行如下的简单编写,致于具体函数怎么调用可从网上搜到,很简单而且方法固定

(我其实在安卓那边编写的代码是minus即减法,不过包名还是add。。。忘记改了,)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class Test : MonoBehaviour {
    public Text text;
	// Use this for initialization
	void Start () {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        text.text = jo.Call<int>("minus", 55, 2).ToString();
    }
	
	
}

这样在Unity3d中创建一些UI组件,讲一个文本组件赋给这个公共的Text,然后将这个脚本挂载到一个游戏物体上。就可以输出函数调用的结果了。

最后进行build,导出apk到手机上,运行效果如下所示。

在折腾了整整一天后,真的感觉,这就是最美的画面了。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值