Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

打开Eclipse创建一个项目AndroinPlugins并标记为library项目

Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

创建包名com.android.plugins

创建一个自定义类TestPlugins

定义一个无返回值,没有参数的方法HelloWorld:

public void HelloWorld(){
Log.w("TestPlugins", "HelloWorld!");

}

定义一个返回String类型,没有参数的方法GetHelloWorld:

public String GetHelloWorld(){
return "HelloWorld!";

}

Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

导出jar包:

选中src文件夹右键弹出菜单,点击Export选项打开导出框

Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

打开java选项,选中JAR file,进行下一步

Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

选中需要导出的java文件,自定义导出路径与文件名,后缀为.jar

Eclipse导出包含自定义类的Jar包供Unity3D调用学习笔记一

点击Finish完成导出工作

打开Unity3D项目,将上面导出的jar包拷贝到Assets/Plugins/Android文件夹下,没有对应的文件夹则创建新的

新建一个C#脚本TestAndroidPlugin.cs

打开解决方案

实例化安卓自定义类对象,并调用其中的方法

using UnityEngine;
using System.Collections;

public class TestAndroidPlugin : MonoBehaviour {

    // Use this for initialization
    void Start () {

        //用AndroidJavaObject类来实例化安卓自定义类对象,参数为带包名的完整java类名
        AndroidJavaObject TestPlugins = new AndroidJavaObject("com.android.plugins.TestPlugins");

        //调用无返回值,无参数的方法,参数为方法名字符串
        TestPlugins.Call("HelloWorld");

        //调用带返回值,无参数的方法,参数为方法名字符串
        string helloworld = TestPlugins.Call<string>("GetHelloWorld");

        Debug.LogFormat(helloworld);
    }
    
    // Update is called once per frame
    void Update () {

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Application.Quit();
        }
    }
}

打包发布到Android平台测试,查看运行日志